IPv4分析

Craftor發表於2014-06-27

IPv4的頭部格式:

image12

1. Version

版本號,預設是4。

2. IHL(Internet Header Length)

就是IPv4頭部長度。這個長度的單位是32bit,一般是5,那麼頭部的長度就是5x32bit=160bit。

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

原來這8位元組是被定義成TOS(Type of Service),現在被RFC2474定義成Differentiated services(差異化服務)和ECN

背景:隨著網際網路的發展,各種各樣的服務被提供,比如語音、視訊、流音樂、網頁、郵件等等。原來的TOS定義已經跟不上時代的需要,所以在1998年,IETF釋出了RFC 2474,將原來的TOS替換成DSCP和ECN。

4. Total Length

整個資料包的長度,含頭部,單位為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

相關文章