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

相关推荐
hellolxb17 分钟前
Unreal Engine: Windows 下打包 AirSim项目 为 Linux 平台项目
linux·游戏引擎·虚幻
RLG_星辰1 小时前
SHELL练习题(1-11题)记录(牛客)
linux·运维·服务器·shell
敲上瘾1 小时前
企业开发工具git的使用:从入门到高效团队协作
linux·git·gitee·github·开发工具
时光飞逝的日子1 小时前
Ubuntu搭建TFTP服务器的方法
linux·ubuntu·tftp
code monkey.1 小时前
【寻找Linux的奥秘】第六章:环境变量
linux·操作系统·环境变量
✿ ༺ ོIT技术༻3 小时前
Linux:网络层的重要协议或技术
linux·服务器·网络
付出不多4 小时前
linux——mysql高可用
linux·运维·mysql
C-DHEnry10 小时前
Linux概述:从内核到开源生态
linux
蟑螂恶霸10 小时前
解决ubuntu20中tracker占用过多cpu,引起的风扇狂转
linux·运维·ubuntu
rzsh123410 小时前
[ linux-系统 ] 进程地址空间
linux