3.网络之UDP

news/2024/5/18 16:37:05 标签: 网络, udp, 网络协议

UDP协议

文章目录

  • UDP协议
  • 1. UDP概述
  • 2. UDP报文格式
  • 3. UDP传输限制
  • 4. UDP校验和
    • 4.1 CRC 循环冗余校验算法
    • 4.2 md5 校验算法

1. UDP概述

    UDP(UserDatagramProtocol)是一个简单的面向消息的传输层协议,尽管UDP提供标头和有效负载的完整性验证(通过校验和),但它不保证向上层协议提供消息传递,并且UDP层在发送后不会保留UDP消息的状态。因此,UDP有时被称为不可靠的数据报协议。如果需要传输可靠性,则必须在用户应用程序中实现。

    UDP使用具有最小协议机制的简单无连接通信模型。UDP提供数据完整性的校验和,以及用于在数据报的源和目标寻址不同函数的端口号。

  • UDP的优点:简单,轻量化,传输速度快、效率高。

  • UDP的缺点:不可靠传输

特点:

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

2. UDP报文格式

在这里插入图片描述
    UDP首部有8个字节,由4个字段构成,每个字段都是两个字节,

  • 源端口: 源端口号,需要对方回信时选用,不需要时全部置0.
  • 目的端口:目的端口号,在终点交付报文的时候需要用到。
  • 报文长度:UDP的数据报的长度(包括首部和数据)其最小值为8(只有首部)
  • 校验和:检测UDP数据报在传输中是否有错,有错则(差错检测)丢弃。
  • 载荷:存储的是应用层数据报

3. UDP传输限制

    由于UDP的16位报文长度(包含首部)所以UDP报文一次最大可以传输64kb左右的数据。

    64KB在实际应用中是一个非常小的数据量,在现在这个时代,随便一张照片可能就好几兆,那么如果一个数据的大小超过64KB,此时一个如何处理呢?

  • 可以将数据分成多个UDP数据报,分多次传输

  • 不适用UDP,使用TCP数据报传输(TCP没有这样的限制)

4. UDP校验和

    校验和是为了校验数据在传输过程中有没有损耗,从而检查数据的正确性。网络传输归根到底是将光电信号数字化,如果出现一些特殊情况,如:电场/磁场/高能射线等影响,就看会影响数据的传输。
    在数据报中加入校验和,只需要接收方接收到数据之后计算一个校验和,和数据报中的校验和对比,如果一致,那么数据大概率是正确的。

4.1 CRC 循环冗余校验算法

    循环冗余校验(Cyclic Redundancy Check, CRC)是一种根据网络数据包或计算机文件等数据产生简短固定位数校验码的一种信道编码技术,主要用来检测或校验数据传输或者保存后可能出现的错误。它是利用除法及余数的原理来作错误侦测的。这也是UDP中使用的校验算法。

4.2 md5 校验算法

    md5相比于CRC,它不是简单的进行相加,而是通过一系列的公式,进行更复杂的数学运算而得到。

md5算法的特点:

  • 定长:不管你的数据是 几KB 还是几MB 甚至是几GB,得到的结果长度都是固定的(有4字节版本,8字节版本…)

  • 分散:原始数据即使改变了1位,得到的MD5值都会相差很大,会让结构更加分散

  • 不可逆:通过原始数据计算出MD5值,很容易,但是通过MD5值去计算出原始数据,很难,几乎是不可能的


http://www.niftyadmin.cn/n/5143511.html

相关文章

复旦教授如何看待人工智能的出现?一句话:科技应该造福人类!

原创 | 文 BFT机器人 01 引言 今年5月1日当天,第一波AI失业潮到来。科技巨头IBM公司宣布暂停7800人的招聘,这些人的工作岗位将由AI取代。 此前3月底,高盛集团发布报告,预计全球将有3亿个工作岗位会被生成式AI取代,其…

Vue多级路由展示

注意事项&#xff1a;路由出口 <router-view :key"key" /> 注意事项&#xff1a;路径层级 // --------- 文件层级展示 ----------// // 文件&#xff1a; src // 文件&#xff1a; layouts // 文件&#xff1a;AppMain > index.vue // 二级展示出口…

【计算机网络】(谢希仁第八版)第三章课后习题答案

第三章 1.数据链路(即逻辑链路)与链路(即物理链路)有何区别? “电路接通了”与”数据链路接通了”的区别何在? 答&#xff1a;数据链路与链路的区别在于数据链路出链路外&#xff0c;还必须有一些必要的规程来控制数据的传输&#xff0c;因此&#xff0c;数据链路比链路多了…

Colorful Image Colorization灰度图像上色

论文标题&#xff1a;https://arxiv.org/pdf/1603.08511.pdf 论文地址&#xff1a;https://arxiv.org/pdf/1603.08511.pdf github地址&#xff1a;https://github.com/richzhang/colorization 论文信息概要 问题描述和背景 本文的研究问题是如何将灰度照片变成逼真的彩色图像…

Tomcat运行日志乱码问题/项目用tomcat启动时窗口日志乱码

文章目录 一、问题描述&#xff1a;二、产生原因三、解决方法 一、问题描述&#xff1a; 项目在idea中运行时日志是正常的&#xff0c;用Tomcat启动时发现一大堆看不懂的文字&#xff0c;如 二、产生原因 产生乱码的根本原因就是编码和解码不一致&#xff0c;举个例子就是翻…

autoFac 生命周期 试验

1.概述 autoFac的生命周期 序号名称说明1InstancePerDependency每次请求都创建一个新的对象2InstancePerLifetimeScope同一个Lifetime生成的对象是同一个实例3SingleInstance每次都用同一个对象 2.注 InstancePerLifetimeScope 同一个Lifetime生成的对象是同一个实例&#x…

各种爱心特效代码免费分享

「链接&#xff1a;https://pan.xunlei.com/s/VNi9l3Mqp9oEflga1T6M-ZUOA1?pwdsam3# 提取码&#xff1a;sam3”复制这段内容后打开手机迅雷App&#xff0c;查看更方便」 「链接&#xff1a;https://pan.xunlei.com/s/VNi9lWqdFIwdtD5sdCDZFamoA1?pwdka8b# 提取码&#xff1a;…

0056【Edabit ★☆☆☆☆☆】【数组反转】Reverse an Array

0056【Edabit ★☆☆☆☆☆】【数组反转】Reverse an Array arrays language_fundamentals numbers Instructions Write a function to reverse an array. Examples reverse([1, 2, 3, 4]) // [4, 3, 2, 1] reverse([9, 9, 2, 3, 4]) // [4, 3, 2, 9, 9] reverse([]) // []N…