首页 文章

模拟HTTP / TCP重传超时

提问于
浏览
1

我正在研究linux . 我有一个HTTP客户端,它从HTTP服务器请求一些数据 . HTTP客户端用C语言编写,HTTP服务器用perl编写 . 我想在客户端模拟TCP重传超时 .

我假设优雅地关闭套接字不会导致客户端重新传输请求 .

所以我尝试了以下场景:

  • 获取HTTP GET请求后立即退出服务器 . 但是,我注意到一旦应用程序退出,套接字仍然正常关闭 . 我看到服务器向客户端发起FIN.ACK消息,即使应用程序没有在套接字上调用“close” . 我已经注意到在用C程序编写的简单TCP服务器和客户端上的这种行为 .

  • Server不会向客户端的GET请求发送任何响应 . 在这种情况下,我注意到服务器仍然发送FIN,ACK . 似乎在这些情况下OS(linux)负责关闭与对等体的套接字 . 有没有办法抑制此行为(使用ioctl或setsockopt选项)或任何其他方式来模拟TCP重新传输超时 .

2 回答

  • 1

    您可以尝试设置阻止从服务器到客户端的数据包的防火墙规则,这将导致客户端重新传输任务 . 在Linux上,这可能是使用iptables完成的,但不同的发行版有不同的控制方法 .

  • 1

    此问题之前已经讨论过here

相关问题