我使用libnet构建函数构建了一个http数据包,并通过libnet_write发送它。我看到数据包通过wireshark发送成功,tcp和ip header 都正确。但客户端无法解析我的数据包。例如,当我发送“HTTP/1.1 200 OK”数据包时,客户端没有加载html;当我发送“HTTP/1.1 302 Moved Temporarily”数据包时,客户端不会跳转到重定向站点。等等..
最佳答案
您在问题中没有提供任何代码,也没有提供您构建的数据包的示例,但 HTTP 在 TCP 上运行,并且您提到只编写一个数据包。这是行不通的。建立 TCP 连接需要写入 SYN 数据包、读取 SYN/ACK 响应并写入最终的 ACK。
只有在这 3 个数据包交换之后,才能发送带有数据的 TCP 数据包。
此外,根本不清楚您为什么要这样做。如果您希望 HTTP 服务器接收数据,您应该使用普通的套接字 API 构造并发送它。
关于c - 为什么客户端无法解析libnet构建和发送的http数据包?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29325280/