c - 为什么客户端无法解析libnet构建和发送的http数据包?

标签 c linux http libnet

我使用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/

相关文章:

c - sigkill 不会终止 C 程序

c - 对 GOT 所做的更改是否预期在反向调试期间被撤销?

Linux Bash 脚本取消隐藏目录中的文件

c++ - 从 Mac 为 WIndows、Linux 交叉编译 C++/QT

java - 使用嵌入式 Spark 服务器同时使用 HTTPS 和 HTTP 的方法?

php - 最后的字段在 POST 中丢失

c - 从 sqlite 中的 blob 中读取垃圾

c - Linux 上基于 C 的事件循环进程中的异步计时器

linux - 在构建内核镜像时,我在执行 make -j4 时遇到此错误(使用 ubuntu)

跨平台 HTTP 服务器库