作为我项目的一部分,我正在尝试向 Google 发送包含 HTTP 请求的 IP 数据包。我正在使用 Winpcap 库和 VC++。目前,我已经完成了 TCP 三向握手数据包,但在发送 TCP ACK 数据包后,我仍然坚持发送实际的 HTTP 请求数据包。当我使用 wireshark 捕获数据包时,此数据包被标记为“重组 PDU 的 TCP 段”。协议(protocol)列也是“TCP”而不是“HTTP”。怎么了?我将如何以这种方式发送 HTTP 数据包?
最佳答案
你不一定做错了什么。
默认情况下,Wireshark 将 TCP 数据交给更高级别的协议(protocol)处理程序 - 在本例中,该处理程序尝试重新组合整个 HTTP 请求和响应。它将重组消息附加到序列中的最终数据包,并用“重组 PDU 的 TCP 段”标记其他数据包:
您可以禁用此重组功能以检查单个数据包:
- 编辑 -> 首选项 -> 协议(protocol) -> TCP
- 取消选中“允许子解剖器重组 TCP 流”
关于c - 使用原始套接字和 WinPcap 发送 HTTP 请求,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4230576/