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