Skip to content

TCP 传输过程?

Posted on:2024年8月14日 at 12:30

TCP(传输控制协议)是一种面向连接的、可靠的传输层协议,主要用于确保数据在网络上的可靠传输。TCP 的传输过程包括多个步骤,从建立连接到数据传输,再到连接终止。下面详细介绍这些过程:

1. 连接建立(Three-Way Handshake)

1.1 客户端发起连接请求

客户端向服务器发送一个 SYN(同步)报文段,表示请求建立连接。报文段中包含一个初始的序列号(ISN)。

SYN (seq=x)

1.2 服务器确认连接请求

服务器收到 SYN 报文段后,发送一个 ACK(确认)和 SYN 报文段给客户端,表示接受连接请求,并为连接分配一个序列号。

SYN (seq=y) + ACK (ack=x+1)

1.3 客户端确认服务器的回应

客户端收到服务器的 SYN+ACK 报文段后,发送一个 ACK 报文段给服务器,表示确认收到服务器的回应。

ACK (ack=y+1)

2. 数据传输

2.1 数据分段

发送方将数据分成适当大小的段,每个段都有一个序列号,用于数据的重组和确认。

2.2 数据传输和确认

2.3 流量控制

TCP 使用流量控制机制(如滑动窗口)来避免接收方的缓冲区溢出。接收方会通知发送方其缓冲区的可用空间,以控制发送速率。

2.4 拥塞控制

TCP 使用拥塞控制机制(如慢启动、拥塞避免、快速重传和快速恢复)来防止网络拥塞,调整数据发送速率。

3. 连接终止(Four-Way Handshake)

3.1 主动关闭连接的端点发送 FIN 报文段

主动关闭连接的端点(通常是客户端)发送一个 FIN(结束)报文段,表示不再发送数据。

FIN (seq=u)

3.2 对方端点确认 FIN

接收方收到 FIN 报文段后,发送一个 ACK 报文段,确认收到 FIN。

ACK (ack=u+1)

3.3 对方端点也发送 FIN 报文段

接收方(现在是主动关闭连接的端点)发送一个 FIN 报文段,表示也不再发送数据。

FIN (seq=v)

3.4 主动关闭端点确认 FIN

主动关闭端点收到 FIN 报文段后,发送一个 ACK 报文段,确认收到 FIN。

ACK (ack=v+1)
原文转自:https://fe.ecool.fun/topic/27703359-5f71-4ce6-b14b-1ac577cda21b