首先来了解一下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头部的序列号字段。
- 客户端还设置了窗口大小(用于流量控制)等其他参数。
第二次握手 (SYN+ACK):
- 服务器接收到客户端发来的SYN包后,会回复一个带有 SYN/ACK 标志的包,表示确认收到客户端的请求,并同意建立连接。
- 服务器也会选择一个随机的初始序列号作为自己的起始序列号,并将该值放入TCP头部的序列号字段。
- 服务器还会设置窗口大小和其他参数,并将确认号字段设置为客户端的初始序列号加1表示接收到了SYN包。
第三次握手 (ACK):
- 客户端收到服务器发来的SYN/ACK包后,会向服务器发送一个带有 ACK(确认)标志的包,表示确认服务器的同意,并告知服务器客户端已经准备好发送数据。
- 在这个包中,客户端会将确认号字段设置为服务器的初始序列号加1,表示接收到了SYN/ACK包。
- 服务器收到ACK包后,会确认客户端的接收能力和连接状态。
- 从此时起,TCP连接建立完成,双方可以开始进行数据传输。
最终,TCP连接成功建立
再换一种最最通俗的说法!
A:我准备好了(SYN)
B:我知道了(ACK),我也准备好了(SYN)
A:我知道了(ACK)
A 与 B 各自在内存中维护着自己的状态变量,三次握手之后,双方的状态都变成了连接已建立(ESTABLISHED)。文章来源:https://www.toymoban.com/news/detail-774296.html
最后,想要了解四次挥手的话可以参考我的另外一篇博客
【TCP】四次挥手(最强详解!!通俗易懂!!)_是瑞穗的猫啊的博客-CSDN博客文章来源地址https://www.toymoban.com/news/detail-774296.html
到了这里,关于【TCP】三次握手(最强详解!!通俗易懂!!)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!