【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头部的序列号字段。
  • 客户端还设置了窗口大小(用于流量控制)等其他参数。

第二次握手 (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)。

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

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

  • 7
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值