跳至主要內容

TCP为什么需要三次握手和四次挥手

XXXWeii其他2022年3月6日其他大约 4 分钟约 1153 字...

TCP三次握手和四次挥手
TCP三次握手和四次挥手

一、三次握手


三次握手(Three-way Handshake)其实就是指建立一个 TCP 连接时,需要客户端和服务器总共发送 3 个包

主要作用就是为了确认双方的接收能力和发送能力是否正常、指定自己的初始化序列号为后面的可靠性传送做准备

过程如下:

TCP三次握手
TCP三次握手

上述每一次握手的作用如下:

通过三次握手,就能确定双方的接收和发送能力是正常的。之后就可以正常通信了

为什么不是两次握手?

如果是两次握手,发送端可以确定自己发送的信息能对方能收到,也能确定对方发的包自己能收到,但接收端只能确定对方发的包自己能收到 无法确定自己发的包对方能收到

并且两次握手的话, 客户端有可能因为网络阻塞等原因会发送多个请求报文,延时到达的请求又会与服务器建立连接,浪费掉许多服务器的资源

二、四次挥手


tcp终止一个连接,需要经过四次挥手

过程如下:

TCP四次挥手
TCP四次挥手

四次挥手原因

服务端在收到客户端断开连接 Fin 报文后,并不会立即关闭连接,而是先发送一个 ACK 包先告诉客户端收到关闭连接的请求,只有当服务器的所有报文发送完毕之后,才发送 FIN 报文断开连接,因此需要四次挥手

总结


一个完整的三次握手四次挥手如下图所示:

TCP三次握手和四次挥手
TCP三次握手和四次挥手
评论
  • 按正序
  • 按倒序
  • 按热度
Powered by Waline v2.15.5