美文网首页
为什么TCP建立连接需要三次握手,断开却需要四次挥手

为什么TCP建立连接需要三次握手,断开却需要四次挥手

作者: lee_zhou_iOS开发者 | 来源:发表于2021-03-16 17:50 被阅读0次

参考:https://baijiahao.baidu.com/s?id=1654225744653405133&wfr=spider&for=pc

1. 三次握手

d8f9d72a6059252d20d93b0a6645fb3e59b5b9d2.jpg
  1. Client发送Flag为SYN,seq为x。表示需要建立连接,server接受到请求
  2. Server发送Flag为SYN以及ACK,seq为y。ack=x+1(表示回复的是1) 表示 确认1的请求,且同意建立连接
  3. Client发送Flag为ACK,seq=x+1,ack=y+1(表示回复的是2)表示 收到2的同意建立连接的消息

mark: seq是两端各自增长,请勿搞混。ack会依照回复的哪个seq进行增长。

此时建立连接
具体的Flag,请参考TCP报文格式。


64380cd7912397ddb480a4110c5c4ab2d1a28709.jpg

其中:

其中比较重要的字段有:
(1)序号(sequence number):Seq序号,占32位,用来标识从TCP源端向目的端发送的字节流,发起方发送数据时对此进行标记。
(2)确认号(acknowledgement number):Ack序号,占32位,只有ACK标志位为1时,确认序号字段才有效,Ack=Seq+1。
(3)标志位(Flags):共6个,即URG、ACK、PSH、RST、SYN、FIN等。具体含义如下:
URG:紧急指针(urgent pointer)有效。
ACK:确认序号有效。
PSH:接收方应该尽快将这个报文交给应用层。
RST:重置连接。
SYN:发起一个新连接。
FIN:释放一个连接。

需要注意的是:
不要将确认序号Ack与标志位中的ACK搞混了。
确认方Ack=发起方Seq+1,两端配对。


2. 四次挥手

48540923dd54564e5260495ce0006487d0584fb6.jpg
  1. Client发送Flag为FIN,以及seq为u,告诉Server 请求断开链接w
  2. Server回应Flag为ACK,seq=v,告诉Client 我收到了你的断开请求
  3. Server在做好断开准备后,继续向Client发送信息,Flag为FIN,seq为w,ack=u+1 表示我已经准备好断开了
  4. Client收到后,回复Server消息Flag为ACK,seq=u+1,ack=w+1 表示我已经知晓你要断开了

为什么三次握手,确需要四次挥手?

我们从结果看,问题出来第二次握手,Flag同时为SYN和ACK,一次性确认第一次握手,以及同意建立链接两个事情。
而挥手缺把这里给拆成了两个消息。

因为建立链接的时候,Server是无需做任何准备,可以直接开始建立链接。
而断开链接时候,因为TCP是全双工的,收到断开请求,又可能还在向Client发送数据等,所以Server需要进行处理,以及释放资源等,并不能立刻进行断开。

相关文章

  • 三次握手简单理解

    三次握手 四次挥手 建立TCP连接需要三次握手, 而断开连接需要执行四次挥手. 信号 SYN 同步 ASK 确认 ...

  • TCP10问

    1.TCP建立连接时需要几次握手, 断开连接需要几次握手? TCP建立连接需要三次握手, 断开连接要四次握手。现有...

  • 网络通信

    Tcp通信原理了解吗? Tcp连接需要进行三次握手,断开需要四次挥手。 为什么TCP连接需要三次握手分开需要四次握...

  • Alamofire前奏之TCP三握四挥

    建立TCP需要三次握手才能建立,而断开连接则需要四次挥手。 一、TCP三次握手? TCP有6种标识:SYN(建立联...

  • Alamofire -- TCP三握四挥理解(转载)

    建立TCP需要三次握手才能建立,而断开连接则需要四次挥手。 一、TCP三次握手? TCP有6种标识:SYN(建立联...

  • 知识点总结1-计算机网络

    1.TCP的三次握手和四次握手 建立TCP的话,需要三次握手才能建立,而断开连接则需要四次挥手 三次握手:通俗描述...

  • 漫谈TCP三次握手和四次挥手

    建立TCP需要三次握手才能建立,而断开连接则需要四次握手。那么为什么是三次握手和四次挥手呢?举个栗子:有两个神秘人...

  • TCP与UDP的区别

    TCP:面向有连接,建立连接需要三次握手,断开连接需要四次挥手,报头至少需要20字节,TCP无边界。 UDP:面向...

  • 三次握手和四次挥手

    三次握手是TCP建立连接时进行的,四次挥手是TCP断开连接是进行的,要弄明白三次握手和四次挥手,需要了解TCP的协...

  • TCP三次握手和四次挥手以及缺陷

    建立TCP需要三次握手才能建立,而断开连接则需要四次握手。整个过程如下图所示: 1、TCP连接建立——三次握手 几...

网友评论

      本文标题:为什么TCP建立连接需要三次握手,断开却需要四次挥手

      本文链接:https://www.haomeiwen.com/subject/peidcltx.html