• 首页 首页 icon
  • 工具库 工具库 icon
    • IP查询 IP查询 icon
  • 内容库 内容库 icon
    • 快讯库 快讯库 icon
    • 精品库 精品库 icon
    • 问答库 问答库 icon
  • 更多 更多 icon
    • 服务条款 服务条款 icon

UDP 协议

武飞扬头像
十七ing
帮助3

一、传输层中的 UDP 协议

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

1. UDP 协议端格式

学新通

注意几个点:

  • 源端口号相当于发件人的号码
  • 目的端口号相当于收件人的号码
  • 一个 UDP 数据报的最大长度为 64KB
    学新通

2. 对于校验和进行一些拓展

在网络编程中传输的数据,受网络波动、网络传输的延迟性等影响,可能会造成在传输数据的过程中,出现一些问题。网络传输的数据本质都是一些 【 0 / 1 】的比特流,这些 bit 流都是通过光信号或者电信号来表示的。如果传输过程中,受到干扰, 就容易出现 " 比特翻转 " 的情况 ( 磁场、辐射… ) ,这就会使得 0 转换成 1,1 转换成 0

而校验和这一机制,其实就是为了验证当前的数据是不是出现问题了。

对校验和举个例子:

我现在去超市买东西,我准备买 【 铅笔 矿泉水 薯片 牙刷 】这四样商品,在出发前,我心中牢记有四样商品要买,当到柜台结账之前,我把手中的商品数一数,发现是四件,说明是对的,如果是三件或五件,那么就是错了…

但是这就有一个弊端,当我把矿泉水买成果汁了,但结果还是四样商品,那么就还是出错了…那么,检验和这一机制的存在一定能证伪。当传输之前的数据相加为 A ,传输之后的数据相加为 B ,两者不同,说明是出错了。而传输之前的数据相加为 A ,传输之后的数据相加为 A ,这不能保证中间的数据没有改变!

3. 拓展

那么在网络编程中,怎么才能既验证中间数据,又能验证结果呢?接下来,我们一起来看看两种校验和的方式。

(1) 了解 crc 校验和

CRC:Cyclic Redundancy Check ( 循环冗余码校验 )

现在有一串数据,把其当作二进制的数据,依次按照字节为单位取出数据,然后将这些数据进行累加。( 在累加的过程中,若溢出了,则溢出的部分就舍弃 )
传输数据的时候,把【 数据 与 crc 校验和 】一起传输给目标,当接收方收到了【 数据 与 crc 校验和 】,接收方就需要验证一下, 查看当前的数据是否是对的。

此时接收方是这么做的:接收方按照同样的算法,再针对数据部分,计算一遍 crc 校验和,把这个新计算的结果和收到的 crc 校验和进行对比,看看结果是不是一致的。

本质上,就是在网络传输数据之前,算一遍 crc,接收数据之后,也算一遍 crc 。如果这个数据在传输之前和传输之后,数据内容不变,那么新计算的 crc 也是一致的。如果传输过程中出现了比特翻转,接收到的数据和传输之前的数据就不一样,此时,前后两份 crc 大概率是不相同的。

(2) md5 算法

md5 算法是一种哈希算法,确切地说:它是一个 " 非对称的哈希算法 ",md5 算法的应用场景非常多,用作校验和只是其中的一个场景。我们之前学过的数据结构常用的是针对整数的哈希算法,数据结构中见的最基础的可能就是通过数组求余数。而 md5 算法就是一个典型的字符串哈希算法。
md5 算法本质上是针对数据进行一系列的数学变换…我们暂且不考虑数学运算,我们看看其对应的特性,以及为什么它可以作为检验和的功能。

md5 算法的特性
  • 定长:无论输入的字符串是多长多短,得到的 md5值 都是固定长度。
  • 分散:只要输入的字符串,哪怕只变化了一点点,得到的 md5 值 都会差别巨大,当然,这也是当前哈希算法的核心所在。
  • 不可逆:给定原字符串,很容易得到 md5 值;但给定了 md5值,恢复出原始的字符串的概率几乎为 0

那么,md5 的分散性就可以用作检验和,为什么呢?
因为两个数据相同的 md5 值是相同的。那么如果两个数据不同,哪怕只是有一点差别,这时两者的 md5值 差别就很大,以此来作为网络传输前后数据的检验。另外,md5 算法也可以用作密码学的场景。

这篇好文章是转载于:学新通技术网

  • 版权申明: 本站部分内容来自互联网,仅供学习及演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,请提供相关证据及您的身份证明,我们将在收到邮件后48小时内删除。
  • 本站站名: 学新通技术网
  • 本文地址: /boutique/detail/tanhfiajah
系列文章
更多 icon
同类精品
更多 icon
继续加载