【问题标题】:Finding the type of data in IPv4 packet查找 IPv4 数据包中的数据类型
【发布时间】:2009-12-10 23:15:54
【问题描述】:

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

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

【问题讨论】:

    标签: network-programming ipv4


    【解决方案1】:

    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
    

    【讨论】:

      【解决方案2】:

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

      【讨论】:

      • 其实我刚发现,在IPv4的头部,有一个字段叫protocol。在那里,协议被指定。不管怎样,我认识了一个新图书馆。
      猜你喜欢
      • 1970-01-01
      • 2021-06-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多