详解TCP的三次握手

TCP(三次握手)是指在建立一个可靠的传输控制协议 (TCP) 连接时,客户端和服务器之间的三步交互过程。这个过程的主要目的是确保连接是可靠的、双方的发送与接收能力是正常的,并且可以开始数据传输。下面是对每个步骤的详细解释:

1. 第一次握手:客户端发送 SYN

过程:客户端(A)向服务器(B)发送一个同步报文段(SYN,Synchronize Sequence Number),表示它想要与服务器建立连接。

目的:通知服务器客户端打算建立连接,同时告诉服务器一个初始的序列号(Sequence Number,简写为 Seq),用于后续的数据传输中排序数据包。

报文结构:在这个报文中,SYN 标志位置为 1,Seq 设置为一个随机生成的初始序列号,称为 `Seq = x`。注意,此时客户端进入 `SYN-SENT` 状态,等待服务器响应。

2. 第二次握手:服务器响应 SYN-ACK

-过程:服务器(B)接收到客户端的 SYN 报文后,知道客户端请求建立连接。它会发送一个确认报文(SYN + ACK)给客户端,用来确认已收到客户端的 SYN 请求。

目的:

  1. 通过 SYN 确认双方可以进行通信,服务器也生成一个自己的初始序列号,准备建立连接。

  2. ACK 用来确认已经收到客户端的初始序列号,并告知客户端服务器可以正常通信。

报文结构:

SYN 标志位也设置为 1,因为服务器也需要同步自己的初始序列号给客户端。

ACK 标志位设置为 1,表示服务器确认了客户端的 SYN 报文。

服务器的报文会包含 `Seq = y`(服务器自己的初始序列号)和 `ACK = x + 1`(客户端的序列号加 1,表示已经收到了客户端的 SYN)。

状态:服务器进入 `SYN-RECEIVED` 状态,等待客户端的最终确认。

3. 第三次握手:客户端确认 ACK

过程:客户端接收到服务器的 SYN + ACK 报文后,确认服务器的响应有效,接下来客户端会发送一个纯 ACK(确认)报文给服务器,表示握手成功。

目的:客户端通过 ACK 确认了服务器的序列号,同时通知服务器连接建立完成,双方可以进行数据传输了。

报文结构:

ACK 标志位设置为 1,表示确认已经收到了服务器的 SYN。

报文中的序列号为 `Seq = x + 1`(客户端自己的序列号),`ACK = y + 1`(确认服务器的序列号加 1)。

状态:

客户端在发送完这个 ACK 报文后,进入 `ESTABLISHED` 状态,连接正式建立,接下来可以进行数据传输。

服务器接收到 ACK 报文后,也进入 `ESTABLISHED` 状态,连接建立完成。

三次握手的作用

  1. 确认双方的接收和发送能力**:三次握手的每次消息传递都确保了双方都能接收和发送数据。

  2. 防止旧连接请求的干扰**:三次握手可以防止旧的重复连接请求重新建立连接,从而保证了连接的唯一性和正确性。
    为什么需要三次握手,而不是两次?

两次握手不能保证双方的接收能力。例如,假设只有两次握手:

客户端发送一个 SYN 报文,服务器响应 SYN + ACK,客户端就认为连接建立了。但服务器可能由于网络原因没有收到客户端的 ACK,导致服务器无法确定客户端是否准备好接收数据。

三次握手中的第三步(客户端确认 ACK),确保了服务器能收到客户端的确认消息,使得双方都明确了连接状态,避免潜在的问题。

总结

第一次握手**:客户端发送 SYN,表示想建立连接,并发送自己的序列号。

第二次握手**:服务器发送 SYN + ACK,确认收到客户端请求,并发送自己的序列号和对客户端的确认号。

第三次握手**:客户端发送 ACK,确认收到服务器的序列号,并对连接的建立做最终确认。

这样,通过三次握手,TCP 连接才能可靠地建立,接下来才能进行数据传输。

相关推荐
其实防守也摸鱼6 小时前
CTF密码学综合教学指南--第五章
开发语言·网络·笔记·python·安全·网络安全·密码学
不会敲代码17 小时前
TCP/IP 与前端性能:从数据包到首次渲染的底层逻辑
前端·tcp/ip
S1998_1997111609•X7 小时前
论mysql国盾shell-sfa犯罪行为集团下的分项工程及反向注入原理尐深度纳米算法下的鐌檵鄐鉎行为
网络·数据库·网络协议·百度·开闭原则
AI精钢8 小时前
AI Agent 从上线到删库跑路始末
网络·人工智能·云原生·aigc
笨笨饿9 小时前
69_如何给自己手搓一个串口
linux·c语言·网络·单片机·嵌入式硬件·算法·个人开发
geneculture10 小时前
《智能通信速分多次传输技术(VDMT)》专利文件的全文汉英双语对照版本
服务器·网络·人工智能·融智学的重要应用·哲学与科学统一性·融智时代(杂志)·人机间性
xrui5811 小时前
2026实战:深度解析 Gemini 3.1 镜像站函数调用在自动化运维工单中的应用
linux·服务器·网络
Python私教11 小时前
GenericAgent记忆系统深度解析:四层架构如何让AI拥有永不遗忘的大脑
网络·人工智能·架构
时空系12 小时前
第9篇:成员功能——为结构体添加能力 Rust中文编程
开发语言·网络·rust
@encryption12 小时前
VLAN --- 深度学习
网络