【Linux】UDP 协议

目录

    • [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 报文) 的长度; 最大为 216 = 64KB, 其中报头固定大小 8 字节, 其余为有效载荷大小;

  • 16位 UDP 校验和: 验证报文数据是否正确, 若检验和出错, 会直接丢弃报文;

4. UDP 的缓冲区

  • UDP 没有真正意义上的发送缓冲区; 发送时会直接将数据交付给内核, 由内核将数据传输至网络层, 进行后续的传输动作;

  • UDP 具有接收缓冲区;

    但 UDP 接收缓冲区不能保证接收数据的顺序与发送一致, 先到达的数据报先读取;

    并且当 UDP 接收缓冲区已满, 新到达的数据报可能会被丢弃;

基于UDP的应用层协议

NFS: 网络文件系统。

TFTP: 简单文件传输协议。

DHCP: 动态主机配置协议。

BOOTP: 启动协议(用于无盘设备启动)。

DNS: 域名解析协议。

相关推荐
安当加密1 小时前
无需改 PAM!轻量级 RADIUS + ASP身份认证系统 实现 Linux 登录双因子认证
linux·运维·服务器
内卷焦虑人士1 小时前
Windows安装WSL2+Ubuntu 22.04
linux·windows·ubuntu
dddddppppp1233 小时前
qemu模拟的一个内核驱动 io口中断
linux
程序员老赵3 小时前
超全 Docker 镜像源配置指南|Windows/Mac/Linux一键搞定,拉镜像再也不卡顿
linux·后端·容器
门豪杰3 小时前
Ubuntu下安装Claude Code
linux·运维·ubuntu·claude·claude code
总要冲动一次3 小时前
离线安装 percona-xtrabackup-24
linux·数据库·mysql·centos
桌面运维家4 小时前
Windows/Linux双启动:BIOS/UEFI多配置桌面创建指南
linux·运维·windows
xlp666hub4 小时前
【Linux驱动实战】:字符设备驱动之内核态与用户态数据交互
linux·面试
久绊A4 小时前
服务器新硬盘初始化与挂载
linux·挂载
IMPYLH4 小时前
Linux 的 chroot 命令
linux·运维·服务器