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

相关推荐
哎呦喂我去去去10 小时前
C#实现屏幕墙:同时监控多个电脑桌面(支持Windows、信创Linux、银河麒麟、统信UOS)
linux·windows·c#
easy_coder11 小时前
Linux LVM 知识文档
linux·运维
小小的木头人12 小时前
Ubuntu 使用 udev + systemd + UUID 实现 USB 硬盘自动挂载
linux·运维·ubuntu
kaoa00013 小时前
Linux入门攻坚——84、网络虚拟化技术-1
linux·运维·服务器
RisunJan14 小时前
Linux命令-shutdown(安全关闭或重启系统)
linux·服务器·安全
2601_9657984714 小时前
MTDb Movie & TV Database Script Setup, Caching, and SEO Guide
linux·服务器·数据库·php
我头发多我先学15 小时前
linux系统编程:初识进程
linux·运维·服务器
Freak嵌入式15 小时前
版本混乱 / 依赖缺失?uPyPi:MicroPython 版 PyPI,彻底解决库管理混乱
linux·服务器·数据库·单片机·嵌入式硬件·性能优化·依赖倒置原则
苍狗T15 小时前
LVS相关知识总结
linux·运维·服务器·lvs
广州灵眸科技有限公司15 小时前
瑞芯微RV1126B开发板(EASY-EAI-PI2) rknn-toolkit-lite2使用方法
linux·运维·服务器·数据库·算法