传输层位于应用层和网络层之间:
- 为应用进程提供端到端的逻辑通信
- 复用和分用(多路复用/多路分解)
- 差错检测
- 可靠传输(TCP)
应用层 ← 进程间通信(端到端)
↓
传输层 ← 端口号、TCP/UDP
↓
网络层 ← 主机间通信(点到点)
| 特性 | 网络层 | 传输层 |
|---|---|---|
| 通信范围 | 主机到主机 | 进程到进程 |
| 协议 | IP | TCP / UDP |
| 可靠性 | 不可靠 | TCP 可靠 |
| 寻址 | IP 地址 | IP 地址 + 端口号 |
| 类型 | 范围 | 说明 |
|---|---|---|
| 熟知端口 | 0~1023 | 分配给重要服务(IANA 管理) |
| 注册端口 | 1024~49151 | 注册给特定应用 |
| 动态端口 | 49152~65535 | 客户端临时使用 |
| 端口 | 协议 | 服务 |
|---|---|---|
| 20 / 21 | TCP | FTP(数据 / 控制) |
| 22 | TCP | SSH |
| 23 | TCP | Telnet |
| 25 | TCP | SMTP |
| 53 | UDP / TCP | DNS |
| 67 / 68 | UDP | DHCP |
| 80 | TCP | HTTP |
| 443 | TCP | HTTPS |
| 110 | TCP | POP3 |
| 143 | TCP | IMAP |
Socket = (IP地址, 端口号)
TCP连接标识:
(源IP, 源端口, 目的IP, 目的端口) 四元组
UDP标识:
(源IP, 源端口, 目的IP, 目的端口) 四元组
例:
客户端: (192.168.1.100, 50000) → 服务器: (10.0.0.1, 80)
连接标识: (192.168.1.100, 50000, 10.0.0.1, 80)
(IP, 端口) 二元组;而一条 TCP 连接需要用两个套接字(即四元组)才能唯一标识。多个应用进程的数据 → 封装为传输层报文段 → 交给网络层
应用1(端口80) ──┐
应用2(端口443) ──┼──→ 传输层封装 ──→ 网络层
应用3(端口25) ──┘
网络层分组 → 传输层解封装 → 根据端口号分发给对应应用
网络层 → 传输层解封装 → 根据目的端口分发
↓
端口80 → Web服务器
端口443 → HTTPS服务器
端口25 → 邮件服务器
UDP使用二元组标识:(目的IP, 目的端口)
来自不同源的分组,只要目的端口相同,就交给同一进程
TCP使用四元组标识:(源IP, 源端口, 目的IP, 目的端口)
不同客户端连接同一服务器的不同连接,分别处理
客户端A(192.168.1.100, 50000) ─┐
├─→ 服务器(10.0.0.1, 80)
客户端B(192.168.1.101, 50001) ─┘
这是两个不同的TCP连接
| 考点 | 说明 |
|---|---|
| 传输层的功能 | 端到端通信、复用分用、差错检测 |
| 端口号范围 | 熟知 (0~1023)、注册 (1024~49151)、动态 (49152~65535) |
| TCP vs UDP 的分解 | TCP 四元组 vs UDP 二元组 |
| 常见端口号 | $HTTP=80, HTTPS=443, DNS=53$ 等 |
↑ 以上为站内 HTML 相对链接(纯网页可浏览);本页右上「在 Obsidian 中打开」跳回源笔记。