查找IPv4数据包中的数据类型

时间:2009-11-25 09:39:42

标签: network-programming ipv4

在IPv4标头中排除选项字段,在20个字节的标头之后,数据如下。该数据可以是TCP数据包,也可以是UDP等。

现在给出一个IPv4数据包(带有标头和数据),如何找出数据中存在哪种类型的传输层数据包(TCP / UDP /等)?实际上我正在解析IPv4数据包,所以我需要理解这一点。

2 个答案:

答案 0 :(得分: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

答案 1 :(得分:0)

深度包检查? Ipoque为此任务发布了一些开源代码:opendpi