【发布时间】:2017-04-18 12:34:46
【问题描述】:
作为家庭作业,我编写了 UDP 服务器-客户端应用程序,该应用程序尝试使用校验和并通过确认正确接收的数据包来纠正 UDP 通信中的错误。
问题是在本地主机上,所有的数据包都没有问题地被接收。我尝试了一些数据包篡改程序,但它们都需要通过网络接口进行通信。
如何在localhost环回地址上模拟UDP丢包?
【问题讨论】:
标签: c++ testing networking udp
作为家庭作业,我编写了 UDP 服务器-客户端应用程序,该应用程序尝试使用校验和并通过确认正确接收的数据包来纠正 UDP 通信中的错误。
问题是在本地主机上,所有的数据包都没有问题地被接收。我尝试了一些数据包篡改程序,但它们都需要通过网络接口进行通信。
如何在localhost环回地址上模拟UDP丢包?
【问题讨论】:
标签: c++ testing networking udp
UDP 很容易处理——只需在发送方或接收方中编写一些代码,它会丢弃一定比例的消息,并且可能偶尔还会重新排序一些消息。
如果您不能修改实际的发送者或接收者,编写第三个程序就很容易了,它只是位于中间,转发带有一些丢包和重新排序的数据包。
如果您使用的是 Linux,您可能可以设置 iptables 为您丢弃数据包:http://code.nomad-labs.com/2010/03/11/simulating-dropped-packets-aka-crappy-internets-with-iptables/ - 这似乎甚至可以在环回端口上工作。
【讨论】: