2014-02-08 143 views
1

四路握手连接终止可以简化为三路甚至二路一路。三次握手连接建立可能会扩展到四路吗?TCP四次握手

SYN=> 
<=ACK 
<=SYN 
ACK=> 

回答

4

鉴于SYN和ACK的语义,应该可以在不同的数据包中发送SYN + ACK,并且延迟握手。例如。客户端发送一个SYN,服务器回复一个ACK来确认客户端是否希望新建一个连接,但是它没有给出希望。稍后,服务器发送SYN并从客户端获取匹配的ACK,并建立连接。但是我怀疑有人以这种方式建立连接,也许有些操作系统会嘲讽它。

但是,还有一种四路握手的情况,但是具有不同的数据包排序。如果双方都试图同时与另一方建立连接,例如可能会发生这种情况。都向对方发送一个SYN,并获得一个ACK。它在RFC 793(TCP)部分3.4中进行了描述。但我怀疑你会看到这样的握手,因为它不适合典型的客户端 - 服务器场景,其中一端在等待连接,另一端在连接。

编辑:您设想的握手存在,它被称为“分手握手”。见http://hackmageddon.com/2011/04/17/tcp-split-handshake-attack-explained/。而且就像我预料的那样,它没有得到普遍的支持。

+0

“鉴于语义...它应该是可能的”我不确定你是否证明了基于你的RFC知识或只是假设它的观点。 – SerG

+2

ACK的语义只是为了确认接收到数据,SYN的语义只是要求连接。两个标志彼此正交,并且在一起使用时没有特殊含义,类似于FIN和ACK,所以它们应该一起发送还是分开发送都不重要。 –