ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

三次握手和四次挥手(个人理解)

2021-11-20 15:02:25  阅读:145  来源: 互联网

标签:挥手 ACK 报文 Server 发送 四次 Client FIN 握手


三次握手

首先Client端发送连接请求报文,Server段接受连接后回复ACK报文,并为这次连接分配资源。Client端接收到ACK报文后也向Server段发生ACK报文,并分配资源,这样TCP连接就建立了。

 前两次确定客户端的收发数据可以正常使用;

第一次确定服务器可以正常收数据;

第三次可以确定第二次成功发送数据,即可以正常发数据;


四次挥手

【注意】中断连接端可以是Client端,也可以是Server端。

 

第一次挥手:Client端主动断开连接,并发送一个包含FIN=1,SEQ=u(等于前面已经传送过来的数据的最后一个字节的序号加1,因为TCP协议规定FIN报文段即使不携带数据,也要消耗一个序号)的请求断开报文,发送完后进入FIN-WAIT-1状态;
第二次挥手:Server端收到了断开请求报文,便发送一个包含ACK=u+1,SEQ=z的确认报文,发送完后进入CLOSE-WAIT状态。Client端收到Server端的确认报文后,Client端进入FIN-WAIT-2状态,继续接受Server端发送的最后的报文;
第三次挥手:等所有的数据传送完毕后,Server端发送一个包含FIN=1,SEQ=w,ACK=u+1的连接断开报文,此时Server端进入LAST-ACK状态。
第四次挥手:Client端收到断开连接报文后,必须要发送一个包含ACK=w+1,SEQ=u+1的确认断开报文,此时Client端进入TIME-WAIT状态,Server端进入CLOSED状态,等待2MSL(最长报文寿命)时间后,Server端进入CLOSED状态,双方正式断开连接。

在这里插入图片描述

1、客户端请求中断,发送FIN,服务器接收到FIN,意为:客户端无数据要发送,但服务器没有发送完,可以继续发送,不用关闭socket,先发送ACK;

2、服务器发送ACK,意为:中断请求接收到了,但是中断没有准备好,继续等待;客户端接收到ACK,进入FIN_WAIT状态,等待服务器的消息;

3、服务器准备好后,发送FIN,意为:服务器端数据发送完成,可以中断;(正常的话服务器关闭)

4、客户端发送ACK,用于判断服务器是否正常关闭,若在2MSL后,没有接到来自服务器的返回,则认为服务器正常关闭,客户端关闭;(2MSL的MSL有30秒,1分钟,2分钟)

标签:挥手,ACK,报文,Server,发送,四次,Client,FIN,握手
来源: https://blog.csdn.net/wuxiaoze_/article/details/121439051

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有