说明传输层提供的服务、端口寻址、复用分用和 UDP 报文格式与应用特点。

# 传输层的定位

传输层位于应用层和网络层之间。网络层提供主机到主机的通信,传输层在此基础上提供 进程到进程 的通信。

1
2
3
4
5
6
flowchart LR
A[主机 A 的应用进程] --> B[传输层]
B --> C[网络层<br/>主机到主机]
C --> D[网络层]
D --> E[传输层]
E --> F[主机 B 的应用进程]

传输层的核心任务:

  • 为应用进程提供端到端通信。
  • 使用端口号区分不同应用进程。
  • 提供复用与分用。
  • 根据协议提供可靠或不可靠传输。
  • 可提供流量控制、拥塞控制等机制。

网络层靠 IP 地址找到主机,传输层靠端口号找到主机上的具体进程。

# 传输层寻址与端口

端口号用于标识主机上的应用进程,长度为 16 bit,范围为:

0655350 \sim 65535

常见分类:

范围名称用途
0~1023熟知端口常见服务器应用
1024~49151登记端口注册应用使用
49152~65535动态 / 临时端口客户端临时使用

常见端口:

协议端口传输层协议
HTTP80TCP
HTTPS443TCP
FTP 控制连接21TCP
SMTP25TCP
POP3110TCP
DNS53UDP/TCP
DHCP Server67UDP
DHCP Client68UDP

# 复用与分用

# 复用

发送方多个应用进程的数据都交给传输层,传输层为其添加首部后交给网络层。

# 分用

接收方传输层收到报文段后,根据目的端口号把数据交给对应应用进程。

1
2
3
4
5
6
7
8
9
flowchart TB
A[HTTP 进程] --> T[传输层复用]
B[DNS 进程] --> T
C[邮件进程] --> T
T --> IP[网络层]
IP --> R[接收方传输层分用]
R --> D[目的端口 80]
R --> E[目的端口 53]
R --> F[目的端口 25]

# 无连接服务与面向连接服务

服务特点典型协议
无连接服务发送前不建立连接,报文独立发送UDP
面向连接服务通信前建立连接,结束后释放连接TCP

二者对比:

项目UDPTCP
连接无连接面向连接
可靠性不保证可靠可靠交付
数据单位用户数据报字节流 / 报文段
首部开销小,8B较大,最小 20B
顺序保证不保证保证按序
拥塞控制
典型应用DNS、DHCP、实时音视频HTTP、FTP、SMTP

# UDP 协议

UDP(User Datagram Protocol,用户数据报协议)是无连接、不可靠、面向报文的传输层协议。

# UDP 特点

  • 无连接:发送前不需要建立连接。
  • 尽最大努力交付:不保证到达、不保证顺序、不保证不重复。
  • 面向报文:应用层交下来的报文,UDP 保留其边界。
  • 首部开销小:UDP 首部只有 8B。
  • 支持一对一、一对多、多对一、多对多通信。
  • 无拥塞控制:适合实时应用,但可能加重网络拥塞。

UDP “不可靠” 不等于 “不能用于可靠应用”。应用层可以自己实现确认、重传、排序等机制。

# UDP 用户数据报格式

UDP 首部固定 8B。

1
2
3
4
5
6
7
8
---
title: "UDP 首部格式"
---
packet
0-15: "源端口"
16-31: "目的端口"
32-47: "长度"
48-63: "校验和"

字段:

字段长度含义
源端口16 bit发送进程端口,可选
目的端口16 bit接收进程端口
长度16 bitUDP 首部 + 数据总长度
校验和16 bit检测 UDP 首部和数据是否出错

UDP 长度字段最小值为 8,因为只有首部时就是 8B。

# UDP 校验

UDP 校验和用于检测传输过程中是否出错,校验范围包括:

  • UDP 首部。
  • UDP 数据。
  • 伪首部。

伪首部不是 UDP 真正发送的首部,只参与校验计算。

IPv4 UDP 伪首部包含:

字段作用
源 IP 地址防止送错源
目的 IP 地址防止送错目的主机
协议号标识 UDP
UDP 长度辅助校验

UDP 校验和把 IP 地址也纳入计算,是为了检查 “是否交付给了正确主机和正确协议”。

# UDP 适用场景

UDP 适合:

  • 对实时性要求高、允许少量丢失的应用。
  • 请求 / 响应很短、建立连接开销不划算的应用。
  • 广播或组播应用。
  • 应用层自己控制可靠性的协议。

典型例子:

应用原因
DNS查询短小,通常一次请求一次响应
DHCP初始阶段主机还没有 IP,需要广播
实时音视频更重视低延迟,少量丢包可容忍
在线游戏延迟敏感,应用层可处理状态同步

# 本节考点

  1. 传输层提供进程到进程通信,网络层提供主机到主机通信。
  2. 端口号长度 16 bit,范围 0~65535。
  3. 复用是多个应用交给传输层,分用是传输层按端口交给应用。
  4. UDP 无连接、不可靠、面向报文,首部固定 8B。
  5. UDP 校验和覆盖 UDP 首部、数据和伪首部。
  6. DNS 常用 UDP 53,DHCP 使用 UDP 67/68。
  7. UDP 适合实时、短报文、广播 / 组播或应用层自定义可靠性的场景。