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

时间:2015-07-29 11:04:25

标签: linux sockets networking tcp

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

假设我们正在主机A和服务器B之间进行通信,其侦听套接字已设置为启用了SO_REUSEADDR,并且存在连接C1 =(A,PortA,B,ListenPort),它现在处于TIME_WAIT状态(来自服务器B&#39) ; s观点)。

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

2 个答案:

答案 0 :(得分:1)

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

答案 1 :(得分:-1)

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

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