c-wireshark中的数据包分析-如何区分HTTP协议和TCP



我正在做一个学校项目,在这个项目中,我必须使用libcap库分析C语言中的.pcap文件。我是网络新手,但我知道TCP在OSI模型的第4层,HTTP在第7层。我想对HTTP数据包进行排序,并打印出源/目标端口,但我有点困惑如何区分HTTP协议和TCP协议。这里有一个我不理解的例子:

EDIT:这是另一个示例,其中源端口为80,长度为100。第54个字节是48,这与HTTP 1.1响应数据包相同。它是一个TCP。https://i.stack.imgur.com/RQs6v.png

此处的目标端口是80,即HTTP。然而,wireshark并没有将此数据包列为HTTP协议,它只是TCP。https://i.stack.imgur.com/TsVuO.png我的问题是,如何根据字节来确定数据包是HTTP协议还是TCP协议?

您无法仅通过查看数据包的标头来确定数据包是否为HTTP。HTTP是应用程序级别的,如果您想识别HTTP流,则必须检查数据包最内部的有效负载。换句话说,HTTP数据包可以通过查看TCP头之后的内容来区分。Wireshark已经为您做到了这一点,并将看起来像HTTP的数据包标记为这样。您只需在顶部的过滤栏中键入http,就可以过滤Wireshark识别为HTTP的数据包。

在您的情况下,您显示的数据包的长度为0,因此除了不同层的各种标头之外,实际上没有什么可分析的。数据包不是HTTP。

确定HTTP流量";基于字节";可以通过查看有效负载来完成:HTTP请求和响应具有已知的格式。例如,HTTP 1.1请求以<METHOD> <URI> HTTP/1.1rn开头,响应以HTTP/1.1 <CODE> <MSG>rn开头。

最新更新