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

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

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

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

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

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

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

在这里插入图片描述

引言

在网络通信的世界里,速度与效率往往是至关重要的。想象一下,当你观看在线视频或进行实时游戏时,背后是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.kler.cn/a/289635.html

相关文章:

  • 985研一学习日记 - 2024.11.12
  • 智能零售柜商品识别
  • WPF 应用程序中使用 Prism 框架时,有多种方式可以注册服务和依赖项
  • Android HandlerThread 基础
  • 统信UOS开发环境支持Electron
  • Springboot应用的端口配置方法解析与优先级详解
  • 计算机网络 第2章 物理层
  • 多个Node.js版本之间切换
  • css spacing设置间距
  • redis缓存和数据库通过延迟双删除实现数据一致性
  • Ghidra逆向工具之旅与二进制代码分析【4】
  • 通过设置JVM参数来启用GC(垃圾回收)日志
  • Super Image 2.1.0 图像处理软件,修复老照片、无损放大、智能修复,本地处理保护隐私
  • 如何选择SSD
  • java实现ocr功能(Tesseract OCR)
  • 数据库中LIKE 和 NOT LIKE的用法辨析
  • 嵌入式学习(数据结构:链表)
  • Apache Storm:入门了解
  • 图片去噪及边缘检测
  • Java设计模式——工厂模式
  • 力扣-968监控二叉树(Java贪心详细题解)
  • 用于基于骨架的动作识别的空间时间图卷积网络 ST-GCN (代码+数据集+模型)
  • 使用 Spring Cloud 有什么优势?
  • python读取excel数据详细解说
  • 缺失值插补解释:六种插补方法?
  • opencv学习时常用linux命令