如果某个 TCP 对等方发起了一个 TCP连接终止且该连接终止已经完成,该 TCP 连接将进入 TIME WAIT 状态。一旦到达了 TIME WAIT 状态,TCP必须等待报文段最大生存时间 (MSL) 的两倍后才能创建一个具有相同的套接字地址集的连接。套接字地址集包括源和目标 IP 地址与源和目标TCP 端口的组合。MSL 是 TCP 段可以在一个网络上存在的最长时间,其推荐值是 120秒。这一延迟可以防止使用相同的套接字地址集的新连接的 TCP 段与旧连接的重复 TCP 段相混淆。 处于 TIME WAIT 状态的连接中的 TCP 端口被视为可用端口,可分配给应用程序使用。这会导致出现以下情况:
您可以通过以下方法来减少这种情况:
不过,减小这些注册表项的值违反了 TCP 和 MSL 的原始设计。 有关这些注册表项的详细信息,请参见 Microsoft Windows Server 2003 TCP/IP Implementation Details(Microsoft Windows Server 2003 TCP/IP 实施细节)。 为阻止应用程序创建与处于 TIME WAIT 状态的连接具有相同的套接字地址集的连接,Windows Server 2003 SP1 中的TCP/IP 实施了智能 TCP 端口分配算法。当应用程序请求任意可用的 TCP 端口时,TCP/IP 首先尝试查找与处于 TIME WAIT状态的连接不对应的可用端口。如果找不到这样的端口,它便选择任意可用的端口。 这一新功能减小了应用程序在连接到同一目标时被分配一个处于 TIME WAIT 状态的 TCP 端口的可能性。您不再需要修改 MaxFreeTWTcbs 和 TcpTimedWaitDelay 两个注册表项的值。
linux下:在 /proc/sys/net/ipv4/tcp_tw_reuse文件里 可以配置
|
Windows下TCP连接设置
最新推荐文章于 2024-09-02 10:10:14 发布