数据包的协议

3

我正在使用Windows 7 x86下的C语言编写一个离线数据包解码程序。

我想知道如何判断数据包的协议类型,无论是UDP还是TCP


除非你需要为课程编写此代码,否则我建议扩展(或直接使用)优秀的Wireshark。如果由于某种原因无法使用Wireshark解决问题,仍然有价值对自己的工作进行双重检查。 - Mark
2个回答

6
您可以通过检查IP数据包头来了解,数据包头中有一个协议字段,根据其值用于指示数据包的类型:
  • 1表示ICMP
  • 6表示TCP
  • 17表示UDP
等等。有关此信息的更多信息可在维基百科上找到。 编辑:这里是该字段所有可能值的列表P.S:我假设这里使用的是IPv4,我不知道IPv6是否相同。

1
IPv6都是一样的,唯一的区别在于IP层,在获取协议类型时需要遵循不同的解析方式,但值是相同的。 - roni bar yanai
@Medardas 我无法确定(我不知道您如何捕获流量)。另外,作为建议,您可能需要查看类似 WinPcap 的库。 - Nasreddine

2
该协议在IP头部中可用。在此处阅读更多信息:这里

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接