ip頭ttl IP頭情景分析

2021-10-10 23:57:28 字數 2249 閱讀 5065

ip網路應用廣泛普及了,我本人和ip接觸很多年,閒暇之餘,想來ip頭設計有哪些特點,作文分享。

現網使用的協議ipv4 /v6, ipv1 v2 v3僅僅存在實驗室,v5為流**預留。version欄位總共4個bit,可以支援15個版本,還好ip是基礎協議,版本不會太多,四個夠用了。

本文僅討論ipv4。

ip hdr len

對於ipv4,這個字段預設是5,最小值5,數值代表4個位元組的倍數,比如5,ip頭長度5*4 = 20位元組。

和ip類似,其它協議多四位元組對齊,比如udp頭8位元組,tcp頭20位元組。

另外,4個bit,最大值是15,ip 頭最大60位元組,ip頭最大40位元組可選項。

tosqos、dscp相關的。

ip len

整個ip報文的長度,最大65536位元組,但是你很少見到這麼長的報文。

ttl防止環路用的。windows預設128,linux預設64

pro協議型別,比如tcp=6,udp=17,gre=47

ip報文的校驗和,16bit為單位計算

addr

ipv4報文位址是4位元組

分片相關

分片示意圖

如圖,分片對「udp+payload」進行分片(包括udp頭)。

報文分片,df(don』t fragment)必為0。

mf(more fragment)=1表示當前報文後續還有分片包,置0表示後續沒有分片了。

offset表示當前的分片在分片前報文中的位元組偏移(除以8後的值,分片以8位元組為對齊)。

分片三元組

一組分片包,由三元組src addr+dst addr+ ip id唯一確定,在特定的分片伺服器和重組伺服器下(src addr和dst addr確定情況下),ip id用來標識不同分片組。這個標識16bit,取值範圍65536,一般遞增。

ipid標識分片分組

在乙個網元或伺服器內,ipid用來標識不同分片組。如果多個伺服器(或網元)的分片在乙個伺服器(網元)重組,它們的ipid有可能出現相同的情況(比如圖中ipid1=ipid2=ipid3),這種情況下,src addr用來標識不同伺服器。如下圖。

src addr區分不同伺服器

tcp一般不分片

值得注意的是,分片一般為udp報文,而tcp為了估算路徑擁塞,一般不會分片。所以tcp報文的ip頭里df一般置位1。

tcp的路徑擁塞估算

如上圖,tcp一般使用t1(傳送data的時刻t1)和t2(接收對應ack的時刻)差來估算路徑是否擁塞。如果tcp分片後,時間估算會不準確,如下圖。

第1步(t1時刻)和第6步(t2時刻)的時間差會比較大(估算為路徑擁塞),這是由於第3步的「擁塞路徑」造成,這樣tcp估算路徑是擁塞的,而圖中分片第2步的路徑是非擁塞,分片後,實際的路徑擁塞估算出現了偏差。

ipid的劃分

有些框式網元中,ipid要避免裝置內衝突。比如下圖框式裝置,乙個框中插滿線卡,這些線卡同為乙個網元,也就是乙個裝置。

在這種裝置中,一般ipid的賦值採用分段劃分。如下圖。

網元內ipid分段配置

以上為ip頭某些字段情景講解,待續。

ip頭ttl IP協議簡介

我們這篇文章來介紹一下ip協議。ip協議也就是我們所說的網路層協議,它的主要目的就是將乙個ip位址的資料傳送到另外乙個ip位址所代表的裝置,這兩個ip位址有可能是隸屬於同乙個網段,也有可能隸屬於不同的網段。我們來看乙個比較簡單的情況。當把一組資料發往ip位址為127.127.127.127的裝置,這...

IP頭,TCP頭,UDP頭,MAC幀頭定義

一 mac幀頭定義 資料幀定義,頭14個位元組,尾4個位元組 typedef struct mac frame header attribute packed mac frame header,pmac frame header typedef struct mac frame tail attri...

IP頭,TCP頭,UDP頭,MAC幀頭定義

一 mac幀頭定義 資料幀定義,頭14個位元組,尾4個位元組 typedef struct mac frame header attribute packed mac frame header,pmac frame header typedef struct mac frame tail attri...