传输层—UDP—校验和

传输层—UDP—校验和

学习一个协议,当然要掌握协议的特性,还需要理解协议报文格式。

UDP

UDP 基本特点:无连接、不可靠传输、面向数据报、全双工

UDP报头包含:源端口、目的端口、UDP报文长度、校验和。

UDP载荷中:是完整的应用层协议数据外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

在传输层,一次通信,涉及到 5 元组。(源端口、目的端口、源IP、目的IP,协议类型)

端口号:最大是2个字节,能表示多大的数据范围呢? 0 ~ 65535,这就是合法端口号的有效范围,不能再大了(实际上 0 不会使用的)。1-1024 这个范围的端口号,系统赋予了特定的含义,一般也不建议咱们使用。(相当于飞机的头等舱仓,都是知名端口号)

UDP报文长度:最大2个字节,传输数据时是16位,其范围也是 0~65535 字节,换算一下就是 64 kb。一个 UDP 报文长度最长也就是 64kb.

对于 199x 那个年代来说,64kb 可谓是一个很大的数字,可以表示很多东西。

但对于现在的我们来说,64kb 非常小。那我们能不能把这个长度给改大呢,用4个字节来表示??答案是否定的。

那我们在写程序的时候,传输的报文超过2字节怎么办??

  1. 在应用层中,把数据拆分成多组,通过多个UDP数据报进行传输
  2. 使用 TCP 代替 UDP。TCP 没有要求报文长度。

以下的字节范围大小需要牢记。外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

校验和

在网络传输中,受到外界干扰,数据可能会出错!!

因此,在接收方收到数据后,就需要先确认一下,这个数据是否是一个错误的数据。校验和就是简单有效的方式。

例子:

我去市场买菜,列出一个清单:黄瓜、鸡蛋、西红柿、芹菜。一共四样。

当我卖完菜了,清点一下数目发现不对劲,只买了三样菜,此时就发生了异常。

实际的校验和,不仅仅是一个”长度“,而是根据数据的内容来生成的。当内容发生改变的时候,就能感知出错误。

UDP 的校验和具体是咋实现的? 使用了一种简单粗暴的 CRC 校验算法。(循环冗余校验和)外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

加着加着,可能就溢出了~~溢出也无所谓。所有字节都加了一遍,最终就得到了校验和。传输数据的时候,就会把原始数据和校验和一起传递过去。接收方收到数据,同时也收到了发送端送过来的校验和(I日的校验和)。接收方按照同样的方式再算一遍,得到新的校验和。如果旧的校验和和新的校验和相同,就可以视为数据传输过程中是正确的。如果不同,则视为传输过程中数据出错了。

但是,有时候会出现,校验和相同,但是传输的数据和发送时候的数据不同,也就是数据发生错误,但校验和是对的。

原因:好巧不巧,某个字节,多了1。某个字节,少了1。二者相加,正好抵消。

此校验和方法并不是那么严谨,但在工程上,也是够用的。

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

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

C++STL算法库中谓词的使用

什么是c的谓词 谓词概念: 谓词函数是一个判断式,一个返回bool值的函数或者仿函数,有几个入参就是几元谓词。一般做一个函数的参数使用【引用自百度百科】。 常见的可以作为谓词的东西:函数、函数指针、函数对象、lambda表达式&am…

gprMax安装步骤

本来是想直接在base环境下直接弄的,但是报错了,因为base环境里的conda版本不匹配,于是重新建立虚拟环境gprMax,如下所示。 然后激活建立的gprMax环境,在gprMax环境中安装git 参考文章: https://zhuanlan.…

Unity_ET框架项目-斗地主_启动运行流程

unity_ET框架项目-斗地主_启动运行流程 项目源码地址: Viagi/LandlordsCore: ET斗地主Demohttps://github.com/Viagi/LandlordsCore下载项目到本地。 启动运行步骤: 下载目录如下: 1. VS(我用是2022版VisualStudio&#xff09…

小小的日志,大大的坑 | 京东云技术团队

1. 背景 压测过程中优化线程池以后单机qps存在性能瓶颈,优化过程中发现默认线程池及日志对性能存在严重的影响所以引发了一系列对日志优化的整理 2.哪些场景可能导致性能问题 在任何系统中,日志都是非常重要的组成部分,它是反映系统运行情…

pip指定优先从豆瓣源下载包

对于 Unix/macOS 系统,使用以下命令: pip config set global.index-url https://pypi.douban.com/simple/ 对于 Windows 系统,打开命令提示符或PowerShell,并使用相同的命令: pip config set global.index-url http…

部署Nextcloud详细步骤及优化方法

一、安装PHP8.0以上 我这里使用PHP8.0.30 [rootlocalhost ~]# php -v PHP 8.0.30 (cli) (built: Aug 3 2023 17:13:08) ( NTS gcc x86_64 ) Copyright (c) The PHP Group Zend Engine v4.0.30, Copyright (c) Zend Technologies [rootlocalhost ~]# 安装方法参考 二、安装MY…

如何设计接口公共返回码:让你的API“说话”更地道!

在构建RESTful API时,设计一套清晰、一致且易于理解的公共返回码体系是至关重要的。它不仅能够让前端开发者快速理解后端的响应状态,还能够提升整个系统的健壮性和可维护性。本文将深入探讨如何设计一个优秀的接口公共返回码体系,并提供Java实…

【八】python装饰器模式

文章目录 8.1 装饰器模式简介8.2 装饰器模式作用8.3 装饰器模式构成8.3.1 装饰器模式包含以下几个核心角色:8.3.2 UML类图 8.4 装饰器模式python代码实现8.4.1 基本装饰器的使用8.4.2 多个装饰器的执行顺序8.4.3 带返回值的装饰器的使用8.4.4 装饰器模式-关联类模式…

5V低压步进电机驱动芯片GC6150,应用于摄像机,机器人 医疗器械等产品中。具有低噪声、低振动的特点

GC6150是双通道5V低压步进电机驱动器,具有低噪声、低振动的特点,特别适用于相机变焦对焦系统、万向架、摇头机等精度、低噪声STM控制系统,该芯片为每个通道集成了一个256微步的驱动器。通过SPI & T2C接口,客户可以方使地调整驱…

OneNote for Windows10 彻底删除笔记本

找了超多方法,都没有用,我的OneNote都没有文件选项,要在OneDrive中删除,但是一直登不进,然后又找到一个方法: 在网页中打开Office的控制面板 "Sign in to your Microsoft account" 在“最近”一…

共筑首都绿色美好出行!苏州金龙再向北京交付33辆纯电动旅游大巴

应时而动,创新求变,方能始终屹立于市场。2023年,随着旅游市场的复苏,北京市旅游消费潜力进一步释放,客运需求量快速增长,与此同时绿色、高端、个性化旅游客车也成为市场趋势。 11月底,33辆苏州…

STM32单片机项目实例:基于TouchGFX的智能手表设计(4)LPBAM的应用

STM32单片机项目实例:基于TouchGFX的智能手表设计(4)LPBAM的应用 目录 一、概述 二、LPBAM简介 2.1 支持 LPBAM 的外设 三、LPBAM硬件机制 3.1 电源和时钟架构 3.2 速度限制 3.3 LPGPIO_IOToggle实验 一、概述 STM32U5 系列微控制器基…