IPv4分析

IPv4的頭部格式:html

image12

1. Versiontcp

版本號,默認是4。測試

2. IHL(Internet Header Length)spa

就是IPv4頭部長度。這個長度的單位是32bit,通常是5,那麼頭部的長度就是5x32bit=160bit。視頻

3. DSCP(Differentiated Services Code Point),ECN(Explicit Congestion Notification)htm

原來這8字節是被定義成TOS(Type of Service),如今被RFC2474定義成Differentiated services(差別化服務)和ECNblog

背景:隨着互聯網的發展,各類各樣的服務被提供,好比語音、視頻、流音樂、網頁、郵件等等。原來的TOS定義已經跟不上時代的須要,因此在1998年,IETF發佈了RFC 2474,將原來的TOS替換成DSCP和ECN。ip

4. Total Lengthci

整個數據包的長度,含頭部,單位爲Byte。路由

5. Identification

數據包標識,用來區分相同的包,好比ping包。

6. Flags

bit 0 : 保留,老是0

bit 1 : Don’t Fragment, DF。表示不分片。當須要發送的數據大於最長數據包限制的時候,數據須要分片發送。若是這位置1,IP模塊將不會對數據報進行分片。這種狀況下,若是IP數據報長度超過MTU,IP模塊將丟棄數據報並返回一個ICMP差錯報文。

bit 2 : More Fragment,MF。表示更多分片,除了數據報的最後一個分片外,其餘分片都要把它置1.

7. Fragment Offset

分片的位移。(2^13 – 1) x 8 = 65528 bytes, 也就是說,最大的IP數據報長度爲65528+20=65548字節。

8. Time to Live, TTL

防止數據擁塞用的,有一個初始值,好比64,每通過一個路由器自動-1,到0的時候就被銷燬。

9. Protocol

上層協議號,好比ICMP是1,TCP是6,UDP是17.

10. Header Checksum

頭部CRC校驗,詳細能夠看這裏:http://en.wikipedia.org/wiki/IPv4_header_checksum

11. Source IP Address

源IP地址

12. Destination IP Address

目標IP地址

13. Options

可選,不經常使用,後面再詳細分析。

 

抓包測試:

用tcpdump抓包,  sudo tcpdump –ntx –i eth0 icmp

抓一下ping數據包,我這裏ping一下本身的主機craftor.org

image13

上面一個包是發送,下面的包是返回。

0x4 協議版本,v4
0x5 包頭長度,5x32bit
0x00 參照RFC2474,00是默認包類型
0x0054 包總長爲0x54=84
0x59b0 ID
0x4000 不分片,不分包
0x40 TTL=64
0x01 ICMP協議,ping屬於ICMP協議
0xbbbc CheckSum
0xc0a82c81 SourceIP=192.168.44.129
0xc64a71c8 DestinationIP=198.74.113.200
0x0800~0x3637 Options
相關文章
相關標籤/搜索