c - 使用原始套接字和 WinPcap 发送 HTTP 请求

标签 c http sockets winpcap

作为我项目的一部分,我正在尝试向 Google 发送包含 HTTP 请求的 IP 数据包。我正在使用 Winpcap 库和 VC++。目前,我已经完成了 TCP 三向握手数据包,但在发送 TCP ACK 数据包后,我仍然坚持发送实际的 HTTP 请求数据包。当我使用 wireshark 捕获数据包时,此数据包被标记为“重组 PDU 的 TCP 段”。协议(protocol)列也是“TCP”而不是“HTTP”。怎么了?我将如何以这种方式发送 HTTP 数据包?

最佳答案

你不一定做错了什么。

默认情况下,Wireshark 将 TCP 数据交给更高级别的协议(protocol)处理程序 - 在本例中,该处理程序尝试重新组合整个 HTTP 请求和响应。它将重组消息附加到序列中的最终数据包,并用“重组 PDU 的 TCP 段”标记其他数据包:

alt text

您可以禁用此重组功能以检查单个数据包:

  • 编辑 -> 首选项 -> 协议(protocol) -> TCP
  • 取消选中“允许子解剖器重组 TCP 流”

关于c - 使用原始套接字和 WinPcap 发送 HTTP 请求,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4230576/

相关文章:

c - 简单的 curses.h 程序,终端不显示任何内容

c++ - CInternetSession 安全吗?它被加密了吗?

c# - 构建 C# .NET 客户端-服务器聊天应用程序的最佳方式是什么?

java - 通过 Java 套接字发送带有 <APPLET> 标记的 html 文件

c - 当服务器断开连接而不是进入无限循环时,如何让程序退出?

PHP 套接字服务器占用大量 CPU 资源

c - 给定的代码有什么问题

c - 如何在结构中打印变量?

检查 stdin 中读取的行格式为 number^number

http - DNS 查询是什么样的?