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

首先来了解一下SYN和ACK

SYN和ACK就是两个用于握手和确认建立连接的信号量

SYN

就是同步的意思,大概表示的就是发起请求

  • 可以将SYN视为“打招呼”或“发起请求”的信号
  • 在TCP的三次握手过程中,客户端发送一个带有SYN标志的包给服务器,表示客户端请求建立连接。
  • SYN包中包含一个初始序列号(Initial Sequence Number,ISN),用于在数据传输中唯一标识每个字节。
  • 客户端选择一个随机的ISN,并将其放入TCP头部的序列号字段,向服务器发起连接请求。

ACK

为确认的意思,大致表示的是收到消息

  • 可以将ACK视为“收到消息”的信号
  • 在TCP通信中,接收方用ACK标志来确认已经接收到的字节数据。
  • 当接收到SYN包后,服务器会回复一个带有SYN/ACK标志的包给客户端,表示确认收到了客户端的请求,并同意建立连接。
  • 这个包中,服务器选择一个随机的ISN作为自己的初始序列号,并将确认号字段设置为客户端的ISN加1,表示已经成功接收到了SYN包。

然后在具体的看TCP三次握手建立连接的流程

第一次握手 (SYN):

  • 客户端向服务器发送一个带有 SYN(同步)标志的包,表示客户端请求建立连接。
  • 客户端选择一个随机的初始序列号(ISN)作为起始序列号,并将该值放入TCP头部的序列号字段。
  • 客户端还设置了窗口大小(用于流量控制)等其他参数。

【TCP】三次握手(最强详解!!通俗易懂!!)_第1张图片

【TCP】三次握手(最强详解!!通俗易懂!!)_第2张图片

第二次握手 (SYN+ACK):

  • 服务器接收到客户端发来的SYN包后,会回复一个带有 SYN/ACK 标志的包,表示确认收到客户端的请求,并同意建立连接。
  • 服务器也会选择一个随机的初始序列号作为自己的起始序列号,并将该值放入TCP头部的序列号字段。
  • 服务器还会设置窗口大小和其他参数,并将确认号字段设置为客户端的初始序列号加1表示接收到了SYN包。

【TCP】三次握手(最强详解!!通俗易懂!!)_第3张图片

第三次握手 (ACK):

  • 客户端收到服务器发来的SYN/ACK包后,会向服务器发送一个带有 ACK(确认)标志的包,表示确认服务器的同意,并告知服务器客户端已经准备好发送数据。
  • 在这个包中,客户端会将确认号字段设置为服务器的初始序列号加1,表示接收到了SYN/ACK包。
  • 服务器收到ACK包后,会确认客户端的接收能力和连接状态。
  • 从此时起,TCP连接建立完成,双方可以开始进行数据传输。

【TCP】三次握手(最强详解!!通俗易懂!!)_第4张图片

 最终,TCP连接成功建立【TCP】三次握手(最强详解!!通俗易懂!!)_第5张图片

再换一种最最通俗的说法!

A:我准备好了(SYN)

B:我知道了(ACK),我也准备好了(SYN)

A:我知道了(ACK)

        A 与 B 各自在内存中维护着自己的状态变量,三次握手之后,双方的状态都变成了连接已建立(ESTABLISHED)。

最后,想要了解四次挥手的话可以参考我的另外一篇博客

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

你可能感兴趣的:(tcp/ip,网络协议,网络,计算机网络,http,信息与通信)