我在移动设备上工作,所以我预计网络中断很常见。我正在处理付款,所以每个请求都很重要。
我希望能够测试我的服务器,以准确了解它在请求周期的不同时间点(特别是在整个网络通信期间的任何给定数据包发送/接收之间)在客户端网络丢失时的表现。
我怀疑如果在发送响应时与等待 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/