UDP报文详解

news2025/7/5 4:13:28

目录

🐳今日良言:走好选择的路,别选择好走的路,你才能拥有真正的自己。

🐼一、UDP协议特点

🐼二、UDP协议段格式详解


🐳今日良言:走好选择的路,别选择好走的路,你才能拥有真正的自己。

🐼一、UDP协议特点

UDP:User Datagram Protocol   用户数据报协议

在之前已经介绍过了UDP协议的特点,在这里再次回顾一下:

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

无连接:UDP类似于发短信,不需要建立连接,直接就可以发送

不可靠:发送方发送的数据丢了就丢了,不会返回任何错误信息.

面向数据报:数据传输是以一个个"数据报"为基本单位(一个数据报可能有若干个字节,带有一定的格式)

全双工:一个通信通道,可以双向传输.(既可以发送,也可以接收)

通过简单了解UDP协议的特点,接下来重点理解UDP协议端格式.

🐼二、UDP协议段格式详解

首先来看一下书上的UDP协议报文结构

 但是,实际上的UDP协议报文结构并不是这样的,上述可能只是为了方面排版,实际的如下图:

UDP就会在载荷数据(通过UDP socket  send方法拿来的数据)基础之上,再在前面拼接几个字节的报头(相当于字符串拼接)

UDP报头包含了一些特定的属性,携带了一些重要的信息

不同的协议,功能不同,报头中带有的属性信息不同.

对于UDP来说,报头一共是8个字节,分成4个部分(每个部分2个字节)

 源端口:发送方的端口

目的端口:接收方的端口

 UDP报文长度:2个字节

2个字节能够表示的范围是;0->65535,换算一下单位:64KB.

这说明:一个UDP数据报,最大只能传输64KB的数据,此时,就有一个问题值得思考:

如果应用层数据报超过了64KB呢?如何传输数据?

针对这个问题,有两个解决方案:

1).在应用层通过代码的方式针对应用层数据报进行手动的分包,拆成多个包通过UDP数据报进行传输(本来需要send一次,现在需要send多次)

但是,使用这个方案就得写很多代码,可能需要进行很多次测试,还要处理很多bug,这就导致工作量加重了,显然不是一个很好的办法.

2).不用UDP,换成TCP(TCP没有这样的限制)

检验和:作用是验证数据的传输是否是正确的

网络传输,本质上就是电信号/光信号,这些都可能收到一些物理环境的影响,比如:电场 磁场 高能射线等,例如我们发送的数据是:1111 0000 被影响为 1111 0001 ,数据变了,对于数据的含义也就发生了改变,最典型的例子就是:程序中经常使用1表示某个功能开启 0表示功能关闭,本来网络数据报是想开启功能,结果因为翻转,导致变成了关闭的.

上述这种情况,是客观存在的,无法避免,能做到的就是及时识别出,当前发送的数据是否出现了问题,因此就引入了校验和进行鉴别.

检验和鉴别数据的原理:针对数据内容进行一系列的数学运算,得到一个比较短的结果(2个字节)  如果数据内容不变,得到的校验和的结果就是一定的,如果数据变了,得到的校验和也就变了.

 经过上述解释,还有一个问题:如果传输的数据出错了,但是计算得到的校验和和接收到的校验和恰好一样?

比如:发射火箭和原地解散的校验和计算出来都是Oxaabb,这对于接收方而言,得到的数据是正确的,但是实际上接收到的数据是错误的.理论上这种情况是存在的,但是实际上这种情况发生的概率极低,基本可以忽略不计.

校验和一般会与内容挂钩,基于数据内容计算出来的校验和,只要内容一遍,就能发现.

实际网络传输过程中,往往是把数据内容的所有字节都参与生成校验和的运算,这样任何一个字节出现问题都能及时发现.

针对网络传输的数据来说,生成校验和的算法有很多种,其中比较知名的几个:

 1.CRC (循环冗余校验)

这个算法简单粗暴:把数据的每个字节循环往上累加,如果累加溢出了,高位就不要了.

虽然好算,但是校验效果不是特别理想.

如果传输的数据变动了两个bit位(前一个字节少1,后一个字节多1),就会出现内容变了,CRC没变.

2.MD5

MD5不是简单相加,而是有一系列的公式,来进行更复杂的数学运算.

MD5算法的特点:

1).定长

无论原始数据多长,得到的MD5的值都是固定长度(4字节版本 / 8字节版本)

2).冲突概率很小.

原始数据哪怕改动一个地方,得到的MD5值差别都是很大的.(让MD5结果更分散了)

3).不可逆

通过原始数据计算MD5很容易,但是通过MD5还原成原始数据(找到哪个原始数据生成了这个MD5)很难,理论上是不可能实现的(计算量极大).

MD5这样的作用,就使得MD5用途就更多了:

1).校验和

2).作为计算hash值的方式

3).加密

可以在浏览器中搜索MD5在线加密 试试这个功能

MD5解密本质上是打表:将一些常见的字符串的MD5值保存起来,然后进行查表.

MD5本质上是不可逆的,但是通过打表的方式,能解密一部分.

解密失败:

 解密成功

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/363199.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

PointNet++训练自己的数据集(附源码)

本文针对PointNet强大的三维点云分类功能,详细讲解怎么训练自己的数据集,在此之前,需要确保已经能够跑通源码的训练和测试,如果没有,请参考PointNet的源码运行。数据放置1.1. 在mytensor_shape_names.txt中配置自己的分…

LeetCode-40.组合总和II

目录题目思路回溯法题目来源 40.组合总和II 题目思路 这道题目和39.组合总和如下区别: 本题candidates 中的每个数字在每个组合中只能使用一次。本题数组candidates的元素是有重复的,而39.组合总和是无重复元素的数组candidates 为了理解去重我们来举…

keepalived+LVS配置详解

keepalivedLVS配置详解keepalived简介keepalived的应用场景keepalived工作原理VRRP协议核心组件分层工作工作状态LVS简介LVS三种模式NAT模式(网络地址映射)IPTUN模式(IP隧道)DR模式(直接路由)三种模式对比keepalivedLVS配置1.master配置2. keepalived配置文件3 修改keepalived配…

做主管如何规范测试团队

当你来到一个项目不规范的技术团队,你会怎么处理呢? 问题 Testing 流程不规范 没有需求评审和设计评审,需求经常是业务或者项目经理直接跟开发提,有时候开发自己都不明白需求,糊里糊涂地就要开发,也没有设计评审&…

插画师培训怎么选,5大插画师培训班排名

插画师培训哪里好,给大家推荐5大插画师培训班排名,各有优势和特色,提供大家选择! 一:5大插画师培训班排名 1、轻微课(五颗星) 主打课程有日系插画、游戏原画、古风插画、动漫漫画,以…

UI自动化测试、接口测试等自动化测试策略

今天跟大家介绍UI测试、接口测试、单元测试主要内容,以及每种测试花费时间讨论。 UI测试【Selenium】 UI测试是最接近软件真实用户使用行为的测试类型。通常是模拟真实用户使用软件的行为,即模拟用户在软件界面上的各种操作,并验证这些操作对…

江苏专转本如何事半功倍的备考

专转本如何事半功倍的备考 一个人学习成绩的优劣取决于他的学习能力,学习能力包括三个要素:规范的学习行为;良好的学习习惯;有效的学习方法。有了规范的学习行为才能培养出良好的学习习惯,形成了良好的学习习惯就会形成…

Android - 代码生成远程依赖库(阿里云)

一、注册 没有注册过阿里云且没有实名认证的点这里:阿里云官网 二、查看库 阿里云制品仓库Packages (注:如果没有创建企业或个人使用,按照提示,选个人使用) 三、选择类型 选择其中一个(两…

问题解决篇 | Win11网络连接上了但是无法上网(修改DNS弹出框框“出现问题”,如何通过网络检测确定并修复网络问题)

目录 问题 网络诊断 Win i 打开设置 搜索“查找并修复网络问题”并点击 "远程计算机或设备将不接受连接" 解决办法: Win R,输入 inetcpl.cpl ,点击确定,打开Internet选项 选择“连接” 点击“局域网设置” 三个…

vscode下使用arduino插件开发ESP32 Heltec WiFi_Kit_32_V3

下载vsCode 添加 arduino 插件 在Arduino IDE 中添加开发板,注意只能用右侧的开发板管理器添加,自己下载之后复制进去的IDE认,但是vsCode不认,搜索ESP32 第一个库里面只有到V2的,没有V3,要安装下面那个 H…

CDH 6.3.2启用HDFS高可用

启用原因 CDH 6.3.2平台即将用于生产,生产平台几乎需要高可用平台,故需要升级CDH中的HDFS为HA。 启用准备 CDH已经成功安装并正常使用CMS的管理员账号正常登陆 HDFS启用HA 登陆CMS系统->选择HDFS服务->点击进入到HDFS服务详情页面&#xff0c…

CRC冗余校验的原理和FPGA实现思路

CRC校验码,顾名思义是用于校验的。它可以用于检测数据传输过程中是否出现错误(某些位,或某几位,或者某块区域位错误),反正 可以知道数据出错了,但是不能纠错。 CRC校验,本质上是模2…

VIIRS-NPP夜间灯光遥感数据下载和预处理

VIIRS-NPP夜间灯光遥感数据下载和预处理 月和年合成产品下载网站 日数据下载网站 一、下载shp掩膜文件 下载好月合成产品后,在这个网站上下载矢量地图, 点击复制按钮,来到这个网站,ctrl v粘贴 点击右上角Export,…

【阿旭机器学习实战】【31】股票价格预测案例--线性回归

【阿旭机器学习实战】系列文章主要介绍机器学习的各种算法模型及其实战案例,欢迎点赞,关注共同学习交流。 注:本文模型结果不好,仅做学习参考使用,提供思路。了解数据处理思路,训练模型和预测数值的过程。 目录1. 读取数据K线图绘…

解决一打开IE浏览器就自动跳转到Edge浏览器的问题

问题说明: 打开Internet Explorer浏览器后会自动跳转到Microsoft Edge浏览器。 解决方法: 打开控制面板,选择“Internet选项”,选择【高级】选项卡,取消勾选“启用第三方浏览器扩展*”即可。

Java之前缀和算法

一.前缀和 1.前缀和介绍 前缀和,顾名思义,就是前n项相加之和,和我们高中时候学习的数列中的一个含义 例如一个等差数组n,那他的前n项和 也可知道- 2.编程中的前缀和 对于一个数组nums,也可以很容易求出它的前缀和数组 public int[] prefix(int[] nums) {int[] prefix …

01 | TDengine3.0部署

1 TDengine简介 TDengine 是一款开源、高性能、云原生的时序数据库,且针对物联网、车联网、工业互联网、金融、IT 运维等场景进行了优化。TDengine 的代码,包括集群功能,都在 GNU AGPL v3.0 下开源。除核心的时序数据库功能外,TD…

因子的有效性检验(IC)

使用神经网络的预测值作为因子载荷(因子暴露,因子值 factor)时, 我们需要知道这个因子是否是有效的,所以要做因子的有效性检验。 当前的学术论文给出的IC, rankIC 这些都是属于判断因子是否有效的metric 因…

Linux系统安装Nginx常见报错问题

安装Nginx从nginx官网下载所需版本的nginx,http://nginx.org/下载之后,将安装包上传到linux系统指定路径解压文件,tar -zxvf nginx-1.22.1.tar.gz (此处用1.22.1版本为例)进入安装包目录,cd nginx-1.22.1执…

面试了字节、美团、腾讯等30几家公司后,才知道软件测试面试全是这个套路......

一、Linux系统应用和环境配置: 1、Linux系统的操作命令给我说10个,一般用什么工具远程连接Linux服务器? 2、Linux中的日志存储在哪里?怎么查看日志内容? 3、Linux中top和ps命令的区别? 4、Linux命令运行…