ipv4頭部分析,讀書筆記3

image

ip頭部最長是60字節,前面的20字節是固定的,選項可加上40字節linux

4位版本號--- 對於ipv4來講呢,就是4tcp

4位頭部長度 ---  表示 有多小個32bit(4字節),4位最大表示數是15啦,也就是最大就是15啦,因此頭部最長就是60啦blog

8位服務類型 --- 已經不用了ip

16總長度---ip數據報長度 因此最大長度爲 65535啦路由

16位標識-- 分片的時候用的 get

3位標誌 --- 第一位保留 第二位 禁止分片 第三位 表示更多分片hash

13位偏移 --- 相對ip數據報的開始處it

8位生存時間 ---ttl 當變爲0的時候拋棄request

8 位協議 ---- 指應用層協議,區分上層協議im

16位校驗和 ---- 數據的hash值啦

32 位 原端 和目的端ip地址

選項 包括有

1 記錄路由

2 時間戳

3 鬆散路由

4 嚴謹 路由

下面來分析一下

tcpdump -i eth0:1 -ent '(dst 192.168.5.190 and src 192.168.5.109)or( dst 192.168.5.109 and src 192.168.5.190)' –X

bc:ee:7b:9d:ee:02 > 40:16:7e:79:c7:36, ethertype IPv4 (0x0800), length 74: 192.168.5.109 > 192.168.5.190: ICMP echo request, id 1, seq 72, length 40

0x0000:  4500 003c 7da4 0000 4001 70a1 c0a8 056d  E..<}...@.p....m
0x0010:  c0a8 05be 0800 4d13 0001 0048 6162 6364  ......M....Habcd
0x0020:  6566 6768 696a 6b6c 6d6e 6f70 7172 7374  efghijklmnopqrst
0x0030:  7576 7761 6263 6465 6667 6869            uvwabcdefghi

0x4 表明ip版本號

0x5  頭部長度爲 5個32位(20個字節)

0x00 說明tos沒有開啓

0x003c  說明 數據報總長度 60字節

0x7da4 數據報標示

0x0 沒有設置標誌位

0x000 分片偏移

0x40 ttl設置爲64

0x01 表示上層協議 爲 icmp    1    ICMP        # internet control message protocol (能夠查找linux的/etc/protocols )

0x70a1 校驗值

0xc0a8 056d 源ip

0xc0a8 05be 目標ip

 

IP分片

何時會分片呢,就是數據包大的時候啦

image

參照下圖就最清楚啦

image

下面來作個試驗

ping 192.168.5.190 -l 1473

bc:ee:7b:9d:ee:02 > 40:16:7e:79:c7:36, ethertype IPv4 (0x0800), length 1514: (tos 0x0, ttl 64, id 20425, offset 0, flags [+], proto ICMP (1), length 1500)

192.168.5.109 > 192.168.5.190: ICMP echo request, id 1, seq 92, length 1480

bc:ee:7b:9d:ee:02 > 40:16:7e:79:c7:36, ethertype IPv4 (0x0800), length 60: (tos 0x0, ttl 64, id 20425, offset 1480, flags [none], proto ICMP (1), length 21)

192.168.5.109 > 192.168.5.190: icmp

從id能夠看出

他們兩個包都是同一個包的

第一個包偏移爲0 ,flag[+] 表示MF標誌啦

第二個包偏移爲1480 flag[none]表示已經無下一個

從上個咱們能夠知道,第二個包是沒有包含icmp頭部,由於規範說第一次發了下次就不發啦

相關文章
相關標籤/搜索