[英]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.