我正试图模仿我的项目丢包的情况。我在使用TCP/IP协议。netem
工具提供了这样的功能。延迟在回环IP中工作,但我无法使丢包工作。根据netem
的网站,分组丢失被激活如下:
tc qdisc change dev lo root netem loss 5%
在C编程中使用TCP/IP套接字的client/server应用程序中,客户端发送消息"Echo this !",客户机接收到的来自服务器的回显消息是完整的。据我所知,TCP/IP保证了数据包的传递。TCP/IP协议不可能模拟丢包?
发布于 2021-06-30 12:08:24
如果数据包丢失,TCP将在延迟后再次发送它。如果它再次丢失,它会再次发送它。以此类推,最多10分钟左右,然后就放弃了。
5%的数据包丢失并不是完全可怕的,您的信息很可能会在一到两次重发-或零后通过。还请注意,您的整个消息适合于一个数据包,因此您的程序总共只发送了几个数据包(您的消息加上连接和断开连接的额外数据包),而且很可能不会丢失这些数据包。
您可以尝试发送更长的消息(比如兆字节),也可以尝试将数据包丢失率提高到25%或50% (甚至更高!)。发送消息需要花费更长的时间,即使网络中没有任何延迟,但是您的消息最终应该会通过,除非TCP决定放弃并断开连接。
https://stackoverflow.com/questions/68169263
复制相似问题