tcp/ip三次挥手? YES

正常情况下的四次挥手:
一、客户端:服务器在嘛?我想要断开连接?

Client将FIN置为1,序号seq=u,发送给Server,进入FIN_WAIT_1状态;

二、服务器:在的,但是我这边还有数据没传送完,你等我下

Server收到后,将ACK置为1,ack=u+1,响应给Client,进入CLOSE_WAIT状态;Client收到响应后,进入FIN_WAIT_2状态;

三、服务器:客户端好了,我数据传输完成了,你可以彻底关闭连接离开我了

Server在结束所有数据传输后,将Fin置为1,seq=w,发送给Client,进入LAST_ACK状态;

四、客户端:好的服务器,我走啦

Client收到后,将ACK置为1,ack=w+1,响应给Server,进入TIME_WAIT状态,等待2MSL后,进入CLOSED状态 Server收到后,进入CLOSED状态

在这里插入图片描述
![在这里插入图片描述](https://img-blog.csdnimg.cn/7b1beb3823e74560a8345e92719785c6.png
访问我的服务器的三次挥手
在这里插入图片描述
这边相比较于上面的四次挥手,这边少了一次ack;将第二次和第三次进行合并;

一、客户端:服务器在嘛?我想要断开连接?

二、服务器:在的,我这边也没有数据要传了,你可以直接关闭了

三、客户端:好的服务器,我走啦

原因:
在TCP/IP协议族翻书翻到,TCP连接终止时有两种选择:三次挥手和具有半关闭选项的四次挥手。 三次挥手:客户机发送FIN+ACK->服务器接受并发送FIN+ACK标记位的包->客户机发送ACK确认包,完成连接终止,我的测试服务器就是这种情况,而抓的百度数据包则是半关闭选项的四次挥手。

三次挥手:当一方关闭连接,另外一方没有数据发送时,马上关闭连接,也就将第二步的ack与第三步的fin合并为一步了,这个优化在RFC793 3.5节有讲,从理论上也确实是这样,之所以有四次挥手,是因为第二次和第三次中间服务端还需要继续发送数据,如果没有数据需要发送,就可以将这两次进行合并。

话外:time_wait是主动发起断开连接的一方的状态,2MSL等待时间,存在的原因:
1、为了可以处理延迟达到的请求。
2、防止发送ack丢失,可以保证ack的重新发送。

微信公众号:
少年的志向,不应该是房子,他们应该伏案疾书,或为心中的梦想而挥洒汗水,畅想着自己未来光明的人生,少年的梦想,也不应该是生活,他们应该想要集齐七颗龙珠,或者幻想着拥有一颗皮卡丘。
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值