【网络原理】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 的两种不同的检验算法。

如果觉得小编写的还不错的咱可支持 三连 下 (定有回访哦) , 不妥当的咱请评论区 指正
希望我的文章能给各位宝子们带来哪怕一点点的收获就是 小编创作 的最大 动力 💖 💖 💖

相关推荐
铁松溜达py6 分钟前
编译器/工具链环境:GCC vs LLVM/Clang,MSVCRT vs UCRT
开发语言·网络
衍生星球5 小时前
【网络安全】对称密码体制
网络·安全·网络安全·密码学·对称密码
掘根5 小时前
【网络】高级IO——poll版本TCP服务器
网络·数据库·sql·网络协议·tcp/ip·mysql·网络安全
友友马6 小时前
『 Linux 』HTTP(一)
linux·运维·服务器·网络·c++·tcp/ip·http
2401_872514976 小时前
深入探究HTTP网络协议栈:互联网通信的基石
网络·网络协议·http
Static_Xiao6 小时前
计算机网络 8.*结构化布线
计算机网络
chenjingming6666 小时前
windows使用tcpdump.exe工具进行抓包教程
网络·测试工具·tcpdump
初黑子zzz6 小时前
rsync
网络
蜗牛学苑_武汉7 小时前
设计模式之代理模式
java·网络·java-ee·代理模式