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

三次握手

首先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分钟)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值