加载中...
TCP 和 UDP 是传输层的两大支柱。TCP 提供可靠、有序、面向连接的数据传输;UDP 轻量、无连接、快,但不保证可靠性。选择哪个取决于应用对可靠性、延迟和控制权的需求。

| TCP 标准 | RFC 793(1981 年) |
| UDP 标准 | RFC 768(1980 年) |
| 基于 UDP 的新协议 | QUIC(HTTP/3,RFC 9000) |
TCP 的可靠性来自三次握手建立连接(SYN→SYN-ACK→ACK)、序号和确认(保证有序、无重复)、超时重传(丢包自动重发)、流量控制(接收方窗口限制发送速率)和拥塞控制(感知网络拥塞自动降速)。这些机制共同保证了数据完整到达——但每一项都有延迟代价。
四次挥手(FIN→ACK→FIN→ACK)优雅地关闭连接,TIME_WAIT 状态等待 2 倍 MSL(最大报文生存时间)确保对方收到最后的 ACK。高并发服务器常遇到大量 TIME_WAIT 连接占用端口的问题,可通过 SO_REUSEADDR 和调整内核参数缓解。[1]
UDP 没有连接状态,也不重传,发出去的包管不着对方有没有收到。这在实时音视频通话场景中反而是优点:一帧画面丢了,补重传没意义(已经过时了),宁可跳帧继续播。Zoom、WebRTC、游戏(FPS)都用 UDP 做实时数据传输。
DNS 查询用 UDP(响应小,一包搞定,失败直接重试比 TCP 握手快);QUIC 协议(HTTP/3 的传输基础)也基于 UDP,在 UDP 上自己实现了可靠传输和拥塞控制,避开了 TCP 的队头阻塞,同时保留了 UDP 的灵活性。这是近年来最重要的传输层创新之一。

| TCP 标准 | RFC 793(1981 年) |
| UDP 标准 | RFC 768(1980 年) |
| 基于 UDP 的新协议 | QUIC(HTTP/3,RFC 9000) |
登录 后参与讨论
暂无讨论,来发表第一条评论吧