当前位置: 首页 > news >正文

UDP协议

一、UDP协议格式

  • 16位源端口号
  • 16位目的端口号
  • 16位UDP长度(2^16=64KB,说明UDP发送的数据最大是64KB。如果传输的数据大于64KB,需要在应用层手动分包,多次发送,并在接收端手动拼接接收到的数据)
  • 16位UDP校验和
  • 数据

UDP报头结构体:

struct udp_header {
    uint16_t src_port;    // 源端口,网络字节序(大端)
    uint16_t dest_port;   // 目的端口,网络字节序
    uint16_t len;         // 总长度(包括头部),网络字节序
    uint16_t checksum;    // 校验和,网络字节序
};

二、UDP协议特点

  • 无连接:拿到通信方的IP地址和端口号即可,无需建立连接
  • 不可靠:没有确认机制,没有重传机制。如果因为网络故障使得某个数据无法发送给对方,UDP所在的传输层不会给应用层返回任何错误消息
  • 面向数据报:应用层交给UDP多大的报文,UDP就发送多大的报文,不会将报文拆分与合并

三、UDP的缓冲区

  • UDP协议没有发送缓冲区,应用层交给UDP数据,UDP就会立即将数据交给网路层
  • UDP协议有接收缓冲区,但是该接收缓冲区不能保证接收到的UDP数据报顺序和发送UDP数据报的顺序一致。并且如果缓冲区满了,再到达缓冲区的UDP数据报将被丢弃

四、基于UDP的应用层协议

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

相关文章:

  • 随机2级域名引导页HTML源码
  • 【docker】docker应用举例
  • 1.两数之和(Java)
  • 北斗储罐位移监测系统解决方案
  • java倒序题变形题重温
  • 在Ubuntu中固定USB设备的串口号
  • QML中的附加属性和附加信号处理程序
  • [特殊字符]《Curve DAO 系统学习目录》
  • Java 面向对象编程中 static 的深度剖析与实践
  • jdbc入门
  • Java 日志技术全面解析与实践教程
  • 多线程—线程安全集合类与死锁
  • 3.23周赛补题
  • C#:第一性原理理解日志(log)
  • 从零实现Json-Rpc框架】- 项目实现 - 基于Dispatcher模块的RPC框架
  • `git commit --amend` 详解:修改提交记录的正确方式
  • Content-Type设置内容类型
  • React受控表单绑定
  • wx201基于ssm+vue+uniapp的购物系统设计与实现小程序
  • J2EE框架技术 第二章 Maven环境搭建及使用