首页 > 其他 > 详细

关于3次握手4次挥手总结

时间:2020-07-08 14:20:19      阅读:58      评论:0      收藏:0      [点我收藏+]

一.3次握手

第一次:客户端向服务端发送请求

syn=1  seq=x

第二次:服务端回应客户端请求

syn=1 ACK=1 ack=x+1 seq=y

第三次:客户端确认连接服务器

syn=1 ACK=1 ack=y+1 seq=x+1

技术分享图片

 

 

 

二.4次分手

第一次:客户端向服务端发送分手请求

Fin=1 seq=x

第二次:服务器回应分手请求

ACK=1 ack=x+1 seq=y

第三次:服务器处理完剩余数据回应分手请求

FIN =1 ACK=1 ack=x+1 seq=z

第四次:客户端确认分手

FIN=1 ACK=1 ack=z+1 seq=x+1

 技术分享图片

 

 

 

 

 

 

为什么“握手”是三次,“挥手”却要四次?

TCP建立连接时之所以只需要"三次握手",是因为在第二次"握手"过程中,服务器端发送给客户端的TCP报文是以SYN与ACK作为标志位的。SYN是请求连接标志,表示服务器端同意建立连接;ACK是确认报文,表示告诉客户端,服务器端收到了它的请求报文。

即SYN建立连接报文与ACK确认接收报文是在同一次"握手"当中传输的,所以"三次握手"不多也不少,正好让双方明确彼此信息互通。

TCP释放连接时之所以需要“四次挥手”,是因为FIN释放连接报文与ACK确认接收报文是分别由第二次和第三次"握手"传输的。为何建立连接时一起传输,释放连接时却要分开传输?

建立连接时,被动方服务器端结束CLOSED阶段进入“握手”阶段并不需要任何准备,可以直接返回SYN和ACK报文,开始建立连接。释放连接时,被动方服务器,突然收到主动方客户端释放连接的请求时并不能立即释放连接,因为还有必要的数据需要处理,所以服务器先返回ACK确认收到报文,经过CLOSE-WAIT阶段准备好释放连接之后,才能返回FIN释放连接报文。

所以是“三次握手”,“四次挥手”。

 

关于3次握手4次挥手总结

原文:https://www.cnblogs.com/kyooo/p/13266423.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!