【TCP】四次挥手(最强详解!!通俗易懂!!)

目录

想要了解三次握手的话可以参考我的另外一篇博客

首先来了解一下FIN和ACK

FIN

ACK

接着我们再来具体的了解TCP四次挥手过程

转换为最最通俗理解方法:


想要了解三次握手的话可以参考我的另外一篇博客

【TCP】三次握手(最强详解!!通俗易懂!!)_是瑞穗的猫啊的博客-CSDN博客

首先来了解一下FIN和ACK


FIN和ACK就是两个用于关闭连接过程中的两个信号量


FIN

FIN代表的就是结束的意思,发起了一个关闭的信号

  • 可以将FIN视为“告别”的信号,用于开始关闭TCP连接的过程。
  • 当一方决定关闭连接时,它会发送一个带有FIN标志的包给对方,表示自己不会再发送数据。
  • 发送FIN包的一方仍然可以接收数据,但不能再发送数据给对方。
  • FIN包中的序列号字段指示发送者发送完数据后的下一个序列号。

ACK

ACK和三次握手过程中的一样,也是代表了确认的标志

  • 在TCP通信中,ACK用于确认已收到的数据或请求。
  • 当一方接收到带有FIN标志的包时,需要向对方回复一个带有ACK标志的包,表示已成功接收到了FIN包。
  • 这个ACK包中的确认号字段设置为接收到的FIN包的序列号加1,表示已经成功接收到了FIN包。

接着我们再来具体的了解TCP四次挥手过程

第一次挥手(A发送FIN):

  • A向B发送一个带有FIN(结束)标志位的包,表示A已经发送完所有数据,并请求关闭连接。
  • A将序列号设为X,此时A不能再向B发送数据。

最开始的时候是连接状态,我们需要将其断开TCP的连接

 

第二次挥手(B发送ACK):

  • B收到A的FIN包后,向A回复一个带有ACK(确认)标志位的包,表示已经收到了A的关闭请求。
  • 确认号字段设置为A的序列号X加1,表示B期望接收到下一个字节的序列号。

第三次挥手(B发送FIN):

  • B发起关闭连接过程,向A发送一个带有FIN标志位的包,表示B已经发送完所有数据,并请求关闭连接。
  • B选择一个随机的序列号Y,并将其放入包的序列号字段,表示B不会再向A发送数据。

第四次挥手(A发送ACK):

  • A收到B的FIN包后,向B回复一个带有ACK标志位的包,表示已经收到了B的关闭请求。
  • 确认号字段设置为B序列号Y加1,表示A期望接收到下一个字节的序列号。

等待2MSL时间后断开连接 

成功断开连接 

转换为最最通俗理解方法:

A:再见,我要关闭了(FIN)

B:我知道了(ACK)

 给 B 一段时间把自己的事情处理完...

B:再见,我要关闭了(FIN)

A:我知道了(ACK)

猜你喜欢

转载自blog.csdn.net/miles067/article/details/132621176