TCP/IP中关于2MSL在何种情形下允许连接

http://blog.chinaunix.net/uid-20767124-id-1849907.html  转载地址如前所示


看第一卷的时候,发现了一个问题,明明说2MSL等待状态下,不能接受新的连接(socket pair被占用的情形),可是后面又举了例子,说了一大通,那就顺便整理一下吧。


上面的读书笔记中说:

    2MSL等待状态下该插口对不能用是针对主动关闭的一方,假如服务端主动关闭,用SO_REUSERADDR重用该端口,如果直接用2MSL的插口对连接客户端,则不会成功;如果客户端用2MSL的插口对的端口来连接服务端,那么将是成功的,虽然该插口对还处于2MSL等待状态。


   于是疑问就来了,既然2MSL等待状态不可用,那就都不可用,为什么还分情况呢?


   后来想了想,是否可以这样理解,服务端主动关闭,那么客户端肯定已经先关闭了,而此时服务端还处在2MSL的TIME_WAIT的状态。此时,调用sock -s -a xxxx首先启动监听进程,后面再由客户端进行连接,应该就可以了。当然,按照RFC937的说明,这些都是不可以的,只不过很多系统都实现了这个功能,只能说有时候标准和实现并不是完全统一的,不过想不出来这么做有什么太大的意义,还造成安全漏洞。当然,肯定有人家的理由,否则怎么那么多都实现了这个功能呢,回头再研究吧。

   今天看书有点看晕了。

你可能感兴趣的:(TCP/IP中关于2MSL在何种情形下允许连接)