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

UDP报文结构

UDP特点

无连接 , 不可靠传输 , 面向数据报 , 全双工

  • 无连接: 知道对端的 IP 和端口号就直接进行传输,不需要建立连接.
  • 不可靠传输:没有确认机制,没有重传机制;如果因为网络故障导致该段无法发送对方,UDP协议层也不会给应用层返回任何错误信息.
  • 面向数据报:不能灵活的控制读写数据的次数和数量
  • 全双工:在通信过程中,双方可以同时进行双向的数据传输,即可以同时发送和接收数据,而且双方之间的传输是独立的

UDP协议端格式

  1. 源端口号:占16位,表示发送端的端口号。

  2. 目的端口号:占16位,表示接收端的端口号。

  3. UDP长度:占16位,表示UDP报文的总长度,包括首部和数据部分。单个UDP数据报的最大长度为 64KB (不能超过64KB,超过会导致数据被截断等问题)

  4. UDP校验和:占16位,用来检验UDP报文的完整性。计算校验和时,不仅要考虑UDP首部的内容,还要包括UDP数据部分。

  5. 数据:占n个字节,表示应用层传输的数据。

关于校验和

在网络传输过程中, 是非常容易出现错误的(电信号/光信号/电磁波受到外界的干扰,使里面传输的信号发生改变)

校验和,存在的目的,就是为了能够 "发现" 或者 "纠正" 网络传输过程中出现的错误.

通过对数据进行计算,生成一个校验和值,然后将该校验和值附加在数据中一起传输。接收方在接收到数据后,同样对数据进行计算,生成一个校验和值,并与传输过来的校验和值进行比较。如果两者相等,则说明数据在传输过程中没有发生改变或丢失,可以认为数据是有效的;如果两者不相等,则说明数据可能发生了错误或损坏。

校验和算法通常采用的是简单的数学操作,如加法或异或运算。具体的计算方式取决于校验和算法的设计。常见的校验和算法包括累加和校验和(Checksum)、循环冗余校验(CRC),MD5,SHA1等。

这里简单介绍一下MD5算法

MD5算法,本质上是一个"字符串hash算法",MD5算法的输入可以是任意长度的数据,输出是一个128位的哈希值。

特点:

  • 它是一个单向函数,即无法从哈希值逆推出原始数据。
  • 对于不同的输入,得到的哈希值几乎是唯一的,不同的输入可以得到不同的哈希值。
  • 即使输入数据只有微小的差异,其哈希值也会有很大的不同。
  • MD5算法的哈希值是固定长度的,不受输入数据长度的影响。

注意:校验和并不能检测出所有的错误,它只能帮助检测某些特定类型的错误。如果校验和不匹配,说明数据有错误,但如果校验和匹配,不能保证数据完全没有错误。

基于UDP的应用层协议

  1. DNS:用于将域名映射为IP地址的分布式数据库系统,使用UDP协议进行域名解析。

  2. SNMP:用于网络设备的监控和管理,包括获取设备状态、配置设备等操作,使用UDP协议进行数据传输。

  3. TFTP:用于简单的文件传输,如固件更新、配置文件传输等,使用UDP协议进行数据传输。

  4. NTP:用于同步网络中各个设备的时间,使用UDP协议进行时间同步。

  5. DHCP:用于自动分配IP地址、网关、DNS服务器等网络配置信息给客户端设备,使用UDP协议进行数据传输。

  6. RIP:用于路由器之间的路由信息交换,使用UDP协议传输路由表信息。

  7. RTP:用于实时的音视频传输,如IP电话、视频会议等,使用UDP协议进行数据传输。

  8. NFS : 网络文件系统

这些基于UDP的应用层协议通常选择UDP作为传输层协议,因为UDP具有低延迟和高效率的特点,适用于实时和轻量级的数据传输。

当然,也可以自定义应用层协议


http://www.kler.cn/news/290062.html

相关文章:

  • 【机器学习】集成学习的基本概念、Bagging和Boosting的区别以及集成学习方法在python中的运用(含python代码)
  • Python集成学习和随机森林算法使用详解
  • HarmonyOS开发实战( Beta5版)Stack组件实现滚动吸顶效果实现案例
  • 第86集《大佛顶首楞严经》
  • JVM 锁的种类
  • 一起学习LeetCode热题100道(70/100)
  • 深入了解 Kafka:应用场景、架构和GO代码示例
  • lodash
  • 网络安全服务基础Windows--第9节-DNS部署与安全
  • 《OpenCV计算机视觉》—— 对图片的各种操作
  • Vue3 非父子组件之间通信
  • js对象操作常用方法
  • 相机常见名词详解
  • Streamsets运行在国产化银河麒麟服务器
  • 报错:java:程序包org.springframework.boot不存在
  • 操作系统面试真题总结(五)
  • Unity(2022.3.41LTS) - UI详细介绍-画布
  • ChatGPT辅助论文写作的七大场景
  • zdppy+vue3+onlyoffice文档管理系统实战 20240903 上课笔记 登录功能完成
  • 数字化转型工具有哪些 无锡振宁科技
  • Vue项目安装依赖(npm install)报错的解决
  • 2024大模型学习:机器学习在安全领域的应用|从大数据中识别潜在安全威胁
  • 设计模式之解释器模式
  • LeetCode51 N 皇后
  • github上传代码
  • 河南省第三届职业技能大赛 网络安全(世赛选拔)项目样题
  • 【C++模板初阶】
  • 新换了电脑,电脑里常用的6款软件,下载回来继续用
  • Driver.js——实现页面引导
  • OpenFeign深入学习笔记