TCP协议

GinTvT 发布于 2024-08-01 42 次阅读 网络基础 预计阅读时间: 2 分钟


简介

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 状态,连接建立成功。

四次挥手(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 引入了多种拥塞控制算法,常见的有:

  • TahoeRenoNewReno
  • VegasHybla
  • BICCUBIC
  • SACK(Selective Acknowledgment)
  • WestwoodPRR
  • BBR(Bottleneck Bandwidth and Round-trip propagation time)

不同算法在探测丢包、控制发送速率、优化传输性能方面各有特点,适用于不同的网络环境。

此作者没有提供个人介绍。
最后更新于 2025-04-27