python - 如何在每个可能的数据包丢失网络时测试服务器行为

标签 python http tcp network-programming scapy

我在移动设备上工作,所以我预计网络中断很常见。我正在处理付款,所以每个请求都很重要。

我希望能够测试我的服务器,以准确了解它在请求周期的不同时间点(特别是在整个网络通信期间的任何给定数据包发送/接收之间)在客户端网络丢失时的表现。

我怀疑如果在发送响应时与等待 FIN-ACK 时通信丢失,服务器的行为会略有不同,我想知道我可以区分哪些断开连接的时间。

我尝试使用 scapy 模拟一个 http 请求,并停止每个 TCP 数据包之间的通信。 (即:先发送SYN然后消失;然后发送SYN并接收SYN-ACK然后消失;然后发送SYN并接收SYN-ACK并发送ACK然后消失;等等)但是,我很快就陷入了细节尝试重现功能性 TCP 堆栈。

是否有一个好的现有工具来自动化/启用这种测试?

最佳答案

除非您的应用程序实际响应并生成自己的 IP 数据包(这将非常愚蠢),否则您可能不需要在该层进行测试。简单地在 TCP 层进行测试(例如,connect()send()recv()shutdown()) 可能就足够了,因为这些事件是您的服务器唯一知道的事件。

关于python - 如何在每个可能的数据包丢失网络时测试服务器行为,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7424349/

相关文章:

Python 套接字 - 让套接字保持事件状态?

java.net.SocketException : socket closed TCP Client Server Communication 异常

python - 在 GET 请求上传递 slug 或 id

python - 递归阶乘计算器 RecursionError

javascript - 是否可以创建一个只允许某些域调用的 javascript api

Perl 同时下载 HTTP::Async 和 Net::Async::HTTP 太慢

android - Google GCM 延迟,TCP 超时修复?

python - 将 ddp 后端与 PyTorch Lightning 一起使用时,在整个验证集上进行验证

python - 如何检测脚本是从 Django 还是命令提示符运行?

c++ - 如何在 curl 中将邮件正文设置为 html?