简介
TCP(Transmission Control Protocol,传输控制协议) 是一种面向连接、可靠传输、基于字节流的传输层通信协议,由 RFC 793 定义。
三次握手(Three-Way Handshake)
TCP 建立连接时,客户端与服务器之间需要进行三次交互,以确认双方的发送与接收能力正常。
- 第一次握手 客户端发送一个SYN(同步序列编号)包,随机初始化一个序列号
seq = s,进入 SYN_SENT 状态,等待服务器确认。 - 第二次握手 服务器收到 SYN 包后,响应一个 SYN + ACK 包。
- SYN 置1,ACK 置1
ack = s + 1,随机产生seq = k服务器进入 SYN_RCVD 状态。
- 第三次握手 客户端收到确认包后,验证
ack == s + 1,确认无误后,回复一个ACK包:- ACK 置1,
ack = k + 1双方进入 ESTABLISHED 状态,连接建立成功。
- ACK 置1,
四次挥手(Four-Way Wavehand)
TCP 断开连接时,需要四次交互来保证双方都能优雅地关闭连接。
- 第一次挥手 客户端发送一个 FIN 包,表示不再发送数据,但仍可接收,进入 FIN_WAIT_1 状态。
- 第二次挥手 服务器收到 FIN 后,发送一个 ACK 包,确认序号为收到序号 +1,服务器进入 CLOSE_WAIT 状态。
- 第三次挥手 服务器准备好关闭连接后,发送一个 FIN 包,进入 LAST_ACK 状态。
- 第四次挥手 客户端收到 FIN 后,进入 TIME_WAIT 状态,并发送一个 ACK 确认包,确认序号为收到序号 +1。 服务器收到 ACK 后,连接彻底关闭,进入 CLOSED 状态。
拥塞控制(Congestion Control)
拥塞指的是网络中传输的数据量过大,导致链路资源紧张、数据丢失或传输延迟,严重时甚至引发通信死锁。
为了避免或减轻拥塞,TCP 引入了多种拥塞控制算法,常见的有:
- Tahoe、Reno、NewReno
- Vegas、Hybla
- BIC、CUBIC
- SACK(Selective Acknowledgment)
- Westwood、PRR
- BBR(Bottleneck Bandwidth and Round-trip propagation time)
不同算法在探测丢包、控制发送速率、优化传输性能方面各有特点,适用于不同的网络环境。

Comments NOTHING