network-programming - 创建太多套接字如何影响甚至崩溃路由器?

标签 network-programming

对于可以创建多少个连接(套接字)并将其用于数据传输是否有不同的限制?有家用路由器还是商用级路由器重要吗?

例如,不同的用户对 Linksys、D-link 或 Netgear 路由器有不同的体验。有些可能更容易宕机或“卡住”,尤其是当它们正在运行网络密集型程序时(需要拔下路由器的电源线并重新插入)。是因为创建了太多套接字还是使用了太多路由器可以支持的资源?

最佳答案

路由器本身不关心套接字,除非它们是有状态的路由器,例如 NAT 网关。

如果它是有状态路由器,那么每个连接都会占用路由器 RAM 中的一些空间,当 RAM 耗尽时,它必须丢弃旧记录(否则它会崩溃,如果幸运的话,重新-boots,取决于它是什么供应商......)

IP 术语中的“连接”是一个 TCP session (由源 IP、源端口、目标 IP、目标端口和序列号协议(protocol)标识)。 UDP,或 ICMP 和 friend ,本身没有“连接”,但有状态路由器/防火墙通常通过假设源 IP、源端口、目标 IP、目标端口元组是一个超时的“连接”来伪造它。当一段时间内在该连接上看不到任何流量时,就认为它已经挂掉了。该超时可能设置在 30 秒到一天之间,具体取决于防火墙/路由器。

是的,一般来说,商业路由器/防火墙更强大,因此在有状态时可以跟踪更多连接。你能得到的最好的路由器通常是一个 400 美元的 Linux 或 xBSD x86 盒子,带有一两个 RAM 和一个小的闪存盘来启动......

关于network-programming - 创建太多套接字如何影响甚至崩溃路由器?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/924359/

相关文章:

c - SSL 例程 :SSL3_READ_N:read bio not set

networking - 我在哪里可以找到 bittorrent dht bootstrap 节点的列表?

c - 在 C 中通过 TCP 发送和接收整数值

java - 我如何在 J2ME 中读取字符串?

c++ - 如何获取 OpenSSL BIO_do_connect() 失败原因?

tcp 应用程序退出总是会发送 FIN 吗?

java - 图像获取中的禁止响应代码

c - 如何完全破坏C中的套接字连接

c# - 序列化类缺失数据

用于在网络适配器上打开 "File and Print Sharing for Microsoft Networks"的 PowerShell 命令