- ICMP協(xié)議
網(wǎng)絡(luò)層設(shè)備在轉(zhuǎn)發(fā)分組過程中,可能會有一些錯誤,有時候需要將這些信息反饋給其他設(shè)備,發(fā)送這些信息遵循ICMP協(xié)議(互聯(lián)網(wǎng)控制協(xié)議),ICMP協(xié)議在一定程度上可以看作是IP協(xié)議的伴隨協(xié)議。
2.IP數(shù)據(jù)報的格式

IP數(shù)據(jù)報的格式
- 版本號:4 bit,如4表示ipv4,6表示ipv6
- 首部長度:4 bit,單位是4B(一行),也就是首部最多15行,60B
- 服務(wù)類型:指示期望獲得哪種類型的服務(wù),比如期望該IP數(shù)據(jù)報優(yōu)先轉(zhuǎn)發(fā)、延后轉(zhuǎn)發(fā)等。1998年,這個字段改名叫“區(qū)分服務(wù)”,只有當(dāng)網(wǎng)絡(luò)提供區(qū)分服務(wù)時才有用,目前ipv4下的大多數(shù)網(wǎng)絡(luò)并不提供此服務(wù)。
- 總長度:整個IP數(shù)據(jù)報的長度,最大值是65535,單位是B。除去典型的頭部長度20B,因此一個IP數(shù)據(jù)報的數(shù)據(jù)部分最大是65515B
- 標(biāo)識、標(biāo)志位、片偏移是用來分片的,后面介紹
- 生存時間:IP分組在網(wǎng)絡(luò)中可以通過的路由器數(shù)(跳步數(shù))。一個IP分組在創(chuàng)建的時候就設(shè)置了一個TTL。路由器在轉(zhuǎn)發(fā)IP分組時,需要修改該值,將它-1。當(dāng)路由器將該值-1后等于0,路由器就把這個分組扔掉。同時向源主機(jī)發(fā)送一個
ICMP報文。 - 協(xié)議:IP分組封裝的是哪個協(xié)議的數(shù)據(jù),如TCP/UDP/SMP
- 首部校驗和:只對首部進(jìn)行校驗,和UDP的校驗和是同一種方法生成的。檢驗時這個校驗和參與運(yùn)算,重新生成校驗和,如果得到的值全是1,表示未發(fā)生錯誤。因為TTL每次轉(zhuǎn)發(fā)都會被修改,所以校驗和每次轉(zhuǎn)發(fā)也應(yīng)該修改。
3.IP數(shù)據(jù)包分片
鏈路層封裝的數(shù)據(jù)幀大小是有上限的,允許的最大傳輸單元稱MTU。不同鏈路的MTU不同。當(dāng)IP數(shù)據(jù)包大小超限時,就需要一分為多,這就是分片。
從鏈路1到鏈路2,假如MTU降低的話,很可能就要分片,分片后中間結(jié)點就不再組裝,以免后面又要再次分。最終由目的主機(jī)完成組裝。
- 標(biāo)識:16 bit,標(biāo)識一個分組。分片繼承原分組的標(biāo)識號
- 標(biāo)志位:3 bit
- 片偏移:13 bit,一個ip分組分片,來描述相對原分組的偏移量。也就是當(dāng)前分片的第一個首字節(jié)是在原分組中的位置,但是因為只有13 bit,因此單位是8字節(jié)。

標(biāo)志位
分片過程:

分片過程

分片過程

分片過程