TCP三次握手四次挥手(幽默版)

三次握手:


假设你是一只鸟,你要与另一只鸟进行交流。(你是客户端)

1.首先你会问候:“你好,我是一只鸟,你可以听到我说话吗?”(一次会话)

2.另一只鸟回答:“是的,我可以听到你说话,我也是一只鸟。”(两次会话)

3.你再说:“非常好,我想我们可以开始交流了。”(三次会话)



正式的回答:

计算机网络中三次握手是利用TCP协议确保通信双方建立可靠连接的过程。它的具体步骤如下:

第一次握手(SYN发送):客户端向服务端发送一个SYN(Synchronize Sequence Numbers,同步序列号)标志位,要求建立连接并告知服务端自己的初始序列号(ISN)。

第二次握手(SYN-ACK回应):服务端接收到客户端的SYN标志位后,返回一个SYN-ACK(Synchronize-Acknowledgment,同步确认)标志位,表示同意建立连接并告知自己的初始序列号。

第三次握手(ACK发送):客户端接收到服务端的SYN-ACK标志位后,向服务端发送一个ACK(Acknowledgement,确认)标志位,表示已经接收到服务端的SYN-ACK,连接成功建立。

这样,在第三次握手的过程中,客户端和服务端之间就可以互相确认对方的状态,建立起可靠的连接,从而进行数据传输和通信。如果任何一方在这个三次握手过程中出错,连接就会失败,双方需要重新发起握手连接。


四次挥手:

类比男女分手,男生说要分手(第一次挥手),女生同意并表示自己也要分手(第二次挥手),男生收到女生的消息后表示自己也接受分手(第三次挥手),女生收到消息后双方分手结束(第四次挥手)。



1.  初始状态:Client和Server建立连接,Client发送FIN报文,表示要关闭连接。
2.  第一次挥手:Server收到FIN报文后,发送ACK报文,表示已经收到Client的请求,并告诉Client自己也要关闭连接。
3.  第二次挥手:Server发送FIN报文,表示自己也准备好关闭连接了。
4.  第三次挥手:Client收到Server的FIN报文后,发送ACK报文,表示已经收到Server的请求,并告诉Server自己也准备好关闭连接。
5.  状态结束:Server收到ACK报文后,双方断开连接。


为什么 TIME_WAIT 等待的时间是 2MSL?

主要原因是为了保证客户端发送那个的第一个ACK报文能到到服务器,因为这个ACK报文可能丢失,并且2MSL是任何报文在网络上存在的最长时间,超过这个时间报文将被丢弃,这样新的连接中不会出现旧连接的请求报文。

屏幕前的你学会了吗?

猜你喜欢

转载自blog.csdn.net/m0_62600503/article/details/130892048