日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 运维知识 > linux >内容正文

linux

【Linux网络编程】IP 数据报格式详解

發(fā)布時(shí)間:2024/4/21 linux 44 豆豆
生活随笔 收集整理的這篇文章主要介紹了 【Linux网络编程】IP 数据报格式详解 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

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




TCP/IP 協(xié)議定義了一個(gè)在因特網(wǎng)上傳輸?shù)陌?#xff0c;稱(chēng)為 IP 數(shù)據(jù)報(bào) (IP Datagram)。這是一個(gè)與硬件無(wú)關(guān)的虛擬包,由首部和數(shù)據(jù)兩部分組成。


首部的前一部分是固定長(zhǎng)度,共 20 字節(jié),是所有 IP 數(shù)據(jù)報(bào)必須具有的。在首部的固定部分的后面是一些可選字段,其長(zhǎng)度是可變的。首都中的源地址和目的地址都是 IP 協(xié)議地址。


IP 數(shù)據(jù)報(bào)首部的固定部分中的各字段

1)版本:占4位,指IP協(xié)議的版本。

通信雙方使用的?IP 協(xié)議版本必須一致。日前廣泛使用的 IP 協(xié)議版本號(hào)為 4 (即 IPv4)。IPv6 目前還處于起步階段。


2)首部長(zhǎng)度:占 4 位,可表示的最大十進(jìn)制數(shù)值是 15。

請(qǐng)注意,這個(gè)字段所表示數(shù)的單位是32位字 ( 1 個(gè) 32 位字長(zhǎng)是 4 ?字節(jié)),因此,當(dāng) IP 的首部長(zhǎng)度為 1111 時(shí) ( 即十進(jìn)制的 15 ),首部長(zhǎng)度就達(dá)到 60 字節(jié)。


當(dāng) IP 分組的首部長(zhǎng)度不是 4 字節(jié)的整數(shù)倍時(shí),必須利用最后的填充字段加以填充。因此數(shù)據(jù)部分永遠(yuǎn)在 4 字節(jié)的整數(shù)倍開(kāi)始,這樣在實(shí)現(xiàn) IP 協(xié)議時(shí)較為方便。首部長(zhǎng)度限制為 60 字節(jié)的缺點(diǎn)是有時(shí)可能不夠用。這樣做的目的是希望用戶(hù)盡量減少開(kāi)銷(xiāo)。


最常用的首部長(zhǎng)度就是 20 字節(jié) (即首部長(zhǎng)度為 0101),這時(shí)不使用任何選項(xiàng)。


3)服務(wù):占 8 位,用來(lái)獲得更好的服務(wù),一般不使用。

服務(wù)類(lèi)型字段實(shí)際上被劃分為 2 個(gè)部分,一部分為優(yōu)先權(quán)一部分為 TOS。優(yōu)先權(quán)用來(lái)設(shè)定報(bào)文的優(yōu)先級(jí),就像郵包分為掛號(hào)和平信一樣。TOS 允許按照吞吐量、時(shí)延、可靠性和費(fèi)用方式選擇傳輸服務(wù),在早期的時(shí)候,TOS 還被用來(lái)進(jìn)行路由選擇。在 QOS 中有時(shí)也會(huì)使用優(yōu)先權(quán),常見(jiàn)的優(yōu)先權(quán)隊(duì)列。


這個(gè)字段在舊標(biāo)準(zhǔn)中叫做服務(wù)類(lèi)型,但實(shí)際上一直沒(méi)有被使用過(guò)。1998 年 IETF 把這個(gè)字段改名為區(qū)分服務(wù) DS ( DifferentiatedServices )。只有在使用區(qū)分服務(wù)時(shí),這個(gè)字段才起作用。


4)總長(zhǎng)度:總長(zhǎng)度指首都及數(shù)據(jù)之和的長(zhǎng)度,單位為字節(jié)。

因?yàn)榭傞L(zhǎng)度字段為 16 位,所以數(shù)據(jù)報(bào)的最大長(zhǎng)度為 65535 字節(jié)。在 IP 層下面的每一種數(shù)據(jù)鏈路層都有自己的幀格式,其中包括幀格式中的數(shù)據(jù)字段的最大長(zhǎng)度,即最大傳送單元 MTU (Maximum Transfer Unit)。當(dāng)一個(gè)數(shù)據(jù)報(bào)封裝成鏈路層的幀時(shí),此數(shù)據(jù)報(bào)的總長(zhǎng)度 ( 即首部加上數(shù)據(jù)部分 )一定不能超過(guò)下面的數(shù)據(jù)鏈路層的 MTU 值。


如果報(bào)文總長(zhǎng)度大于數(shù)據(jù)鏈路可傳輸?shù)淖畲髠鬏攩卧?#xff08;MTU),那么就會(huì)對(duì)報(bào)文進(jìn)行分片,詳情請(qǐng)看《IP 分片丟失重傳


5)標(biāo)識(shí) ( Identification ):占 16位。

IP 軟件在存儲(chǔ)器中維持一個(gè)計(jì)數(shù)器,每產(chǎn)生一個(gè)數(shù)據(jù)報(bào),計(jì)數(shù)器就加 1,并將此值賦給標(biāo)識(shí)字段。但這個(gè)“標(biāo)識(shí)”并不是序號(hào),因?yàn)?IP 是無(wú)連接的服務(wù),數(shù)據(jù)報(bào)不存在按序接收的問(wèn)題。


當(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í)字段的值使分片后的各數(shù)據(jù)報(bào)片最后能正確地重裝成為原來(lái)的數(shù)據(jù)報(bào)。


6)標(biāo)志 ( Flag ):占3 位,但目前只有2位有意義, ?其中第一位沒(méi)有被使用。

?第二位是不分片位,當(dāng) DF?位被置1,表示路由器不能對(duì)數(shù)據(jù)報(bào)文進(jìn)行分片處理,如果報(bào)文由于不能被分片而不能被轉(zhuǎn)發(fā),那么路由器將丟棄這個(gè)數(shù)據(jù)包,并向源地址發(fā)送錯(cuò)誤報(bào)告。這一功能可以用來(lái)測(cè)試線路的最大傳輸單元。只有當(dāng) DF = 0 時(shí)才允許分片。


第三位為 MF,當(dāng)路由器對(duì)數(shù)據(jù)進(jìn)行分片時(shí),除了最后一個(gè)分片的 MF 位為 0 外,其他所有的 MF 全部為 1,表示其后面還有其他的分片。

MF = 1 即表示后面 “還有分片” 的數(shù)據(jù)報(bào)。

MF = 0表示這已是若干數(shù)據(jù)報(bào)片中的最后一個(gè)。


7)片偏移:占 13位。較長(zhǎng)的分組在分片后,某片在原分組中的相對(duì)位置。

也就是說(shuō),相對(duì)用戶(hù)數(shù)據(jù)字段的起點(diǎn),該片從何處開(kāi)始。片偏移以 8 個(gè)字節(jié)為偏移單位。這就是說(shuō),每個(gè)分片的長(zhǎng)度一定是 8 字節(jié) ( 64 位)的整數(shù)倍。



8)生存時(shí)間:占 8 位,生存時(shí)間字段常用的英文縮寫(xiě)是?TTL ( Time To Live ),其表明數(shù)據(jù)報(bào)在網(wǎng)絡(luò)中的壽命。

由發(fā)出數(shù)據(jù)報(bào)的源點(diǎn)設(shè)置這個(gè)字段。其目的是防止無(wú)法交付的數(shù)據(jù)報(bào)無(wú)限制地在因特網(wǎng)中兜圍子,因而白白消耗網(wǎng)絡(luò)資源。


最初的設(shè)計(jì)是以秒作為 TTL 的單位。每經(jīng)過(guò)一個(gè)路由器時(shí),就把 TTL 減去數(shù)據(jù)報(bào)在路由器消耗掉的一段時(shí)間。若數(shù)據(jù)報(bào)在路由器消耗的時(shí)間小于 1 秒,就把 TTL 值減 1。當(dāng) TTL 值為 0 時(shí),就丟棄這個(gè)數(shù)據(jù)報(bào)。當(dāng) TTL 為零的時(shí)候,就會(huì)丟棄這個(gè)報(bào)文,同時(shí)向源地址發(fā)送錯(cuò)誤報(bào)告,促使重新發(fā)送。


9)協(xié)議:占 8 位,協(xié)議字段指出此數(shù)據(jù)報(bào)攜帶的數(shù)據(jù)是使用何種協(xié)議,以便使目的主機(jī)的 IP 層知道應(yīng)將數(shù)據(jù)部分上交給哪個(gè)處理過(guò)程,常用的有ICMP(1), IGMP(2), TCP(6), UDP(17), IPv6(41)


10)首部檢驗(yàn)和:占 16 位。這個(gè)字段只檢驗(yàn)數(shù)據(jù)報(bào)的首部,但不包括數(shù)據(jù)部分。

這是因?yàn)閿?shù)據(jù)報(bào)每經(jīng)過(guò)一個(gè)路由器,都要重新計(jì)算一下首都檢驗(yàn)和 ( 一些字段,如生存時(shí)間、標(biāo)志、片偏移等都可能發(fā)生變化 )。不檢驗(yàn)數(shù)據(jù)部分可減少計(jì)算的工作量。


11)源地址:發(fā)送方IP地址


12)目的地址:接收方IP地址


IP 數(shù)據(jù)報(bào)首部的可變部分

IP 首都的可變部分就是一個(gè)可選字段。選項(xiàng)字段用來(lái)支持排錯(cuò)、測(cè)量以及安全等措施,內(nèi)容很豐富。此字段的長(zhǎng)度可變,從 1 個(gè)字節(jié)到 40 個(gè)字節(jié)不等,取決于所選擇的項(xiàng)目。


某些選項(xiàng)只需要 1 個(gè)字節(jié),它只包括 1 個(gè)字節(jié)的選項(xiàng)代碼。但還有些選項(xiàng)需要多個(gè)字節(jié),這些選項(xiàng)一個(gè)個(gè)拼接起來(lái),中間不需要有分隔符,最后用全 0 的填充字段補(bǔ)齊成為 4字節(jié)的整數(shù)倍。增加首都的可變部分是為了增加 IP 數(shù)據(jù)報(bào)的功能,但這同時(shí)也使得 IP 數(shù)據(jù)報(bào)的首部長(zhǎng)度成為可變的。這就增加了每一個(gè)路由器處理數(shù)據(jù)報(bào)的開(kāi)銷(xiāo)。

實(shí)際上這些選項(xiàng)很少被使用。新的 IPv6就將 IP數(shù)據(jù)報(bào)的首部長(zhǎng)度做成固定的。


轉(zhuǎn)自:http://blog.163.com/

與50位技術(shù)專(zhuān)家面對(duì)面20年技術(shù)見(jiàn)證,附贈(zèng)技術(shù)全景圖

總結(jié)

以上是生活随笔為你收集整理的【Linux网络编程】IP 数据报格式详解的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。