51. TCP三次握手

TCP三次握手

        TCP(Transmission Control Protocol,传输控制协议)的三次握手是TCP建立连接时的一个重要过程,用于确保通信双方能够正确地接收和发送数据。以下是TCP三次握手的详细步骤:

1. 第一次握手:SYN(同步)请求

  • 客户端 发送一个包含SYN标志的TCP报文段给服务器,请求建立连接。这个报文段中,客户端随机选择一个初始序列号(seq=x)。
  • 客户端进入 SYN_SENT 状态,等待服务器的确认。

2. 第二次握手:SYN+ACK(同步+确认)响应

  • 服务器 收到客户端的SYN报文段后,如果同意建立连接,会发送一个包含SYN和ACK标志的TCP报文段给客户端。
    • 服务器确认客户端的SYN(ACK=x+1),表示接收到了客户端的初始序列号。
    • 服务器也随机选择一个初始序列号(seq=y)。
  • 服务器进入 SYN_RECV 状态。

3. 第三次握手:ACK(确认)

  • 客户端 收到服务器的SYN+ACK报文段后,向服务器发送一个包含ACK标志的TCP报文段,表示确认收到了服务器的SYN报文段。
    • 客户端的ACK=y+1,表示接收到了服务器的初始序列号。
  • 客户端和服务器都进入 ESTABLISHED 状态,表示连接已经成功建立。

为什么要三次握手?

  • 防止已失效的连接请求报文段被服务器接收:客户端发送的第一个连接请求报文段可能因为某种原因在网络中滞留,导致延迟到连接释放以后的某个时间才到达服务器。如果是一个已失效的连接请求报文段,服务器端将按已建立连接进行处理,造成错误。通过三次握手,即使出现了旧的请求报文段被延迟并到达的情况,客户端也会忽略这个旧的请求报文段,因为服务器不会为旧的请求报文段发送确认报文段。
  • 同步双方初始序列号:三次握手可以确保通信双方都能够确认对方的初始序列号,从而避免数据包的乱序。

示例

        假设客户端的初始序列号是100,服务器的初始序列号是200,则三次握手的过程可以表示为:

  1. 客户端发送 SYN=1, seq=100
  2. 服务器发送 SYN=1, ACK=101, seq=200
  3. 客户端发送 ACK=201, seq=101
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

MineGi

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值