【发布时间】:2013-10-29 15:39:31
【问题描述】:
Arduino 以太网(板或屏蔽)最多支持 4 个连接。如果充当服务器,很容易造成拒绝服务:只需打开 4 个与 Arduino 的连接,不发送任何数据。服务器代码永远不会意识到连接已建立,因为 EthernetServer::available() 方法仅在连接有可用数据时返回 EthernetClient。因此,只要客户端维护它们,连接就会保持打开状态,从而阻止 Arduino 处理其他请求,而服务器在一段时间后没有机会关闭它们。
所以问题是:有没有办法在空闲连接上设置超时,也许在 Wiznet 芯片级别?
【问题讨论】:
-
如果是这种情况,我不确定即使是空闲连接超时也有助于抵御大多数拒绝服务攻击,因为许多人一直在暴力破解他们的目标
-
没错,但我更关心客户端中的错误或不良行为,而不是实际的恶意攻击。就我而言,Arduino 不是面向公众的。
-
恕我直言,这是 Arduino 不适合作为服务器的众多原因之一。我建议选择马力更大的东西,例如。一个 RASPI 或一些 open-wrt 路由器。
-
这种情况下马力绰绰有余(大部分CPU时间都花在了空转上)。我只需要一种方法在一段时间后关闭不活动的连接。