# TCP 与 UDP 的区别

特性UDPTCP
是否连接无连接面向连接
是否可靠不可靠传输,不使用流量控制和拥塞控制可靠传输(数据顺序和正确性),使用流量控制和拥塞控制
传输方式面向报文面向字节流

# TCP 的拥塞控制

  • 慢启动(慢开始)
    • 在开始发送的时候设置 cwnd = 1(cwnd 指的是拥塞窗口)
    • 思路:开始的时候不要发送大量数据,而是先测试一下网络的拥塞程度,由小到大增加拥塞窗口的大小(每次乘 2)。
    • 为了防止 cwnd 增长过大引起网络拥塞,设置一个慢开始门限 (ssthresh 状态变量)
      • 拥塞窗口 < 慢开始门限
      • 拥塞窗口 = 慢开始门限,既可使用慢开始算法,也可以使用线增积减算法
      • 拥塞窗口 > 慢开始门限,使用线增积减算法
  • 线增积减
    • 对拥塞窗口线性增加,和当发生拥塞时对窗口积式减少
    • 无论是在慢开始阶段还是在拥塞避免阶段,只要发送方判断网络出现拥塞,就把慢开始门限设置为出现拥塞时的发送窗口大小的一半。然后把拥塞窗口设置为 1
  • 快速重传
    TCP 发送方每发送一个分段都会启动一个超时计时器,如果没能在特定时间内接收到相应分段的确认,发送方就假设这个分段在网络上丢失了,需要重发。
  • 快速恢复
    当发送方连续收到三个重复确认时,慢启动阈值设为之前拥塞窗口值的一半,和作为新的拥塞窗口值,并跳过慢启动阶段,直接进入拥塞控制阶段。

拥塞控制

# 参考

  • wiki
更新于 阅读次数