【问题标题】:How to emulate a complete network loss between a client and server?如何模拟客户端和服务器之间的完整网络丢失?
【发布时间】:2018-11-06 20:56:25
【问题描述】:

我试图了解客户端(在客户端-服务器架构中)在使用“阻塞”调用时是否会以某种方式完全失去连接的另一端,而不会给出任何丢失的迹象。我认为这可以正常发生,因为大多数网络有时都会出现问题。问题是我想复制这个想法:客户端以阻塞模式连接,服务器接受连接,然后消失,然后可能稍后重新出现,但不是以服务器关闭连接或“nacks”的方式' 或任何东西。

有没有办法在本地网络中引发这种行为?

事实证明,这个特定的应用程序是用 Go 编写的,但我不知道这有多重要。

【问题讨论】:

标签: go networking network-programming


【解决方案1】:

冒着愚蠢的风险...您是否考虑过手动移除电缆/关闭网络接口?如果这只是为了测试如果您失去连接会发生什么,这是一个选项。

另一种选择是使用操作系统的防火墙来丢弃特定流量,例如在基于 Linux 的操作系统中使用 iptables 添加规则。

//Block incoming port 80 (web)
$ sudo iptables -I INPUT -p tcp -m tcp --dport 80 -j DROP
//Block outgoing port 80 (web)
$ sudo iptables -I OUTPUT -p tcp -m tcp --dport 80 -j DROP

//Remove block incoming port 80 (web)
$ sudo iptables -I INPUT -p tcp -m tcp --dport 80 -j ACCEPT
//Remove block outgoing port 80 (web)
$ sudo iptables -I OUTPUT -p tcp -m tcp --dport 80 -j ACCEPT

当然,如果需要,您可以在程序中执行此命令。

【讨论】:

  • 流量消失后并不是我有选择,而是我看到的行为只有在连接完全断开时才能解释,没有某种形式的 NACK 或关闭连接,或者一些这样的。就像服务重启一样,但数据包可能在 udp 中(我不知道)。
猜你喜欢
  • 2011-02-10
  • 1970-01-01
  • 1970-01-01
  • 2012-08-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-04-26
相关资源
最近更新 更多