西河刘卡车医 发表于 2024-7-24 12:17:14

【Linux】UDP 协议

1. UDP 协议

UDP (User Datagram Protocol) 是一种面向数据报的传输层协议, 是传输层的重要协议之一;
UDP协议提供了一种无连接, 不可靠的数据传输服务;
实用于要求源主机以恒定速率发送数据, 允许网络拥塞时丢失数据, 却不允许数据有太大时延的实时应用;
2. UDP 协议的特点:



[*] 无连接:
UDP 协议只需要对应的 IP地址 和 端标语就可以直接进行传输, 不需要建立连接, 减少了开销和时延;
[*] 不可靠:
UDP 协议不保证 可靠交付;
[*] 面向数据报:
UDP 协议对于从 IP 层 或 应用层获取的报文, 无论大小, 既不合并 也不拆分, 将其添加(去除)报头后原样交付;
3. UDP 协议的格式

https://i-blog.csdnimg.cn/direct/a9115f123a67457d9e996b60ce97d147.png
UDP 报头的结构体体现
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 报文) 的长度; 最大为 216 = 64KB, 此中报头固定大小 8 字节, 其余为有用载荷大小;
[*] 16位 UDP 校验和: 验证报文数据是否精确, 若查验和出错, 会直接丢弃报文;
4. UDP 的缓冲区



[*] UDP 没有真正意义上的发送缓冲区; 发送时会直接将数据交付给内核, 由内核将数据传输至网络层, 进行后续的传输动作;
[*] UDP 具有吸收缓冲区;
但 UDP 吸收缓冲区不能保证吸收数据的顺序与发送一致, 先到达的数据报先读取;
并且当 UDP 吸收缓冲区已满, 新到达的数据报可能会被丢弃;
基于UDP的应用层协议

NFS: 网络文件体系。
TFTP: 简单文件传输协议。
DHCP: 动态主机配置协议。
BOOTP: 启动协议(用于无盘设备启动)。
DNS: 域名剖析协议。

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
页: [1]
查看完整版本: 【Linux】UDP 协议