ScholarGate
助手

传输层与拥塞控制

传输层将主机到主机的交付扩展到进程到进程的通信,为应用程序提供可靠、有序、拥塞控制的字节流(TCP)或轻量级无连接数据报(UDP),而拥塞控制则调节发送速率,以防止共享网络崩溃。

用 PaperMind 寻找选题即将推出Find papers & topics
Tools & resources
下载幻灯片
Learn & explore
视频即将推出

Definition

传输层是提供在不同主机上运行的应用程序进程之间逻辑通信的协议层,在网络层的主机到主机交付之上增加了多路复用、可靠交付、流量控制和拥塞控制等服务。

Scope

此领域涵盖端到端传输服务:数据到应用程序进程的多路复用和解复用,在不可靠网络上实现可靠数据传输的原理(确认、重传、序列号、滑动窗口),面向连接的传输控制协议和无连接的用户数据报协议,以及拥塞控制的理论与实践。它不包括跨网络的包路由(网络层)和使用传输服务的应用协议(应用层)。

Sub-topics

Core questions

  • 传输层如何通过多路复用和解复用将数据交付给正确的应用程序进程?
  • 如何在不可靠、有损的网络上实现可靠、按序的交付?
  • TCP的连接建立、流量控制和可靠性机制是如何工作的?
  • 应用程序何时应该使用UDP而不是TCP?
  • 拥塞控制如何检测并响应网络过载,同时保持公平性?

Key concepts

  • 多路复用和解复用
  • 端口和套接字
  • 可靠数据传输
  • 滑动窗口、回退N、选择重传
  • TCP三次握手
  • 流量控制
  • 拥塞控制
  • 加性增加/乘性减少(AIMD)
  • 慢启动和拥塞避免
  • 用户数据报协议(UDP)

Key theories

不可靠信道上的可靠数据传输
可靠性是通过确认、重传定时器、序列号和滑动窗口协议(回退N和选择重传)构建的,这些协议在不可靠的底层网络中检测并恢复丢失、重复和乱序。
TCP拥塞控制
TCP根据丢包推断拥塞,并通过加性增加/乘性减少的动态(慢启动、拥塞避免和快速恢复)调整其发送窗口,以探测可用带宽,同时在发生丢包时急剧减速。
无连接与面向连接的传输
UDP提供了一种精简的无连接服务,没有建立、可靠性或拥塞控制,从而最大限度地减少了延迟和开销;而TCP提供了一种面向连接、可靠、拥塞控制的字节流;选择哪种协议是在延迟和控制与保证之间进行权衡。

Clinical relevance

传输层行为塑造了几乎所有网络应用程序的性能:TCP可靠地承载网页、电子邮件和文件传输,而UDP则支持低延迟应用,如DNS、实时语音和视频以及许多游戏。拥塞控制自1980年代末以来一直防止互联网在负载下崩溃,并且CUBIC和BBR等算法以及QUIC等协议的持续研究工作继续调整延迟-吞吐量-公平性之间的平衡。

History

TCP和IP最初是1974年Cerf-Kahn设计中的一个协议,后来被拆分,并增加了UDP(RFC 768,1980)以满足只需要基本数据报服务的应用程序。在早期互联网上发生一系列拥塞崩溃之后,Van Jacobson在1988年的工作引入了慢启动和拥塞避免算法,这些算法至今仍是TCP拥塞控制的基础,并在几十年中演变为Reno、CUBIC和BBR等变体。

Debates

基于丢包、基于延迟和基于模型的拥塞控制
经典的TCP从丢包推断拥塞,这可能导致高带宽、高延迟链路的利用率不足并反应迟钝,从而促使基于延迟和基于模型的算法(如BBR)的出现;当这些算法与基于丢包的算法共存时,关于公平性和可部署性的争论仍在继续。

Key figures

  • Van Jacobson
  • Jon Postel
  • Vinton Cerf
  • Sally Floyd

Related topics

Seminal works

  • kurose2021
  • jacobson1988
  • rfc9293

Frequently asked questions

我何时应该使用UDP而不是TCP?
当低延迟比保证交付更重要,并且您可以容忍或自行处理丢包时,请使用UDP——例如实时语音/视频、DNS查询或游戏。当您需要可靠、有序的交付和内置的拥塞控制时,例如网页、文件传输和电子邮件,请使用TCP。
拥塞控制实际上做了什么?
拥塞控制根据拥塞信号(通常是丢包或延迟)调整发送方向网络注入数据的速度。通过在网络过载时减速并在其他情况下探测备用容量,它使总流量接近网络容量,并大致公平地在流之间共享带宽。

Methods for this concept

Related concepts