TCP四次挥手

一、TCP四次挥手的例子

ee9f838a670c94a196628c558628ef12.png

男生女生建立恋爱关系,一段时间后,他们要分手了。

1.男生:请求分手:我想跟你分手了,可以么?

2.女生收到了消息,发一个确认消息:我收到了你的消息,我同意跟你分手。

3.女生还要继续发一个消息,请求分手:我也想跟你分手。

4.男生确认消息:我也收到分手消息,就分手。

这样他们两个之间就没有什么关系。这样一个过程同样像极了TCP要断开连接的过程。

二、TCP四次挥手的过程

e536b7816e0373465cfe4a3c431d2473.png

客户端和服务端正在进行消息的发送。直到有一方消息发送完毕,发一个FIN包,表示我的报文发送完毕了。我想释放连接,主动发了一个释放连接的请求。

客户端向服务器端主动发了一个释放连接的请求:标志位FIN=1;seq=n(这几个标志位里面哪个位置会被标志为1呢?要发一个FIN包,FIN位要被标记为1。每个包都有序号,这个包的序号是seq=n,请求发给了服务器。)

发给服务器后,服务器回复一个确认包,确认消息:标志位ACK=1;ack(确认号)=n+1;(n指的是上面收到包的序号。)

我收到了你这个释放连接的请求,我也同意。我也要发一个主动请求释放连接的报文:标志位FIN=1;seq=m

客户端要进行一个确认消息:标志位ACK=1;ack(确认号)=m+1(ACK位要置1。这个确认号是对要求请求释放连接的一个确认,所以确认号等于上一个包的序号加一。)

TCP四次挥手的过程就完成了。

三、TCP四次挥手的状态

03b50ec18c103cf0d8c26edf2fbec805.png

1.刚开始是建立连接的状态。发送报文,直到客户端发送完毕了想释放连接。所以发了个FIN包过去给服务端。

2.客户端就进入等待对方给我一个确认的状态,服务端收到FIN之后给它进行了一个回应。发送了一个ack的确认包。发完确认包,就进入已经知道这个连接应该会被断开的状态,就是等待连接关闭的一个状态。

3.客户端再次进入等待服务端给我发FIN包。服务端发完ack和FIN,也要释放连接。告诉客户端之后,就进入最后等待的时间。最后等待客户端给我发确认包。

4.客户端收到了服务器发的FIN之后,就会发一个ack包回去,之后自己就进入等待一定的时间之后再去关闭。服务器这边一旦收到客户端的确认消息,立马进入关闭状态。

5.客户端这边发完ack之后,等待一定的时间,确认服务器这边已经收到我的消息并且关闭之后,我再去关闭就可以了。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

清菡软件测试

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值