目录
-
- [1. UDP 协议](#1. UDP 协议)
- [2. UDP 协议的特点:](#2. UDP 协议的特点:)
- [3. UDP 协议的格式](#3. UDP 协议的格式)
- [4. UDP 的缓冲区](#4. UDP 的缓冲区)
- 基于UDP的应用层协议
1. UDP 协议
UDP (User Datagram Protocol) 是一种面向数据报的传输层协议, 是传输层的重要协议之一;
UDP协议提供了一种无连接, 不可靠的数据传输服务;
适用于要求源主机以恒定速率发送数据, 允许网络拥塞时丢失数据, 却不允许数据有太大时延的实时应用;
2. UDP 协议的特点:
-
无连接:
UDP 协议只需要对应的 IP地址 和 端口号就可以直接进行传输, 不需要建立连接, 减少了开销和时延;
-
不可靠:
UDP 协议不保证 可靠交付;
-
面向数据报:
UDP 协议对于从 IP 层 或 应用层获取的报文, 无论大小, 既不合并 也不拆分, 将其添加(去除)报头后原样交付;
3. UDP 协议的格式
UDP 报头的结构体表示
cpp
struct udp_header {
uint16_t src_port;
uint16_t des_port;
uint16_t udp_len;
uint16_t udp_check;
};
-
16位 目的端口号: UDP 协议通过 目的端口号 将有效载荷 上交至应用层;
-
16位 UDP 长度: 表示整个数据报(UDP 报头 + UDP 报文) 的长度; 最大为 2^16^ = 64KB, 其中报头固定大小 8 字节, 其余为有效载荷大小;
-
16位 UDP 校验和: 验证报文数据是否正确, 若检验和出错, 会直接丢弃报文;
4. UDP 的缓冲区
-
UDP 没有真正意义上的发送缓冲区; 发送时会直接将数据交付给内核, 由内核将数据传输至网络层, 进行后续的传输动作;
-
UDP 具有接收缓冲区;
但 UDP 接收缓冲区不能保证接收数据的顺序与发送一致, 先到达的数据报先读取;
并且当 UDP 接收缓冲区已满, 新到达的数据报可能会被丢弃;
基于UDP的应用层协议
NFS: 网络文件系统。
TFTP: 简单文件传输协议。
DHCP: 动态主机配置协议。
BOOTP: 启动协议(用于无盘设备启动)。
DNS: 域名解析协议。