不包括 IPv4 头中的选项字段,在 20 字节的头之后,数据如下。该数据可能是 TCP 数据包或 UDP 等。
现在给定一个 IPv4 数据包(带有标头和数据),如何找出数据中存在哪种类型的传输层数据包(TCP/UDP/等)?实际上我正在解析一个 IPv4 数据包,所以我需要了解这一点。
不包括 IPv4 头中的选项字段,在 20 字节的头之后,数据如下。该数据可能是 TCP 数据包或 UDP 等。
现在给定一个 IPv4 数据包(带有标头和数据),如何找出数据中存在哪种类型的传输层数据包(TCP/UDP/等)?实际上我正在解析一个 IPv4 数据包,所以我需要了解这一点。
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