繁体   English   中英

SO_REUSEADDR是否导致服务器重用TIME_WAIT连接?

[英]SO_REUSEADDR Cause Server To Reuse TIME_WAIT Connection?

据我所知,SO_REUSEADDR允许服务器绑定到处于TIME_WAIT状态的地址。 但是,当接受新连接时,它如何影响服务器的动作?

假设我们正在主机A和服务器B之间进行通信,该服务器的监听套接字已设置为启用SO_REUSEADDR,并且连接C1 =(A,PortA,B,ListenPort)现在处于TIME_WAIT状态(从服务器B的角度来看)。

现在,如果主机A尝试使用同一对(A,PortA)连接到B,即使C1仍在TIME_WAIT中,也会建立重复的连接C2 =(A,PortA,B,ListenPort)吗? 为什么?

连接尝试(SYN)将以TIME_WAIT状态传递到连接,这将导致它发出RST,这将导致客户端发生连接拒绝。

如果服务器套接字和客户端套接字都使用SO_REUSEADDR,则双方将能够绑定到以前使用的同一端口,并且客户端将能够建立与服务器的连接。

我在内核为2.6.18的RedHat 5服务器上的两个本地套接字之间验证了这一点。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM