第 2 课,共 4 课 · 7 分钟
端口、TCP 和 UDP
为什么一个 IP 地址能同时进行上百场对话,以及为什么其中一些对话会用可靠性换取速度。
IP 地址能把数据包送到正确的设备,但它不会说明该由这台设备上的哪个应用来接收。这是端口的工作:一个告诉你的 Mac 是哪个程序在通信的数字。Cloudflare 学习中心把它比作一栋公寓楼:街道地址(IP)把邮件送到正确的楼栋,门牌号(端口)再把它送到正确的房门口。
一条连接,多扇门
端口让一台计算机能够区分不同种类的流量,即使它们都通过同一条 Wi-Fi 或有线连接抵达。Cloudflare 的解释很直接:“端口让计算机能够轻松区分不同种类的流量:例如电子邮件和网页会走不同的端口,即便二者都是通过同一条互联网连接抵达计算机的。”端口存在于 TCP 和 UDP 的包头中,位于普通 IP 地址之上的一层;一个裸的 IP 数据包本身并没有空间说明它对应哪个端口。
谁可以使用哪个编号
端口号的范围是 0 到 65535,由互联网数字分配机构(IANA)管理谁能获得哪个编号:系统端口(0–1023)只能通过正式审核分配,用户端口或注册端口(1024–49151)可以为特定服务注册,而最上面的范围 49152–65535 则留空供临时使用,例如你的浏览器为一条连接自己这一端所选择的返回地址。
| 端口 | 注册用途 | 通常由什么使用 |
|---|---|---|
| 22 | 安全外壳协议(SSH) | 远程命令行访问 |
| 25 | 简单邮件传输 | 邮件服务器之间发送电子邮件 |
| 53 | 域名服务器 | DNS 查询 |
| 80 | HTTP | 普通的、未加密的网页 |
| 443 | HTTPS | 加密网页 |
TCP:更慢,但不会丢失任何东西
传输控制协议(TCP),在 RFC 9293 中定义,其设计目标就是可靠:它“为应用程序提供可靠、按序的字节流服务”,通过序列号检测丢失的数据包,并重新发送,直到对方确认收到为止。这种可靠性要付出一点时间和开销上的代价,这也是为什么 TCP 适用于那些必须完整、按序抵达的内容:网页、文件下载、电子邮件。
UDP:更快,也愿意承受一点损失
用户数据报协议,在 RFC 768 中描述,采取了相反的取舍:它“为应用程序之间以最少的协议机制发送消息提供了一种途径”。没有握手,不保证顺序,也不会自动重传。Cloudflare 指出,这特别适合“视频播放或 DNS 查询这类对时间敏感的传输”,在这类场景中,丢失一个数据包只是个小瑕疵,而等待重传反而会比直接继续更糟糕。
要点
- 端口是一个数字,告诉设备一个数据包是给哪个应用或服务的;单靠 IP 地址只能识别设备本身。
- IANA 把端口号分为三个区间管理:系统端口(0–1023)、用户/注册端口(1024–49151),以及未分配的动态端口(49152–65535)。
- 常见端口包括 22(SSH)、25(邮件)、53(DNS)、80(HTTP)和 443(HTTPS)。
- TCP(RFC 9293)会检测并重新发送丢失的数据,以实现可靠、按序的传输,但要付出一定的速度代价。
- UDP(RFC 768)为了速度跳过了这些检查,适合视频和 DNS 查询这类对时间敏感的流量。
自我检测
1. 端口解决了单靠 IP 地址无法解决的什么问题?
- 它们告诉网络一个数据包是给设备上哪个应用的 — 正确。
- 它们对连接进行加密
- 它们取代了对 IP 地址的需求
- 它们让 Wi-Fi 更快
IP 地址把数据包路由到一台设备;而携带在 TCP 或 UDP 包头中的端口,则说明该由这台设备上的哪个程序来处理它。
2. 根据 IANA 注册表,HTTPS 注册使用的是哪个端口?
- 21
- 80
- 443 — 正确。
- 8080
IANA 把 443 端口列为“https”,用于基于 TLS/SSL 的 HTTP。80 端口则是普通的、未加密的 HTTP。
3. 为什么 RFC 9293 把 TCP 描述为“可靠、按序”?
- 因为 TCP 能检测丢失的数据并重新发送,并保持数据按发送时的顺序排列 — 正确。
- 因为 TCP 从不使用端口
- 因为 TCP 总是比 UDP 更快
- 因为 TCP 默认会加密一切内容
TCP 通过跟踪序列号来检测数据缺口,重新发送丢失的数据,并按顺序重新组装字节流。
4. 为什么 DNS 查询和视频播放通常使用 UDP 而不是 TCP?
- UDP 更安全
- UDP 用可靠性换取速度,适合那种丢失一个数据包只是个小瑕疵的流量 — 正确。
- TCP 无法使用 53 端口
- UDP 能保证数据包按顺序到达
Cloudflare 指出,UDP 正是因为跳过了 TCP 的握手和重传开销,才特别适合“视频播放或 DNS 查询这类对时间敏感的传输”。
用 FireAI 动手做
在你自己的 Mac 上练习这节课的内容。
来源
- RFC 9293: Transmission Control Protocol (TCP)
- RFC 768: User Datagram Protocol
- IANA: Service Name and Transport Protocol Port Number Registry
- Cloudflare Learning: What is a computer port?
- Cloudflare Learning: What is UDP?
在你的 Mac 上实践
免费试用全部功能 17 天,无需绑定银行卡。