第五章 Internet協(xié)議 網(wǎng)絡(luò)層

有TCP厂抽、 UDP、 ICMP和IGMP數(shù)據(jù)都通過(guò)IP數(shù)據(jù)報(bào)傳輸贺辰。

Internte 是特指使用tcp/ip協(xié)議的網(wǎng)絡(luò)嵌施。而internet是泛指使用協(xié)議通訊的網(wǎng)絡(luò)。

ip

使用一種“我盡力送”吃靠,“送完我就不管”的方式進(jìn)行數(shù)據(jù)數(shù)據(jù)報(bào)的投遞足淆。
也就是巢块,不可靠的傳送,不保存狀態(tài)的傳送族奢。
有了數(shù)據(jù)我就封裝送出去丹鸿,至于數(shù)據(jù)報(bào)的先后達(dá)到順序,是否能夠到達(dá)不是ip負(fù)責(zé)的事情靠欢。
其上層也就是傳輸層負(fù)責(zé)可靠性之類(lèi)的。

ip數(shù)據(jù)報(bào)

IP數(shù)據(jù)報(bào)
IP數(shù)據(jù)報(bào)

至于為什么帶了兩個(gè)物理地址的頭部,還有一個(gè)IPv4類(lèi)型的值:0x0800
我就也不知道了掷空。

從0800后面開(kāi)始的是ip報(bào)的內(nèi)容。

  1. 版本號(hào) 4bit是有半位
    ipv4為4疼电,ipv6為6。
  2. IHL 4bit
    保存ipv4頭部的32位字(也就是4字節(jié)大小)的數(shù)量区丑。表示的值最大是15修陡,所以頭部最長(zhǎng)為60字節(jié)可霎。
    該值默認(rèn)為5。也就是20拾因。
    該字段控制了選項(xiàng)的最大大小:最長(zhǎng)為15*4=60b的頭部旷余,所以選項(xiàng)的最大長(zhǎng)度為40B
    也是記錄了有效荷載部分從哪里開(kāi)始
  3. Ds區(qū)分服務(wù)
    區(qū)分服務(wù)代碼點(diǎn)
    沒(méi)看懂
  4. ECN顯式擁塞通知
    路由如果有探測(cè)流量擁堵的能力。當(dāng)路由探測(cè)到當(dāng)前流量擁堵蠢熄,那么會(huì)將流經(jīng)的數(shù)據(jù)報(bào)的改字段設(shè)置為2
    表示我這里的流量太大了炉旷。
    當(dāng)目的主機(jī)收到該數(shù)據(jù)報(bào)的時(shí)候,檢測(cè)到ECN為2窘行,會(huì)通知發(fā)送方降低發(fā)送速度。
    這是避免和處理網(wǎng)絡(luò)擁塞的方法之一罐盔。
  5. 總長(zhǎng)度 16bit
    是IPv4數(shù)據(jù)報(bào)的總長(zhǎng)。所以這個(gè)長(zhǎng)度和IHL長(zhǎng)度的差壁熄,可以計(jì)算出數(shù)據(jù)部分的起始位置和長(zhǎng)度碳竟。
    因?yàn)殚L(zhǎng)為16bit(一個(gè)int大小)莹桅,所以可以攜帶65535字節(jié)數(shù)據(jù)。
    如果長(zhǎng)度太小懂拾,會(huì)被填充铐达。
    我的電腦上都被填充為66字節(jié)。還有54字節(jié)的瓮孙。
    雖然可以攜帶65535字節(jié)的數(shù)據(jù)选脊,但是數(shù)據(jù)鏈路層的MTU不允許脸甘。所以通常分組
    該字段指明了數(shù)據(jù)到哪里結(jié)束。
    ip數(shù)據(jù)報(bào)最小為48或46钝的,如果小于就被填充铆遭,是在以太網(wǎng)幀中被填充。
    但是ipv4有一個(gè)576字節(jié)的限制疚脐,也一個(gè)ipv4數(shù)據(jù)報(bào)總大小為576,如果選項(xiàng)最大為60B望薄,那么攜帶512B的有效荷載呼畸。
  6. 標(biāo)識(shí) 16bit
    主要是數(shù)據(jù)報(bào)分片以后,不會(huì)和別的分片混淆蛮原,依然能夠組裝。
    后面講
  7. TTL最大路由跳數(shù)(time to live) 8bit
    一個(gè)數(shù)據(jù)包可以經(jīng)過(guò)的路由器個(gè)數(shù)花嘶。上圖的是0x80蹦漠,也就是128個(gè)。
    當(dāng)該值為0時(shí)笛园,被丟棄。會(huì)返回一個(gè)icmp
    主要是為了防止路由環(huán)路的埋同。
  8. 協(xié)議 8bit
    數(shù)據(jù)報(bào)攜帶數(shù)據(jù)的類(lèi)型棵红。也就是TCP還UDP
    TCP為6
    udp為17
    ICMP為1
    現(xiàn)在主要用于識(shí)別其中封裝的協(xié)議是否為一種傳輸層協(xié)議。
    還有其他的類(lèi)型,其他的值楼熄。
  9. 頭部校驗(yàn)和 16bit
    ip不檢查數(shù)據(jù)報(bào)有效荷載(也就是攜帶數(shù)據(jù)的有效性浩峡。)
    只檢測(cè)頭部信息的正確性
    所以需要一種工具來(lái)檢測(cè)數(shù)據(jù)的正確性错敢。
    當(dāng)數(shù)據(jù)報(bào)經(jīng)過(guò)一臺(tái)路由器時(shí),TTL變稚茅,所以檢驗(yàn)和也要變。
    在接收到ipv4數(shù)據(jù)報(bào)時(shí)亚享,主機(jī)(或路由)從新計(jì)算一遍校驗(yàn)和,如果出錯(cuò)直接丟棄侈沪,并不會(huì)發(fā)送差錯(cuò)信息晚凿。
    高層需要實(shí)現(xiàn)重發(fā)亭罪。
  10. 兩個(gè)ip地址64bit
  11. ip選項(xiàng)歼秽。
    該程度可變,最長(zhǎng)320bit箩祥,40個(gè)字節(jié)肆氓。
    暫時(shí)沒(méi)遇到啊

以上就是ip的報(bào)頭了。

校驗(yàn)和

Internet校驗(yàn)和算法:
1.待校驗(yàn)的相鄰字節(jié)成對(duì)組成16比特整數(shù)并計(jì)算其和的二進(jìn)制反碼(二進(jìn)制反碼求和).
2.生成校驗(yàn)和,校驗(yàn)和區(qū)域本身應(yīng)當(dāng)先置0,并和待校驗(yàn)數(shù)據(jù)相加,其和進(jìn)行二進(jìn)制反碼運(yùn)算后賦給校驗(yàn)和區(qū)域.
3.檢查校驗(yàn)和,將所有字節(jié),包括校驗(yàn)和,進(jìn)行相加并求二進(jìn)制反碼.如果結(jié)果為全1(即二進(jìn)制反碼算術(shù)中的0),檢查通過(guò).

二進(jìn)制反碼求和:從低位到高位逐列進(jìn)行和計(jì)算,如果最高位(16位)進(jìn)位,則得到的結(jié)果加1,一直循環(huán)到最高位沒(méi)有進(jìn)位為止.最后把得到的結(jié)果取反.程序?qū)崿F(xiàn)如下:

short checksum(unsigned short *buf, int nwords)
{
  //一個(gè)大于16位的變量
    unsigned long sum;
  //低位開(kāi)始疊加盲泛,每次16bit
    for (sum = 0; nwords > 0; nwords--)
         sum += *buf++;
  //一個(gè)大于16位的值键耕,如果左移16位不是0,表明發(fā)生進(jìn)位
    while (sum >> 16)  
  //進(jìn)位的值都是1屈雄,然后再加上原來(lái)的sum,但是使用0xffff將高位清空村视,也就是進(jìn)位清空
  //只剩下低16位的值
         sum = (sum >> 16) + (sum & 0xffff);
    return ~sum;
}

ip轉(zhuǎn)發(fā)

如果目的主機(jī)和發(fā)送方位于同一子網(wǎng)中蚁孔,那么直接將數(shù)據(jù)幀扔該目的主機(jī)。(通常是最后階段了)
如果不是位于同一網(wǎng)絡(luò)中杠氢,那么扔給路由器,讓路由器處理绞旅。

ip層包括一些位移內(nèi)存中的信息成為路由表或轉(zhuǎn)發(fā)表温艇。每次轉(zhuǎn)發(fā)都需要從中查找信息。

路由和主機(jī)的區(qū)別

主機(jī)只會(huì)發(fā)送他生成的數(shù)據(jù)幀勺爱,如果接收到數(shù)據(jù)幀要不接受,要么直接丟棄卫旱,不會(huì)轉(zhuǎn)發(fā)绣否。
路由會(huì)轉(zhuǎn)發(fā)別的主機(jī)或路由發(fā)送來(lái)的數(shù)據(jù)幀。

設(shè)備接收到數(shù)據(jù)幀

當(dāng)設(shè)備接受到一個(gè)數(shù)據(jù)幀以后蒜撮,數(shù)據(jù)鏈路層模塊判斷:數(shù)據(jù)幀的目的地址(物理地址),如果是本設(shè)備地址或是廣播組播之類(lèi)的地址取逾,那么接受苹支,(否則直接丟棄)。交給ip模塊债蜜。
ip模塊在判斷,數(shù)據(jù)報(bào)中的目的ip地址是否是本機(jī)地址(或是廣播之類(lèi)地址)儒洛,如果是狼速,那么接受。
如果不是:

  1. 本機(jī)是一臺(tái)主機(jī)。
    直接丟棄數(shù)據(jù)報(bào)
  2. 本機(jī)是一臺(tái)路由器
    路由器會(huì)轉(zhuǎn)發(fā)該數(shù)據(jù)報(bào)惊完。

ip轉(zhuǎn)發(fā)

每個(gè)路由保存一個(gè)ip轉(zhuǎn)發(fā)表(也就是路由表)处硬。用于判斷數(shù)據(jù)報(bào)的下一跳。
表中每條包含:目的ip地址郁油,掩碼,下一跳ip,接口苟径。

當(dāng)路由進(jìn)行數(shù)據(jù)報(bào)轉(zhuǎn)發(fā)時(shí):
首先檢查數(shù)據(jù)報(bào)中的目的地址(ip地址),然后進(jìn)行最長(zhǎng)前綴匹配算法蟆盐。
將該ip與轉(zhuǎn)發(fā)表中的掩碼進(jìn)行與運(yùn)算遭殉,結(jié)果中1最多的那個(gè)那條表示匹配最好。
將其下一跳地址作為該數(shù)據(jù)報(bào)的目的地址(ip)险污。

如果沒(méi)有發(fā)現(xiàn)匹配條目,送到默認(rèn)路由拯腮。再不行返回主機(jī)不可達(dá)蚁飒。

ip數(shù)據(jù)報(bào)的主機(jī)處理

接受端 主機(jī)模式

  1. 強(qiáng)主機(jī)模式
    只有當(dāng)目的ip地址與數(shù)據(jù)報(bào)到達(dá)的借口配置的ip地址相同時(shí),才將數(shù)據(jù)包交付到本地協(xié)議棧
  2. 弱主機(jī)模式
    數(shù)據(jù)報(bào)的目的ip與主機(jī)的任意一個(gè)接口配置的ip地址相同時(shí)琼懊,就將數(shù)據(jù)報(bào)交付給本地協(xié)議棧

發(fā)送端

又是什么源地址選擇算法

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末爬早,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子凸椿,更是在濱河造成了極大的恐慌,老刑警劉巖髓抑,帶你破解...
    沈念sama閱讀 218,941評(píng)論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異褪猛,居然都是意外死亡羹饰,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,397評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門(mén)笑旺,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)馍资,“玉大人,你說(shuō)我怎么就攤上這事鸟蟹。” “怎么了藤韵?”我有些...
    開(kāi)封第一講書(shū)人閱讀 165,345評(píng)論 0 356
  • 文/不壞的土叔 我叫張陵熊经,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我悉盆,道長(zhǎng)馋吗,這世上最難降的妖魔是什么? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 58,851評(píng)論 1 295
  • 正文 為了忘掉前任宏粤,我火速辦了婚禮,結(jié)果婚禮上来农,老公的妹妹穿的比我還像新娘崇堰。我一直安慰自己涩咖,他們只是感情好繁莹,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,868評(píng)論 6 392
  • 文/花漫 我一把揭開(kāi)白布。 她就那樣靜靜地躺著闸昨,像睡著了一般薄风。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上遭赂,一...
    開(kāi)封第一講書(shū)人閱讀 51,688評(píng)論 1 305
  • 那天,我揣著相機(jī)與錄音打洼,去河邊找鬼逆粹。 笑死炫惩,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的他嚷。 我是一名探鬼主播,決...
    沈念sama閱讀 40,414評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼卸耘,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼粘咖!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起瓮下,我...
    開(kāi)封第一講書(shū)人閱讀 39,319評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤讽坏,失蹤者是張志新(化名)和其女友劉穎,沒(méi)想到半個(gè)月后路呜,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體织咧,經(jīng)...
    沈念sama閱讀 45,775評(píng)論 1 315
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡笙蒙,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,945評(píng)論 3 336
  • 正文 我和宋清朗相戀三年膛堤,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片肥荔。...
    茶點(diǎn)故事閱讀 40,096評(píng)論 1 350
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡燕耿,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出誉帅,到底是詐尸還是另有隱情,我是刑警寧澤蚜锨,帶...
    沈念sama閱讀 35,789評(píng)論 5 346
  • 正文 年R本政府宣布亚再,位于F島的核電站郭膛,受9級(jí)特大地震影響氛悬,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜棍现,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,437評(píng)論 3 331
  • 文/蒙蒙 一镜遣、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧烈涮,春花似錦、人聲如沸戈稿。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 31,993評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)般甲。三九已至,卻和暖如春敷存,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背锚烦。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 33,107評(píng)論 1 271
  • 我被黑心中介騙來(lái)泰國(guó)打工涮俄, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人彻亲。 一個(gè)月前我還...
    沈念sama閱讀 48,308評(píng)論 3 372
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像畸肆,于是被迫代替她去往敵國(guó)和親宙址。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,037評(píng)論 2 355

推薦閱讀更多精彩內(nèi)容