UDP数据报结构分析(面试重点)

news2025/1/15 20:32:10

        在传输层中有UDP和TCP两个重要的协议,下面将针对UDP数据报的结构进行分析

UDP结构图示

 UDP报头结构的分析

        UDP报头有4个属性,分别是源端口,目的端口,UDP报文长度,校验和,它们都占16位2个字节,所以取值范围是0-65535

        一.源端口

                源端口表示发送数据时,发送方的端口号,由于占16位2个字节,所以取值范围是0-65535,所以一个合法的端口号,有效范围就是0-65535不能再大了(实际上0是不使用的),

                知名端口号

                        在1-1024这个范围的端口号,系统赋予了特定的含义,一般也不建议使用,这些端口号已经给一些名气比较大的服务器提前安排好了(坐飞机的头等舱一样)

        二.目的端口号

                目的端口号表示发送数据时,接收方的端口号,其余的特点和源端口号相同

        三.UDP报文长度

                表示UDP数据报的长度,由于占用两个字节,所以也表示一个UDP数据报能传输的数据是有限制的,限制在大约64kb的数据,所以当我们要传输的数据大于64kb时就不建议用UDP协议的方式来传输数据了,建议采用TCP协议的方式传输,因为TCP数据报传输数据是不限制大小的

        四.校验和

                当我们在进行网络传输数据的过程中,本质上就是光信号/电信号/电磁波的数据传输,很可能就会受到外界的干扰,数据可能会出错,比如,本来你要传输的数据是0变成了1,本来是1变成了0(发生了比特翻转),此时数据就出错了,所以接收方在收到数据了以后就需要先确认一下,这个数据是否是一个错误的数据,校验和就是简单有效的方式

                校验和的工作原理

        校验和会把UDP数据报中的每一个字节,都依次进行累加,把累加的结果,保存在两个字节的变量中,加着加着可能就溢出了,但溢出也无所谓,将所有的字节都加了一遍,最终就获得了校验和

        在传输数据的时候,就会把原始数据和校验和一起传递过去,接收方收到数据,同样也收到了发送方送过来的校验和,接收方按同样的方式再算一遍,获得了新的校验和,将新的校验和与旧的校验和进行对比,如果相同就说明数据正确,反之则不正确,要重新发送数据

        此时可能会有一些高手想到,就算校验和相同也可能传输的数据是错误的,因为二进制数据可能会有一个位置从0变为了1,另一个位置从1变为了0,这样算出来的校验和还是相同的,但传输的数据是错误的

        确实会有这样的情况,但这只能算是一个误差,误差是不可避免的,因为本来出现比特翻转就是一个小概率事件,而发生两次比特翻转并且还刚好抵消,这更是非常小的概率了,所以我们只将这种情况看作是一个误差。

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

CSS自己实现一个步骤条

前言 步骤条是一种用于引导用户按照特定流程完成任务的导航条,在各种分步表单交互场景中广泛应用。例如:在HIS系统-门诊医生站中的接诊场景中,我们就可以使用步骤条来实现。她的执行步骤分别是:门诊病历>遗嘱录入>完成接诊…

福昕阅读器文档无法高亮的问题 转

转自福昕阅读器文档无法高亮的问题_福昕pdf高亮用不了_没有价值的生命的博客-CSDN博客 最近在阅读一篇PDF文档时,对一些内容进行高亮时,发现不能够进行高亮,然后通过在网上查找解决方法算是解决了我的问题。下面我将总结2点不能进行注释的情…

无涯教程-Perl - sqrt函数

描述 此函数返回EXPR的平方根;如果省略,则返回$_。大多数情况下,此函数返回浮点数。 语法 以下是此函数的简单语法- sqrt EXPRsqrt返回值 该函数返回浮点数。 例 以下是显示其基本用法的示例代码- #!/usr/bin/perl -w$resultsqrt(4); print " sqrt(4) …

2024第12届国际生物发酵展,3月6-8日济南举办

2024第12届国际生物发酵产品与技术装备展(济南展) 2024年3月6-8日 | 山东国际会展中心 2024第13届国际生物发酵产品与技术装备展(上海展) 2024年8月7-9日 | 上海新国际博览中心 主办单位: …

采用nodejs+vue语言和mysql汽车4s店服务管理系统 _od8k

为设计一个安全便捷,并且使用户更好获取本汽车服务信息,本文主要以安全、简洁为理念,实现用户快捷寻找汽车服务信息,从而解决汽车服务信息复杂难辨的问题。该系统以vue架构技术为基础,采用nodejs语言和mysql数据库进行…

终于理解正向代理和反向代理的联系和区别啦~

正向代理、反向代理 正向代理反向代理联系区别 正向代理 正向代理(forward proxy):是一个位于客户端和目标服务器之间的服务器(代理服务器),为了从目标服务器取得内容,客户端向代理服务器发送一个请求并指定目标&…

实时设备状态监测与故障诊断:制造业转型的驱动力

在当今快节奏、高竞争的制造业环境中,生产效率和设备可靠性成为企业成功的关键。随着技术的不断发展,实时设备状态监测与故障诊断正成为制造业转型的重要驱动力。这一创新技术不仅提供了提前预警和预测性维护,还为制造商带来了更高的生产效率…

事务异常:Transaction rolled back because it has been marked as rollback-only解决方案

目录 事务的概念为何需要事务事务异常的原因解决方案1、方案1(一般采用这种)2、方案2 事务的概念 事务这个词,其实我们最先接触的地方应该是数据库,我们会知道事务有着四种特性,分别是: 原子性&#xff1…

windows11 修改默认存储位置

windows11 修改默认存储位置 https://zhuanlan.zhihu.com/p/367637690

SCS【31】减少障碍,加速单细胞研究数据库(Single Cell PORTAL)

细胞生信分析教程 桓峰基因公众号推出单细胞生信分析教程并配有视频在线教程,目前整理出来的相关教程目录如下: Topic 6. 克隆进化之 Canopy Topic 7. 克隆进化之 Cardelino Topic 8. 克隆进化之 RobustClone SCS【1】今天开启单细胞之旅,述说…

SElinux 导致 Keepalived 检测脚本无法执行

哈喽大家好,我是咸鱼 今天我们来看一个关于 Keepalived 检测脚本无法执行的问题 一位粉丝后台私信我,说他部署的 keepalived 集群 vrrp_script 模块中的脚本执行失败了,但是手动执行这个脚本却没有任何问题 这个问题也是咸鱼第一次遇到&…

koa2脚手架koa-generator的使用

koa2脚手架的基本使用 简介前言:使用koa2的脚手架koa-generator,使用非常简单,容易上手 首先,我们需要全局安装 npm install -g koa-generator安装成功后,需要创建项目 koa2 koapro[koapro 项目名称] 或者 koa2 -e [koapro 项目名…

华为网络篇 RIP路由手工汇总-27

难度2复杂度2 目录 一、实验原理 二、实验拓扑 三、实验步骤 四、实验过程 总结 一、实验原理 在网络规划过程中,我们避免不了使用VLSM技术,但是使用VLSM后会有一个问题,就是子网较多时会占用系统资源。我们可以使用路由汇总的方法&…

Doris Summit 2023 正式启航,议题征集 合作伙伴招募火热进行中

在数字化进程不断演进的时代,数据呈现爆发增长。在这数据洪流之中,数据实时分析的重要性愈发凸显,并成为企业成功的关键要素。 作为专注于实时分析的开源实时数据仓库 Apache Doris,从开源至今已走过 6 个年头,这些年…

学习笔记十九:Pod常见的状态和重启策略

Pod常见的状态和重启策略 常见的pod状态第一阶段:第二阶段:扩展: pod重启策略测试Always重启策略正常停止容器内的tomcat服务非正常停止容器里的tomcat服务 测试never重启策略正常停止容器里的tomcat服务非正常停止容器里的tomcat服务 测试On…

配置 NTP

server host.domain8.rhce.cc iburst配置 NTP 配置 node1 作为 NTP 的客户端,跟时间服务器 host.domain8.rhce.cc 同步时间。 yum install chrony 安装chrony软件包 systemctl status chronyd 查看chronyd服务是否开启,没有开启使用一下任何一条…

【mysql】事务的四种特性的理解

🌇个人主页:平凡的小苏 📚学习格言:命运给你一个低的起点,是想看你精彩的翻盘,而不是让你自甘堕落,脚下的路虽然难走,但我还能走,比起向阳而生,我更想尝试逆风…

Codeforces Round 893 (Div. 2)

A.首先题目意思就是看谁拥有的按钮多&#xff0c;所以优先按c的按钮&#xff0c;按两次c等于没按&#xff0c;所以最后看c的奇偶&#xff0c;奇数代表第一个人能多拥有一个&#xff0c;最后判断第一个人和第二个人拥有的总数即可 #include<bits/stdc.h> using namespace…

【Ubuntu】简洁高效企业级日志平台后起之秀Graylog

简介 Graylog 是一个用于集中式日志管理的开源平台。在现代数据驱动的环境中&#xff0c;我们需要处理来自各种设备、应用程序和操作系统的大量数据。Graylog提供了一种方法来聚合、组织和理解所有这些数据。它的核心功能包括流式标记、实时搜索、仪表板可视化、告警触发、内容…

spring(1)

文章目录 IOC容器IOC容器和beans的介绍实例化 BeanBeanFactory&#xff1a;ApplicationContext 容器概述配置元数据实例化容器组合基于xml的配置元数据使用容器 bean的概述命名bean别名的使用 实例化bean构造函数实例化静态工厂实例化实例工厂方法bean 在运行时的实际类型 依赖…