我正在做一个学校项目,在这个项目中,我必须使用libcap库来分析C语言中的.pcap文件。我刚接触网络,但是我知道TCP在OSI模型的第4层,而HTTP在第7层。我想对HTTP数据包进行排序,并打印源/目的端口,但我对如何区分HTTP协议和TCP协议感到有点困惑。下面是一个我不理解的例子:
编辑:这里是另一个示例,其中源端口为80,长度为100。第54个字节为48,与HTTP 1.1响应数据包相同。它是TCP。https://i.stack.imgur.com/RQs6v.png
这里的目的端口是80,它是HTTP。但是,wireshark不会将此数据包列为HTTP协议,它只是TCP。TCP Me的问题是如何根据字节来确定数据包是https://i.stack.imgur.com/TsVuO.png协议还是仅仅是TCP协议?
发布于 2020-10-20 05:37:49
您无法仅通过查看其报头来确定数据包是否为HTTP。HTTP是应用层的,如果你想识别一个HTTP流,你必须检查包的最里面的有效载荷。换句话说,只需查看TCP报头之后的内容即可区分HTTP数据包。Wireshark已经为您做了这件事,并将数据包标记到看起来像HTTP的端口。只需在顶部的过滤器栏中键入http,就可以过滤Wireshark识别为超文本传输协议的数据包。
在您的示例中,您显示的数据包的长度为0,因此除了不同层的各种报头之外,实际上没有什么需要分析的。数据包不是HTTP。
可以通过查看有效负载来确定“基于字节”的HTTP流量: HTTP请求和响应具有已知的格式。例如,HTTP1.1请求以<METHOD> <URI> HTTP/1.1\r\n开头,响应以HTTP/1.1 <CODE> <MSG>\r\n开头。
https://stackoverflow.com/questions/64435280
复制相似问题