跳转至

第3章 传输层

网络层把数据尽力送到目标主机,传输层进一步回答“交给哪个进程”和“进程希望得到怎样的交付服务”。UDP 提供轻量数据报,TCP 提供面向连接的可靠有序字节流;QUIC 则在 UDP 之上由用户态实现可靠传输、多路复用与安全握手。

本章地图

  • UDP 与 TCP:端口、复用、连接、字节流及适用场景。
  • 可靠传输:校验、序号、确认、定时器和滑动窗口怎样配合。
  • 流量控制与拥塞控制:为什么“别压垮接收方”和“别压垮网络”是两个问题。

两个端到端原则

第一,只有端系统最清楚应用需要什么。IP 核心网络无需为每条 TCP 连接保存完整可靠状态,端点通过确认和重传恢复丢失。

第二,可靠并不等于无限等待。协议必须在吞吐、时延、资源与失败判定间做权衡。实时通话可能宁愿丢掉迟到语音,也不愿等待重传;文件传输则通常要求每个字节最终一致。

学习目标

学完本章应能解释:

  1. 端口如何把 IP 数据报交给正确进程。
  2. TCP 为什么是字节流,应用为何仍需定义消息边界。
  3. 发送方如何判断“该重传了”,以及重复分组为何不能重复交付。
  4. 接收窗口与拥塞窗口分别保护谁。
  5. 高带宽长时延网络为何需要更大的在途数据量。

开始前的自测

TCP 确认丢失后,发送方重传了已被接收的数据。接收方如何避免把同一字节交给应用两次?关键是序号:接收方识别重复序号,只重新确认而不重复交付。