【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: 域名解析协议。

相关推荐
Empty_7772 小时前
SELinux安全上下文
linux·服务器·安全
bug攻城狮3 小时前
解决Ubuntu中apt-get -y安装时弹出交互提示的问题
linux·运维·ubuntu
xiachong273 小时前
ubuntu18.04安装PCL1.14
linux·ubuntu
夜阑珊夭夭3 小时前
linux自定义网卡名字
linux·运维
czhc11400756634 小时前
Linux912 shell:$# $1 $?;RHEL 8 AppStream BaseOS
linux
佛天华4 小时前
centos 时间校准
linux·运维·centos
小柯J桑_5 小时前
Linux:线程封装
linux·运维·c++
先锋队长5 小时前
linux系统搭建nacos集群,并通过nginx实现负载均衡
linux·nginx·负载均衡
zwhSunday5 小时前
Linux驱动开发(1)概念、环境与代码框架
linux·运维·驱动开发
优秀的老黄8 小时前
Docker部署RabbitMQ
linux·运维·docker·中间件·容器·centos·rabbitmq