主题
第四章 传输层:TCP、UDP 与可靠传输
1. 传输层为什么存在:从"主机到主机"到"进程到进程"
网络层的 IP 已经能把分组送到目标主机,但一台主机上同时跑着浏览器、微信、网易云,数据到了主机门口,该进哪扇门?这就是传输层要补的最后一公里:把通信从"主机到主机"细化为"进程到进程"。
实现手段是端口号:16 位整数(0~65535),标记主机上的一个通信端点。发送方把多个应用的数据汇入网络叫复用,接收方按端口号把数据分发给各应用叫分用。一个通信端点由"IP 地址 + 端口号"唯一确定,这个组合就是套接字(Socket)——IP 找到那栋楼,端口找到那扇门。
常用端口必须背下来,选择题直接考:
| 端口 | 协议 | 端口 | 协议 |
|---|---|---|---|
| 20/21 | FTP 数据/控制 | 53 | DNS |
| 22 | SSH | 80 | HTTP |
| 23 | Telnet | 110 | POP3 |
| 25 | SMTP | 443 | HTTPS |
0~1023 是知名端口,留给标准服务;客户端一般使用系统临时分配的高位端口。
传输层只提供两种风格迥异的服务:UDP——几乎什么都不管的"裸奔版",TCP——把可靠性做满的"全险版"。理解二者是本章全部内容。
2. UDP:只加端口号,其余一概不管
UDP(用户数据报协议)在 IP 之上只做最少的两件事:加上端口号实现进程分发,加一个可选的校验和。它的首部只有 8 个字节、4 个字段:源端口、目的端口、长度、校验和。
UDP 的"不作为"清单:不建立连接、不确认、不重传、不排序、不控制发送速度。数据报扔出去就不管了,所以叫"无连接、不可靠"。
但"不作为"恰恰是它的价值:
- 没有建连延迟:想发就发,省掉握手来回。
- 首部小、开销低:8 字节对 TCP 的至少 20 字节。
- 不重传意味着延迟可控:直播丢一帧画面无所谓,等一秒重传反而卡顿。
- 保留报文边界:发三次就是三个独立数据报,不像 TCP 把数据搅成字节流。
典型场景:DNS 查询(一问一答,建连不划算)、音视频通话与直播(宁丢勿等)、DHCP(连 IP 都还没有,谈不上建立连接)。
