1

不包括 IPv4 头中的选项字段,在 20 字节的头之后,数据如下。该数据可能是 TCP 数据包或 UDP 等。

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

4

2 回答 2

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
于 2009-12-10T15:15:54.867 回答
1

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

于 2009-11-25T09:44:43.123 回答