【网络原理】Udp 的报文结构,保姆式教学,快速入门

news2024/11/24 1:48:25

本篇会加入个人的所谓鱼式疯言

❤️❤️❤️鱼式疯言:❤️❤️❤️此疯言非彼疯言

而是理解过并总结出来通俗易懂的大白话,

小编会尽可能的在每个概念后插入鱼式疯言,帮助大家理解的.

🤭🤭🤭可能说的不是那么严谨.但小编初心是能让更多人能接受我们这个概念 !!!

在这里插入图片描述

引言

在网络通信的世界里,速度与效率往往是至关重要的。想象一下,当你观看在线视频或进行实时游戏时,背后是UDP协议在快速地传输数据包。UDP以其轻量级和低延迟的特性,成为了这些应用的理想选择。

目录

  1. Udp报文结构初识

  2. Udp 数据格式与报文格式

  3. Udp的检验和

一. Udp报文结构初识

在这里插入图片描述

Udp协议中,如上图就是我们的 报文结构 , 但实际的报文结构是 不换行 的。

-在这里插入图片描述

协议报文 = 报头 + 正文(载荷)

而上述画的就是 Udp 实际的报文结构, 由 左边的报头 和 右边的 正文(又称为载荷) 构成。

报头 是保存传递的 传输所需的各种信息 , 而 正文 是需要发送的 数据内容

二. Udp 数据格式与报文格式

在这里插入图片描述

在上面内容中我们初步认识了 报文结构 ,而我们的 UDP的数据格式和报文格式 主要还是体现在 报头 的上。

在Udp的报文上主要由4部分: 源端口号目标端口号Udp长度Udp的校验和(下面重点介绍) 。

而本篇文章的重点还是 介绍 报头结构 的内容。 💖 💖 💖 💖

他们的每一部分都是 16位 (比特位) 也就是 两个字节, 所以Udp的报头大小为 八个字节(byte)。

并且数据格式的划分, 就是以 每两个字节 来进行 格式的划分

1. 源端口号与目标端口号

Udp 协议在传输过程是需要保持源端口号,与目标端口号的。

好比:

  • 源IP: 自己的地址

  • 目标IP: 对方的地址

  • 源端口号: 自己的联系方式

  • 目标端口号 : 对方的联系方式

鱼式疯言

并且值得注意的是,源端口号与目标端口号都是 16位的 , 这里的位是 比特位16个比特位(bit)= 2个字节(byte)

因为我们的端口号也是 2个字节 的, 小伙伴们只需要填入 合法的端口号 即可。

2. Udp长度

这里的 Udp长度 是用来记录实际 整个报文的长度 , 也就是说实际 报头 + 正文 的总和的长度。

对于Udp协议来说, 记录的报文长度最大值是 固定的 , 都是 16个比特位(2个字节), 换成空间: 64KB

居然是64KB, 那么小编的问题来了, 64KB是大空间还是小空间呢?

其实啊, 对于十九世纪的计算机来说, 64KB 已经是个很大的数据了, 但对于现在的计算机来说, 64KB是非常小的空间大小。

试想一下, 我们一张照片的大小都有 10MB 那么大了。

那么如果要传输超过64KB的大数据怎么办呢?

以下有两种解决方案

<1>. 方案一

方案一就是将一份大数据进行 数据拆分, 在网络上分 不同的模块的数据 进行传输, 最后运输到达后在进行 数据合并

显然这种方案看似 很符合逻辑 , 但是对于网络通信来说, 网络上的数据传送存在很多 不确定性准确性是比较差的 , 涉及到 数据拆分和数据合并 又是一个 很复杂 的过程, 一旦在网络传输过程中出现 数据丢失 , 就可能造成 严重的问题

<2>. 方案二

如果 Udp不行 , 那么我们是不是可以换一个协议, 那就是家喻户晓的 Tcp协议

Tcp协议的出现就可以解决 Udp 空间太小 的问题, 对于Tcp来说空间长度 不是固定 的,空间长度是 比较大 的, 并且是可以 动态扩展的 。 还有一个更大的优势就是: Tcp是作为 可靠传输 的特点之一

鱼式疯言

Udp协议 报文长度是 固定的不适合 用来传输 比较大的数据量 , 所以用 Tcp的可靠传输来补充

报头结构的最后一点——Udp 校验和 , 也是体现 Udp 不可靠传输特点之一 的内容, 小伙伴们要细细理解哦。

三. Udp 检验和(检验和)

1. 检验和的初识

什么是检验和呢?

简单来说, 就是一种用来用一种 数据总和 来判断 数据是否有异常 的一种检查方式。

比如小编有一天想狂写博客, 想写 Java的数据类型, 逻辑运算符, 泛型类型, 面向对象这4篇文章。

我就会记住我一共要写 4篇文章

当我写了很久来检查, 写了的有Java的数据类型, 逻辑运算符, 泛型类型。

我数了一下才写 三篇文章, 这样就确定了 还有一篇文章 没有写。 从而达到了 检查的结果 的效果。

上面这个栗子就可以充分的说明 检验和含义和作用

鱼式疯言

这里的检验和只是一个 简单的设定 , 有可能我都写了4篇, 但4篇中有一篇 不是Java的数据类型

这里只是错略的检查总和是否达到。 如果还要进一步 准确的检查 , 就需要更严谨的 检查策略和算法

2. Udp 检验和的设定原理

下面用 草图 来说明Udp下校验和的检查过程。

在这里插入图片描述

上面的检验方式我们称为CRC检验方式, sum1sum2 的总和就是好比校验和, 根据在 传输前和传输后 两次数据 得出的校验和进行判断。

如果 相等, 说明数据传输 没问题
如果 不相等 , 说明数据传输 有问题

一旦有问题就会把数据该传输的数据给 丢弃掉, 而 不会 进行重发。

鱼式疯言

细节补充

对于检验和本身来说, 自身只有 两个字节 , 但是这并 不影响检验和的检验工作。

因为即使检验和数据太大 溢出了 , 我们只是检查前后校验和 是否相等 , 不必关注校验和是 多少

3. Udp 检验和的设定类型

上面的演示过程称为 CRC算法 。 其实除了 CRC算法之外,还有两个算法, 那就是

对于Udp的检验和的设定类型主要还有以下两种:

MD5SHA1

<1>. MD5

对于MD5来说, 本质上可以理解为 字符串Hash算法

背后的实现过程是一个 “数学过程” , 可以理解为 套公式

相比于MD5的 计算细节 , 我们更关心的MD5的 特点

在这里插入图片描述

  1. 定长: 无论输入的字符串 有多不同 , 有 多长多短 , 得到的 MD5 都是固定长度 的。

在这里插入图片描述

  1. 分散性: 对于不同的字符串, 即使字符串中只改变了一点点, 得到的 MD5 差异都是 很大的

越分散 越有利于做哈希表, 防止 哈希冲突

  1. 不可逆性: 任意一个字符串转换为 MD5值 后, 要是想把它从MD5 转化回 字符串是 不太可能 的。

鱼式疯言

对于第三点的 不可逆性 , 想要还原成 原始数据 是不太可能的, 适合做 加密算法

<2>. SHA1

SHA1 与MD5是非常 类似的

小编在这里就不赘述了,希望小伙伴们好好吸收上面的 Udp报头 的主要内容哦 💖 💖 💖 💖

总结

  • Udp报文结构初识: 初步认识了 Udp报文= 报头+ 正文(载荷) , 以及 报文和报头的不同

  • Udp 数据格式与报文格式:核心的认识到 Udp是 以2个字节 来划分格式单元的, 并且深入的了解了 Udp报头的每一个结构

  • Udp的检验和: 认识了Udp的检验和的概念, 通过 CRC检验和来检查数据 是否 传输错误, 如果错误就进行
    丢失数据 处理方式。 并扩展认识了 MD5 和 SHA1 的两种不同的检验算法。

如果觉得小编写的还不错的咱可支持 三连 下 (定有回访哦) , 不妥当的咱请评论区 指正

希望我的文章能给各位宝子们带来哪怕一点点的收获就是 小编创作 的最大 动力 💖 💖 💖

在这里插入图片描述

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

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

相关文章

Tomcat 配置SSL

1、生成SSL证书&#xff1b; 2、配置Tomcat文件&#xff1b; <Connector port"8080" protocol"HTTP/1.1"SSLEnabled"true"keystoreFile"D:/hk.jks"keystorePass"123456"clientAuth"false"sslProtocol"TL…

js字符串格式的数字比较大小

1300>37 为什么是false? 在 JavaScript 中&#xff0c;当比较两个字符串时&#xff0c;比较是基于字典顺序&#xff08;也就是按字符的 Unicode 编码值进行比较&#xff09;的&#xff0c;而不是数字的实际大小。因此&#xff0c;1300 > 37 的结果是 false&#xff0c;…

Halcon提取边缘线段lines_gauss 算子

Halcon提取边缘线段lines_gauss 算子 edges_color_sub_pix和edges_sub_pix两个算子使用边缘滤波器进行边缘检测。还有一个常用的算子lines_gauss算子&#xff0c;也可以用于提取边缘线段&#xff0c;它的鲁棒性非常好&#xff0c;提取出的线段类型是亚像素精度的XLD轮廓。其原…

【GD32】RT-Thread实时操作系统移植(GD32F470ZGT6)

1. 简介 最近几年可以发现国产的实时操作系统越来越受欢迎了&#xff0c;本篇要移植的就是当中的翘楚——RT-Thread。 RT-Thread诞生于2006年&#xff0c;是国内以开源中立、社区化发展起来的一款高可靠实时操作系统 &#xff0c;由睿赛德科技负责开发维护和运营 。并且在上一年…

机器学习面试:请介绍下LR的损失函数?

在机器学习中&#xff0c;逻辑回归&#xff08;Logistic Regression, LR&#xff09;是一种广泛使用的分类算法&#xff0c;尤其适用于二分类问题。逻辑回归的损失函数主要是用来衡量模型预测值与真实值之间的差距。以下是对逻辑回归损失函数的详细介绍&#xff1a; 1. 逻辑回…

【千帆AppBuilder】使用Python调用基于官方的API创建图片故事的应用,一起体验下全代码模式下是怎样的效果

欢迎来到《小5讲堂》 这是《千帆》系列文章&#xff0c;每篇文章将以博主理解的角度展开讲解。 温馨提示&#xff1a;博主能力有限&#xff0c;理解水平有限&#xff0c;若有不对之处望指正&#xff01; 目录 背景基本信息名称简介角色指令 能力扩展组件对话开场白推荐问 模型选…

Rust到底值不值得学,之二

【图书介绍】《Rust编程与项目实战》-CSDN博客 《Rust编程与项目实战》(朱文伟&#xff0c;李建英)【摘要 书评 试读】- 京东图书 (jd.com) Rust到底值不值得学&#xff0c;之一 -CSDN博客 1.2.2 引用和借用 如果每次都发生所有权的转移&#xff0c;程序的编写就会变得异…

LVGL 控件之图表部件(lv_chart)

目录 一、图表1、组成2、类型3、显示数据3.1 lv_chart_set_ext_y_array/lv_chart_set_ext_x_array3.2 lv_chart_set_next_value3.3 lv_chart_set_all_value3.4 lv_chart_set_value_by_id3.5 在数组中手动设置 4、设置数据点数量5、辅助功能5.1 垂直范围5.2 分隔线5.3 设置默认起…

Mathematica如何进行公式推导和使用

目录 一、内容描述 二、如何打出公式[2] 三、具体操作 四、参考文献 一、内容描述 在Mathematica中通过几个简单命令可以将一大串的三角函数进行分解及简化&#xff0c;大大节省了推导时间&#xff0c;并保证了推导的正确性。 二、如何打出公式[2] 具体操作&#xff1a…

VastBase——VPatch版本控制

一、准备工作 1.概述 VPatch是用于Vastbase版本控制的工具。可以实现在单机环境下的升级和回退操作&#xff0c;具体功能如下&#xff1a; 升级环境检查&#xff0c;补丁冲突检查等。 PSU、PSR、OOP补丁的升级、回退、升级或回退失败时的还原。 升级过程中记录相关日志和步…

华为OD机试真题 - 来自异国的客人(Python/JS/C/C++ 2024 D卷 100分)

华为OD机试 2024E卷题库疯狂收录中&#xff0c;刷题点这里 专栏导读 本专栏收录于《华为OD机试真题&#xff08;Python/JS/C/C&#xff09;》。 刷的越多&#xff0c;抽中的概率越大&#xff0c;私信哪吒&#xff0c;备注华为OD&#xff0c;加入华为OD刷题交流群&#xff0c;…

使用老毛桃的一些坑

个性设置不要去点 三种模式的区别 ISO模式&#xff1a;直接U盘成为某个系统的启动盘 本地模式&#xff1a;相当于硬盘中植入一个PE系统&#xff0c;与后续的windows系统&#xff0c;一起组成双系统 普通模式&#xff1a;PE系统在U盘中&#xff0c;这样ISO可以是多种不同的系…

98.SAP MII功能详解(12)Workbench-Transaction Logic(For Next Loop)

目录 1.Logic->For Next Loop 2.演示 配置对象 配置连接 for循环的整体演示 1.Logic->For Next Loop 此操作用于在预定义的次数内执行任务。每次迭代都会执行直接跟随For Next循环操作的所有操作&#xff0c;直到达到To限制。 若要在达到To属性限制之前停止&…

我用GPT对RAG技术的学习和探索

思维导图 下图是我的学习和探索过程&#xff0c;红点表示已研究&#xff0c;黄点表示待研究 目录 思维导图RAG技术概述RAG 的关键优点应用场景 如何了解RAG技术的原理和应用1. **基础理论学习**2. **实战演练**3. **学习资源利用**4. **保持学习的连贯性**5. **多角度理解**6. …

SpringBoot配置返回数据不存在null

一、引言 最近在做项目中遇到一个神奇的问题&#xff0c;在测试返回银行三级数据的时候有的项目中返回的数据中把null值的数据返回了&#xff0c;而有的时候就不存在null值数据&#xff0c;如下所示&#xff1a; 存在null值情况 不含null值情况 但是我们可以看一下返回的VO的…

AG32 MCU如何指定一段RAM可以重启或复位不丢失数据

AG32 MCU如何指定一段RAM可以重启或复位不丢失数据? 目前还没这样的功能。 建议可以试下&#xff1a; 把系统ram设置成120K&#xff0c;最后的8K只能自己访问。 这样重启时&#xff0c;系统不会自动擦除最后的8K。可能是可以的。 备份寄存器大概有几十字节可以用。但是这个需…

2024最新comfyui保姆级教程来啦!comfyui工作流搭建看这一篇就够了!

前言 一、SD主流 UI Stable Diffusion&#xff08;SD&#xff09;因为其开源特性&#xff0c;有着较高的受欢迎程度&#xff0c;并且基于SD的开源社区及教程、插件等&#xff0c;都是所有工具里最多的。基于SD&#xff0c;有不同的操作界面&#xff0c;可以理解为一个工具的不…

基于zigbee的广告牌安全监测系统设计与实现(论文+源码)

1.系统方案 本次基于Zigbee的广告牌安全监测系统&#xff0c;使用Zigbee组网&#xff0c;一共具有2块板子&#xff0c;其中1块作为协调器&#xff0c;另1块作为终端。首先由协调器构建Zigbee网络&#xff0c;终端连上协调器网络后&#xff0c;每隔1秒钟采集一次传感器数据并通…

2024好用的骨传导耳机有哪些?精选这热门五款拒绝踩雷!

作为一名运动狂热者&#xff0c;我已经坚持运动八年了&#xff0c;在这八年运动时间里我最离不开的就是运动耳机了&#xff0c;一副好的运动耳机重要性可太多了&#xff0c;不仅更加可以提高我们的运动效率&#xff0c;还有更多元化的功能。运动耳机市场在这几年获得了长足的发…

Docker占用根目录/存储空间过多如何清理?

问题背景 使用df -h查看磁盘空间时发现根目录空间不多了&#xff0c;已使用96%&#xff0c;红色警告&#xff01;&#xff01;&#xff01; 于是使用df -h /* 一层一层定位&#xff0c;终于找到了一个大文件 9G多的文件夹&#xff0c;位置是&#xff1a; /var/lib/docker/o…