ip頭部結(jié)構(gòu)的詳解
以上是ip頭的內(nèi)容,
版本一般為4,即ipv4,如果是ipv6,則可能為6,
首部長度:首部長度應(yīng)該為 數(shù)量*4 通常為20字節(jié),通過抓包工具抓包,基本都是20字節(jié)無一例外。本文引用地址:http://www.ex-cimer.com/article/201611/324074.htm
tos服務(wù)類型:應(yīng)該是對應(yīng)路由器的,當(dāng)終端接收到數(shù)據(jù)后,應(yīng)該就不關(guān)心這個的值了。包括過程字段(3位,設(shè)置了數(shù)據(jù)包的重要性,取值越大數(shù)據(jù)越重要),延遲字段(1位),流量字段(1位),可靠性字段(1位), 成本字段(1位),未使用(1位)
16位總長度:即ip總長
16位標(biāo)識:占16位。IP軟件在存儲器中維持一個計數(shù)器,每產(chǎn)生一個數(shù)據(jù)報,計數(shù)器就加1,并將此值賦給標(biāo)識字段。但這個“標(biāo)識”并不是序號,因為IP是無連接服務(wù),數(shù)據(jù)報不存在按序接收的問題。當(dāng)數(shù)據(jù)報由于長度超過網(wǎng)絡(luò)的MTU而必須分片時,這個標(biāo)識字段的值就被復(fù)制到所有的數(shù)據(jù)報的標(biāo)識字段中。相同的標(biāo)識字段的值使分片后的各數(shù)據(jù)報片最后能正確地重裝成為原來的數(shù)據(jù)報。
ip頭部標(biāo)識與片偏移:
ip數(shù)據(jù)頭中的3位標(biāo)識最低位為mf,為1時說明這個ip數(shù)據(jù)包是分片的,并且后續(xù)還有數(shù)據(jù)包,為0時說明這個ip數(shù)據(jù)包是分片的,但已經(jīng)是最后一個數(shù)據(jù)了。中間位為df,df為1時,說明這個數(shù)據(jù)包是不分片的,為零時才允許數(shù)據(jù)包分片。
片偏移 :占13位。片偏移指出:較長的分組在分片后,某片在原分組中的相對位置。也就是說,相對于用戶數(shù)據(jù)字段的起點,該片從何處開始。片偏移以8個字節(jié)為偏移單位。也就是說,每個分片的長度一定是8字節(jié)(64位)的整數(shù)倍。
8位ttl生存時間,表示的是數(shù)據(jù)從一個設(shè)備發(fā)向另一個設(shè)備,經(jīng)過一個中轉(zhuǎn)站,則減1,當(dāng)ttl為0時,即使收端收到,則認(rèn)定該數(shù)據(jù)超時,則丟棄該數(shù)據(jù)。也就是一個防止超時的設(shè)置,不過網(wǎng)上還有另一種說法,就是表示自己的設(shè)備使用的是什么系統(tǒng),具體表示什么,沒有試過。不過一般ttl的數(shù)值為64.
8位協(xié)議:ICMP(1)、TCP(6)、UDP(17)。
校驗和:為頭部校驗。
32位源ip和32為目標(biāo)ip
還有一個是選項,至于選項的內(nèi)容是什么,因為沒見過,具體我也不知道。
如果沒有選項或選項的后面,那就是數(shù)據(jù),數(shù)據(jù)包含這tcp數(shù)據(jù)和udp數(shù)據(jù)。
對于程序而言,先顛倒ip,然后把那些死的東西寫進去,甚至是不處理,只處理那些可變的部分即可。
評論