Q:计算机网络:三次握手
时间: 2025-08-23 11:04:09 浏览: 1
### 三次握手过程详解
TCP(Transmission Control Protocol)是一种面向连接的、可靠的、基于字节流的传输层协议。为了建立一个TCP连接,客户端和服务器之间需要进行三次握手(Three-Way Handshake)。这个过程确保双方都能确认对方的发送和接收能力是正常的,从而建立一个可靠的通信通道。
#### 第一次握手
客户端发送一个SYN(Synchronize)标志位为1的TCP段给服务器,表示请求建立连接。这个TCP段中包含了一个初始序列号(Sequence Number),记作`ISN (Initial Sequence Number)`,用来标识客户端发送的第一个数据字节的序号。此时,客户端进入`SYN_SENT`状态。
```plaintext
Client -> Server: SYN=1, Seq=x
```
#### 第二次握手
服务器接收到SYN段后,会回应一个SYN-ACK(Synchronize-Acknowledge)段。该段包含两个标志位:SYN和ACK(Acknowledge)。SYN标志位为1,表示服务器也想与客户端建立连接;ACK标志位为1,表示确认收到客户端的SYN段。服务器会在ACK段中包含一个确认号(Acknowledgment Number),即客户端的初始序列号加1(`x+1`)。此外,服务器也会发送自己的初始序列号(`ISN`)。此时,服务器进入`SYN_RCVD`状态。
```plaintext
Server -> Client: SYN=1, ACK=1, Seq=y, Ack=x+1
```
#### 第三次握手
客户端收到SYN-ACK段后,会发送一个ACK段作为确认。该段中包含ACK标志位为1,并且确认号为服务器的初始序列号加1(`y+1`)。当服务器接收到这个ACK段后,连接就成功建立,双方可以开始传输数据。此时,客户端和服务器都进入`ESTABLISHED`状态。
```plaintext
Client -> Server: ACK=1, Ack=y+1
```
### 三次握手的必要性
三次握手的主要目的是确保双方的发送和接收能力都是正常的,并且能够协商初始序列号,以避免因网络延迟而导致的重复分组问题。如果只进行两次握手,服务器无法确认客户端是否能够正确接收数据,这会导致连接可能在不可靠的状态下建立[^2]。
通过三次握手,TCP协议能够:
- **确认双方的发送/接收能力正常**:客户端和服务器都确认了对方能够发送和接收数据。
- **协商初始序列号**:确保每个连接的序列号是唯一的,防止历史连接中的序列号干扰新连接。
- **避免资源浪费**:防止由于网络延迟导致的重复连接请求浪费服务器资源。
### 三次握手的本质
三次握手的本质是通过序列号同步和能力协商来建立一个可靠的逻辑连接。每次握手都携带了特定的控制信息,用于确认连接的建立状态和数据传输的准备情况。通过这种方式,TCP能够在不可靠的IP网络上提供可靠的传输服务[^3]。
---
阅读全文
相关推荐


















