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

UDP/TCP ①-UDP协议报文格式

这里是Themberfue 

 结束了HTTP/HTTPS协议的学习后,我们将进入传输层中的两个重要的协议——UDP/TCP


UDP协议报文格式 

  • 关于UDP的一些特点我就不做过多赘述了,详情见我之前的文章:UDP
  • ✨UDP:无连接、不可靠传输、面向数据报、全双工
  • 我们直接开始认识协议报文格式

  • UDP协议是传输层的一个协议,传输层的上一层是应用层,下一层是网络层。所以,一个UDP数据报包括报头(header)完整的应用层数据包(payload)。UDP报头分为四个部分,每个部分占用2个字节,总共占用8个字节
  • 16位源端口号和16位目的端口号:源端口和目的端口相信大家已经是比较熟悉的了,五元组中的两个,端口号通常有传输层这边处理。既然是2个字节,那么就是16个bit位,所以理论上说端口号可以取的范围为 0~65535,实际上,一般把1024以下的端口保留,那么端口号的分配一般就在 1024~65535 之间。端口号通常由操作系统自动分配,当然也可以程序员手动分配,但还请不要为不同的程序分配相同的端口号。
  • 16位UDP长度:这里的UDP长度指的是整个UDP数据报的长度,是包括报头和载荷的,但这里的16位是以字节为单位的,所以UDP数据报的最大长度可以达到65535字节,也就是64kb(包含报头);当然,这只是理论上的,实际中,由于网络层的限制,UDP报文通常不能达到64kb的理论值。
  • ❓在互联网早期,64kb的最大长度是绰绰有余的,但是随着互联网的发展,人们发现64kb已经逐渐放不下应用层的完整数据了,比如应用层数据包里由一个较大的图片,这可能超过64kb,如果不作任何处理,数据会被截断,从而使传输的数据发生错误。
  • 为了解决上述的问题,通常有两套解决方案:将应用层数据包进行拆包操作,将一个应用层数据包通过多个传输层数据报传输,然后在进行组包,显而易见,这样的操作要实现起来还是非常麻烦的;另一种方法就是直接换一个协议——TCP,TCP协议没有这样的长度限制。
  • 16位UDP校验和:此处的校验作用并不是像HTTPS数字签名防止数据被篡改,而是防止数据在传输的过程是否发生损坏,通常表现为 “比特翻转”,也就是 1变成0,0变成1,数据在物理层都是通过光信号、电信号或者电磁波传递的,很难不受到某些不可抗力因素的干扰,这种干扰会导致数据发生损坏。在向下传输前先将当前数据计算出一个校验和放入这个字段中,对方在收到数据时,再通过一样的方法计算出校验和,与我这个传输前的校验和进行比对,若算出的结果不相同,UDP协议的做法通常是直接丢弃该数据报。

UDP长度字段的特性 

冗余性:

  • UDP 长度字段理论上是冗余的,因为 IP 数据报头也包含了数据长度。
  • 但在某些情况下,IP 层可能无法准确确定 UDP 数据的实际边界,因此 UDP 长度字段可以作为独立的校验依据。

与 MTU 的关系:

  • 最大长度通常受网络 MTU(最大传输单元)限制。
  • IPv4 的 UDP 数据报最大长度为 65535 字节(IP 数据报最大长度),减去 IP 头部(20 字节)和 UDP 头部(8 字节),UDP 数据部分最大为 65507 字节。
  • 在实际网络中,MTU 通常为 1500 字节(以太网),因此 UDP 数据部分通常限制在 1472 字节(1500 - 20 - 8)。

  • UDP协议的讲解到这就差不多结束了,下节我们将进入TCP协议的讲解~~~
  • 毕竟不知后事如何,且听下回分解 
  • ❤️❤️❤️❤️❤️❤️❤️

 


http://www.kler.cn/a/506945.html

相关文章:

  • 如何在谷歌浏览器中设置自定义安全警告
  • Ondo SIP Server
  • 【机器学习实战入门项目】基于机器学习的鸢尾花分类项目
  • OpenGL中Shader LOD失效
  • PT8M2302 触控 A/D 型 8-Bit MCU
  • SuperMap iClient3D for Cesium立体地图选中+下钻特效
  • 【网络篇】IP知识
  • JVM之垃圾回收器ZGC概述以及垃圾回收器总结的详细解析
  • Node.js新草案:通过共享库使用Node.js
  • 计算机网络开发基础实训室设备
  • RDD和DataFrame两种数据结构的对比
  • 软硬件项目运维管理制度,安全运行维护管理手册(Word原件)
  • Vue 实现当前页面刷新的几种方法
  • 基于mybatis、bootstarp、的maven新人练手学生管理studentManage项目
  • CES 2025:INAIR 推出“另类”AR电脑,重新定义移动计算体验
  • 006-excel数据输出insert语句
  • 《小迪安全》学习笔记05
  • 正则表达式学习网站
  • 2025年01月16日Github流行趋势
  • 2025年CNN与Transformer融合的创新点思路
  • 引用 CPP
  • Chapter1:初见C#
  • C# 并发和并行的区别--16
  • JavaScript分页的制作
  • 【WRF-Urban】新增静态输入数据:URB_PARAM、FRC_URB2D、AHE等
  • redis性能优化参考——筑梦之路