前言: IP 數(shù)據(jù)報(bào)文由首部(稱為報(bào)頭)和數(shù)據(jù)兩部分組成;首部的前一部分是固定長(zhǎng)度,共 20 字節(jié),是所有 IP 數(shù)據(jù)報(bào)必須具有的;在首部的固定部分的后面是一些可選字段,其長(zhǎng)度是可變的
每個(gè) IP 數(shù)據(jù)報(bào)都以一個(gè) IP 報(bào)頭開始;源計(jì)算機(jī)構(gòu)造這個(gè) IP 報(bào)頭,而目的計(jì)算機(jī)利用 IP 報(bào)頭中封裝的信息處理數(shù)據(jù);IP 報(bào)頭中包含大量的信息,如源 IP 地址、目的 IP 地址、數(shù)據(jù)報(bào)長(zhǎng)度、IP 版本號(hào)等;每個(gè)信息都被稱為一個(gè)字段
如圖所示:
版本號(hào)
占 4 位
指定 IP 協(xié)議的版本;通信雙方使用的 IP 協(xié)議版本必須一致;目前使用最廣泛的IP協(xié)議版本號(hào)為 4,即 IPv4
首部長(zhǎng)度
占 4 位
可表示的最大十進(jìn)制數(shù)值是 15,IP 首部長(zhǎng)度的單位是 32 位字長(zhǎng) (1 個(gè) 32 位字長(zhǎng)是 4 字節(jié),也就是 length * 4 的字節(jié)數(shù),4bit 表示最大的數(shù)字是15),因此,當(dāng) IP 的首部長(zhǎng)度為 1111 時(shí) (即十進(jìn)制的 15),首部長(zhǎng)度就達(dá)到最大長(zhǎng)度 60 字節(jié),當(dāng) IP 分組的首部長(zhǎng)度不是 4 字節(jié)的整數(shù)倍時(shí),必須利用最后的填充字段加以填充
數(shù)據(jù)部分永遠(yuǎn)在 4 字節(jié)的整數(shù)倍開始,這樣在實(shí)現(xiàn) IP 協(xié)議時(shí)比較方便;首部長(zhǎng)度限制為 60 字節(jié)的缺點(diǎn)是 長(zhǎng)度有時(shí)可能不夠用,之所以限制長(zhǎng)度為 60 字節(jié),是希望用戶盡量減少開銷;最常用的首部長(zhǎng)度就是 20 字節(jié) (即首部長(zhǎng)度為 0101),這時(shí)不使用任何選項(xiàng)
區(qū)分服務(wù) TOS
也被稱為服務(wù)類型,占 8 位;
3位優(yōu)先權(quán)字段 (已經(jīng)棄用),4位TOS字段,和1位保留字段(必須置為0);4位TOS分別表示:最小延時(shí),最大吞吐量,最高可靠性,最小成本;這四者相互沖突,只能選擇一個(gè);對(duì)于 ssh / telnet 這樣的應(yīng)用程序,最小延時(shí)比較重要;對(duì)于 ftp 這樣的程序,最大吞吐量比較重要
總長(zhǎng)度
首部和數(shù)據(jù)之和,單位為字節(jié);總長(zhǎng)度字段為 16 位
因此數(shù)據(jù)報(bào)的最大長(zhǎng)度為 216-1=65535 字節(jié)
標(biāo)識(shí) id
用來(lái)標(biāo)識(shí)數(shù)據(jù)報(bào),占 16 位;
IP 協(xié)議在存儲(chǔ)器中維持一個(gè)計(jì)數(shù)器,每產(chǎn)生一個(gè)數(shù)據(jù)報(bào),計(jì)數(shù)器就加 1,并將此值賦給標(biāo)識(shí)字段;當(dāng)數(shù)據(jù)報(bào)的長(zhǎng)度超過(guò)網(wǎng)絡(luò)的 MTU,而必須分片時(shí),這個(gè)標(biāo)識(shí)字段的值就被復(fù)制到所有的數(shù)據(jù)報(bào)的標(biāo)識(shí)字段中;具有相同的標(biāo)識(shí)字段值的分片報(bào)文會(huì)被重組成原來(lái)的數(shù)據(jù)報(bào) (如果IP報(bào)文在數(shù)據(jù)鏈路層被分片了, 那么每一個(gè)片里面的這個(gè)id 都是相同的)
標(biāo)志 flag
占 3 位
第一位未使用,其值為 0;
第二位稱為 DF(不分片),表示是否允許分片;取值為 0 時(shí),表示允許分片;取值為 1 時(shí),表示不允許分片;
第三位稱為 MF(更多分片),表示是否還有分片正在傳輸,設(shè)置為 0 時(shí),表示沒(méi)有更多分片需要發(fā)送,或數(shù)據(jù)報(bào)沒(méi)有分片
片偏移
占 13 位
當(dāng)報(bào)文被分片后,該字段標(biāo)記該分片在原報(bào)文中的相對(duì)位置;片偏移以 8 個(gè)字節(jié)為偏移單位;所以,除了最后一個(gè)分片,其他分片的偏移值都是 8 字節(jié)(64 位)的整數(shù)倍
生存時(shí)間 TTL
表示數(shù)據(jù)報(bào)在網(wǎng)絡(luò)中的壽命,占 8 位
該字段由發(fā)出數(shù)據(jù)報(bào)的源主機(jī)設(shè)置,其目的是防止無(wú)法交付的數(shù)據(jù)報(bào)無(wú)限制地在網(wǎng)絡(luò)中傳輸,從而消耗網(wǎng)絡(luò)資源
路由器在轉(zhuǎn)發(fā)數(shù)據(jù)報(bào)之前,先把 TTL 值減 1,若 TTL 值減少到 0,則丟棄這個(gè)數(shù)據(jù)報(bào),不再轉(zhuǎn)發(fā);因此,TTL 指明數(shù)據(jù)報(bào)在網(wǎng)絡(luò)中最多可經(jīng)過(guò)多少個(gè)路由器;TTL 的最大數(shù)值為 255;若把 TTL 的初始值設(shè)為 1,則表示這個(gè)數(shù)據(jù)報(bào)只能在本局域網(wǎng)中傳送
協(xié)議
表示該數(shù)據(jù)報(bào)文所攜帶的數(shù)據(jù)所使用的協(xié)議類型,占 8 位
該字段可以方便目的主機(jī)的 IP 層知道按照什么協(xié)議來(lái)處理數(shù)據(jù)部分,不同的協(xié)議有專門不同的協(xié)議號(hào)
頭部校驗(yàn)和
用于校驗(yàn)數(shù)據(jù)報(bào)的首部,占 16 位
數(shù)據(jù)報(bào)每經(jīng)過(guò)一個(gè)路由器,首部的字段都可能發(fā)生變化(如TTL),所以需要重新校驗(yàn)。而數(shù)據(jù)部分不發(fā)生變化,所以不用重新生成校驗(yàn)值
源地址
表示數(shù)據(jù)報(bào)的源 IP 地址,占 32 位
目的地址
表示數(shù)據(jù)報(bào)的目的 IP 地址,占 32 位
該字段用于校驗(yàn)發(fā)送是否正確
可選字段
該字段用于一些可選的報(bào)頭設(shè)置,主要用于測(cè)試、調(diào)試和安全的目的;這些選項(xiàng)包括嚴(yán)格源路由(數(shù)據(jù)報(bào)必須經(jīng)過(guò)指定的路由)、網(wǎng)際時(shí)間戳(經(jīng)過(guò)每個(gè)路由器時(shí)的時(shí)間戳記錄)和安全限制
填充
由于可選字段中的長(zhǎng)度不是固定的,使用若干個(gè) 0 填充該字段,可以保證整個(gè)報(bào)頭的長(zhǎng)度是 32 位的整數(shù)倍
數(shù)據(jù)部分
數(shù)據(jù)部分的長(zhǎng)度不固定
表示傳輸層的數(shù)據(jù),如保存 TCP、UDP、ICMP 或 IGMP 的數(shù)據(jù)文章來(lái)源:http://www.zghlxwxcb.cn/news/detail-468866.html
文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-468866.html
到了這里,關(guān)于IP 協(xié)議報(bào)文格式 【IPv4】的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!