2009-11-25 34 views
0

排除IPv4標頭中的選項字段後,數據在20個字節的標頭之後。該數據可能是TCP數據包或UDP等。查找IPv4數據包中的數據類型

現在給出了一個IPv4數據包(帶有頭和數據),如何找出數據中存在哪種類型的傳輸層數據包(TCP/UDP/etc。)?其實我解析一個IPv4數據包,所以我需要了解這一點。

回答

0

深度包檢測? Ipoque發佈此任務的一些開源代碼:opendpi

+0

其實我剛剛發現,在h IPv4的eader,有一個稱爲協議的字段。在那裏,協議被指定。無論如何,我知道一個新的圖書館。 – avd

3

IPv4報頭的協議字段(參見RFC791)會告訴你:

0     1     2     3 
    0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 
    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 
    |Version| IHL |Type of Service|   Total Length   | 
    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 
    |   Identification  |Flags|  Fragment Offset | 
    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 
    | Time to Live | Protocol |   Header Checksum  | 
    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 
    |      Source Address       | 
    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 
    |     Destination Address      | 
    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 
    |     Options     | Padding | 
    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 

協議號由IANA分配的,在這裏列出:

http://www.iana.org/assignments/protocol-numbers/protocol-numbers.xhtml

一些示例協議號碼是:

1 ICMP 
6 TCP 
17 UDP