• Welcome to the world's largest Chinese hacker forum

    Welcome to the world's largest Chinese hacker forum, our forum registration is open! You can now register for technical communication with us, this is a free and open to the world of the BBS, we founded the purpose for the study of network security, please don't release business of black/grey, or on the BBS posts, to seek help hacker if violations, we will permanently frozen your IP and account, thank you for your cooperation. Hacker attack and defense cracking or network Security

    business please click here: Creation Security  From CNHACKTEAM

为什么要三次握手?我能握两次手吗?


Recommended Posts

两次握手不行,原因如下:

以防止通信双方建立错误的连接;

e0goqzgwxrj6090.jpg

如上图所示,假设客户端开始向服务器发送一条序列号为99的synTCP请求连接消息,但不幸的是这条syn消息由于网络拥塞没有及时到达服务器,然后客户端又向服务器发送了一条序列号为399的SYN请求消息。此时,先前的超时消息刚好到达服务器,服务器确认该消息,从而服务器建立TCP连接。然后,客户端收到了序列号为99的请求消息的确认消息,于是一脸疑惑。但是因为已经进行了两次握手,所以没有办法改变双方建立的TCP连接,从而导致通信双方建立错误的TCP连接。如果是三次握手,那么客户端会对这个错误的确认消息回复一个reset消息,从而防止TCP错误连接的建立;

以由双方确认初始序列号;

双方通过累积确认机制进行可靠通信,所以要确认双方的初始序列号,而两次握手只能确认客户端的初始序列号,无法确认服务器的初始序列号,所以无法建立可靠的TCP连接。

TCP连接是全双工的,两次握手只能建立客户端的发送通道,不能建立服务器端的发送通道。

TCP连接是全双工的。客户端发送SYN消息,服务器确认,这样就可以建立客户端到服务器的发送通道(因为客户端知道服务器可以接收数据),而服务器发送SYN消息给客户端,客户端确认,也会建立服务器到客户端的发送通道,从而建立全双工TCP。

Link to comment
Share on other sites