Skip to content

入门

基于 HTTP 现代标准 · 核于 2026-06

速查

  • 传输层 = 进程到进程通信(IP 只负责主机到主机);靠 端口(16 位 0-65535)区分应用
  • 端口三段:知名 0-1023 / 注册 1024-49151 / 动态 49152-65535;socket = IP + 端口,TCP 连接由四元组唯一确定
  • UDP:无连接、不保证可靠/有序、8 字节首部——低延迟低开销;用于 DNS、实时音视频、游戏、QUIC
  • TCP:面向连接、可靠、有序、字节流;用于网页、API、文件传输、邮件
  • 三次握手 SYN→SYN+ACK→ACK(同步双向序列号;三次才能确认双向收发能力 + 防历史连接)
  • 四次挥手 FIN→ACK→FIN→ACK(全双工,两方向各自关闭);主动关闭方 TIME_WAIT 等 2MSL
  • 可靠传输:序列号(按字节)+ 累积确认 ACK + 超时重传(RTO)+ 快速重传(3 个重复 ACK)+ SACK
  • 流量控制(rwnd 滑动窗口,护接收方)vs 拥塞控制(cwnd,护网络);发送窗口 = min(rwnd, cwnd)
  • 拥塞四阶段:慢启动(指数)→ 拥塞避免(线性)→ 快重传 → 快恢复;遵循 AIMD(加性增乘性减)
  • 拥塞算法:Reno → CUBIC(Linux 默认)→ BBR(Google,基于带宽时延)
  • TCP 队头阻塞:有序交付的代价——一个段丢失阻塞后面已到达的段;HTTP/2 仍受困,QUIC 用 UDP 绕开

TCP 与 UDP 的分工

传输层在「不可靠的 IP」之上提供两种截然不同的服务,前端按需求二选一:

TCPUDP
连接面向连接(先握手)无连接(直接发)
可靠性可靠、有序、不重复不保证
速度较慢(握手 + 确认 + 拥塞控制)快(无握手、无状态)
首部20~60 字节8 字节
典型应用网页、API、文件、邮件DNS、音视频、游戏、QUIC

一句话选型:要可靠有序选 TCP;要低延迟、能容忍少量丢包选 UDP

为什么需要传输层

IP 只能把数据包送到「某台主机」,但一台主机上跑着浏览器、微信、游戏几十个程序。传输层用端口把数据精确投递到具体进程——这就是「复用」(多个应用共享网络发送)与「分用」(接收方按端口分发)。

TCP 可靠的代价:握手与队头阻塞

TCP 的「可靠有序」不是免费的:

  • 建连要握手:三次握手才能开始传数据(多一个 RTT);HTTPS 还要再叠 TLS 握手。
  • 有序交付有队头阻塞:TCP 保证按序,一个段丢了,后面已经到达的段也得等它重传补齐才能交给应用——这就是 TCP 队头阻塞。HTTP/2 的多路复用解决了应用层队头阻塞,却仍困于这一层,最终催生了基于 UDP 的 QUIC(见「HTTP 演进与性能」叶)。

下面各页逐一展开:先看 传输层与端口·复用分用