UDP报文结构
文章目录
- 一、UDP报头
- 1.1源端口号
- 1.2目的端口号
- 1.3UDP报文长度
- 1.4UDP校验和(checksum)
UDP报头和UDP载荷(payload)之间的拼接可以认为是一个“字符串拼接”,里面是二进制数据。
一、UDP报头
UDP报头分成4个部分,每个部分2个字节。分别是:
1.1源端口号
1.2目的端口号
1.3UDP报文长度
因为UDP报文长度只有两个字节,表示的范围是0 ~ 65535,0 ~ 65535表示报文长度为0~65535字节(即UDP数据报最大为64kb,口头上说UDP能携带的最大数据是64kb,实际上UDP能携带的最大数据是64kb-8字节(65535-8字节,因为前8个字节是报头不携带数据),但工程上这8个字节可以忽略不计仍然说UDP能携带的最大数据是64kb),64kb的空间很小,所以使用UDP难以表示一个很大的数据报。
当网络通信交互的数据很大时,可以想到两种解决方案:(1)把数据拆分成多个包,使用多个UDP数据包进行传输。但这个方案缺点很大,因为开发成本、测试成本太高(因为要考虑怎样去拆包、怎样去组包、组包时的包的顺序不对怎么办、组包时的包出现缺失出现错误怎么办……) (2)使用TCP,因为TCP没有包大小限制。
那程序员能否对UDP报文长度进行升级,比如2个字节变为4个字节,那使用UDP难以表示一个很大的数据报的问题不就解决了吗?答案是不可以,因为升级要通信双方都要升级,这样双方的数据才能对应得上才能进行通信,换言之全世界的设备都得一起升级,而且升级的是操作系统内核(UDP是内核中实现的),这很难完全协调去进行升级。除非有一个全新的协议把UDP彻底替换掉。
1.4UDP校验和(checksum)
校验和:网络传输中由于一些外部干扰可能会出现数据传输出错的情况(比如磁场电场等干扰光/电信号使某个地方原来是低电平传输变为高电平传输(比特翻转))。因此需要有办法识别出出错的数据,校验和就是这样的一种检查手段。
校验和本质上是一个字符串,体积比原始的数据更小,由原始数据生成。原始数据相同得到的校验和就一定相同,校验和相同原始数据大概率相同(理论上会出现不同的情况,但这个概率非常低可以忽略不计)。
基于校验和完成数据校验:(1)发送方把要发送的数据data1通过一定的算法计算出校验和checksum1。(2)发送方把data1和checksum1一起通过网络发送出去。(3)接收方收到数据data2(data2可能和data1不一样)和checksum1。(4)接收方再根据data2按照同样的算法重新计算校验和得到checksum2。(5)对比checksum1和checksum2是否相同不同则认为data2和data1一定不相同。相同则认为data2和data1大概率相同(理论上存在不同的可能性,但概率很低可以忽略不计)。
计算校验和有很多种算法:UDP中使用的是CRC算法(循环冗余算法)。
循环冗余算法:把当前要计算校验和的数据的每个字节都进行累加保存到2个字节的UDP校验和中去。如果中间某个数据出现传输错误,第二次计算的校验和就会和第一次不同。
CRC算法不是特别靠谱,因为两个不同的数据得到相同的CRC校验和的概率比较大,比如传过来的数据少了一个字节的同时又多了一个字节导致计算出来的校验码和之前的校验码依然相同。
此外还有md5/sha1算法(md5和sha1的特点非常类似,下面介绍md5算法的特点)。
(1)定长。无论原始数据多长,计算出来的mad5校验码的长度都是固定的。这个特点让mad5非常适合用于做校验和,因为校验和本身不应该很长不然不方便网络传输。
(2)分散。两个原始数据哪怕绝大部分都一样,只要其中一个字节不同,得到的md5校验码都会差异很大。这让md5算法也非常适合作为哈希算法,因为哈希表把一个key通过hash函数转换成数组下标,希望hash函数计算出来的结果尽可能分散这样产生hash冲突的概率才会比较小。
(3)不可逆。给定一个原始数据,计算md5校验和容易,但通过md5校验和还原出原始数据很难。因此md5算法也可以应用在一些密码学场景中。
有一些应用层协议是基于UDP来实现的(比如DNS:域名解析协议),但这部分协议不算很多,相比于UDP,TCP在更多情况下更具有优势很多时候会优先考虑使用TCP。
相关文章:
UDP报文结构
文章目录 一、UDP报头1.1源端口号1.2目的端口号1.3UDP报文长度1.4UDP校验和(checksum) UDP报头和UDP载荷(payload)之间的拼接可以认为是一个“字符串拼接”,里面是二进制数据。 一、UDP报头 UDP报头分成4个部分,每个部分2个字节。分别是: 1…...
(高阶) Redis 7 第21讲 IO多路复用模型 完结篇
🌹 以下分享 Redis IO多路复用模型,如有问题请指教。🌹🌹 如你对技术也感兴趣,欢迎交流。🌹🌹🌹 如有对阁下帮助,请👍点赞💖收藏🐱🏍分享😀 IO多路复用模型是什么 I/O:网络IO 多路:多个客户端连接(连接即套接字描述符,即socket或channel),指…...
2023年入职/转行网络安全,该如何规划?
前言 前段时间,知名机构麦可思研究院发布了 《2022年中国本科生就业报告》,其中详细列出近五年的本科绿牌专业,其中,信息安全位列第一。 网络安全前景 对于网络安全的发展与就业前景,想必无需我多言,作为…...
解密RabbitMQ:你所不知道的端口及其重要性
解密RabbitMQ:你所不知道的端口及其重要性 前言第一部分:AMQP默认端口(5672)第二部分:RabbitMQ管理界面端口(15672)第三部分:Erlang Port Mapper Daemon(epmd)端口(4369&…...
Docker 环境搭建 (centeros)
CentOS环境下安装Docker 本文档将指导您在CentOS操作系统上安装Docker。Docker是一个开源的容器化平台,可以帮助您轻松地创建、部署和管理容器化应用程序。 步骤1:更新系统 在安装Docker之前,首先确保您的系统已经更新到最新版本。打开终端…...
服务器编程基本框架
服务器编程基本框架 虽然服务器程序种类繁多,但其基本框架都一样,不同之处在于逻辑处理。 I/O 处理单元是服务器管理客户连接的模块。它通常要完成以下工作:等待并接受新的客户连接,接收客户数据,将服务器响应数据返回…...
Leetcode——数组的遍历系列练习
485. 最大连续 1 的个数 class Solution { public:int findMaxConsecutiveOnes(vector<int>& nums) {// 记录最大连续1个数int max 0;// 记录数组中存在1个数int sum 0;// 遍历连续1个数int count 0;for (int i 0; i < nums.size() - 1; i) {if (nums[i] 1)s…...
免费的ChatGPT与StableDiffusion AI绘画 二合一 附在线地址
ChatGPT与StableDiffusion 在线地址在文末 介绍 嘿,大家好!今天我要给大家介绍一个非常酷炫的技术结合——ChatGPT与StableDiffusion的合作。听起来是不是很有趣?那么,让我们一起来看看这个组合到底能带给我们什么样的奇妙体验…...
vivado FFT IP仿真(3)FFT IP选项说明
xilinx FFT IP手册PG109 1 Configuration 2 Implementation 3 Detailed Implementation IP Symbol...
正点原子嵌入式linux驱动开发——Busybox根文件系统构建
前面已经移植了TF-A、Uboot和Linux kernel,就剩最后一个 rootfs(根文件系统)了,本章就来学习一下根文件系统的组成以及如何构建根文件系统。这是Linux系统移植的最后一步,根文件系统构建好以后就意味着拥有了一个完整的、可以运行的最小系统 …...
React闭包
声明 本文将深入探讨React与闭包之间的关系。 我们将首先介绍React和闭包的基本概念,然后详细解释React组件中如何使用闭包来处理状态和作用域的问题。 通过本文的阅读,你将对React中闭包的概念有更深入的理解,并能够在开发React应用时更好地…...
【VS Code】推荐一套我非常喜欢的主题和字体样式
话不多说,先上样式: 这里我的主题是 One Dark Pro,也是 VS Code 里面使用非常多的主题之一。直接安装插件即可使用。 我的字体是 JetBrains Mono,虽然使用的是 VS Code,但还是喜欢 webstorm 的字体。我们可以直接去官网…...
【SQL】MySQL中的约束
1. 主键约束(primary key): 相当于唯一约束非空约束分为单列主键,多列联合主键,一个表只有一个主键多列联合主键的每列都不能为空 2. 自增长约束(auto_increment): 用在单列主键后…...
css div左右布局
div左右布局 htm代码 <div class"content-box"><div class"left"></div><div class"right"></div></div>css样式 .content-box{height: 100%;width: 100%;display: flex; } .left{display: block;width:…...
06_Node.js服务器开发
1 服务器开发的基本概念 1.1 为什么学习服务器开发 Node.js开发属于服务器开发,那么作为一名前端工程师为什么需要学习服务器开发呢? 为什么学习服务器开发? 能够和后端程序员更加紧密配合网站业务逻辑前置扩宽知识视野 1.2 服务器开发可…...
git中添加不上传的文件夹或文件的名字
在该目录.gitignore中 添加不上传的文件夹或文件的名字...
Android: edittext禁止输入空格和特殊字符代码记录
一、前言:这个代码也是借鉴别人写的,我也看不太懂。为了方便日后用到就用这篇文章记录一下。 二、代码展示 /*** 禁止EditText输入空格** param editText*/public static void setEditTextInhibitInputSpace(EditText editText) {editText.addTextChang…...
SpringMVC常用注解
SpringMVC常用注解 RequestMapping:用于处理请求 url 映射的注解,可用于类或方法上。用于类 上,则表示类中的所有响应请求的方法都是以该地址作为父路径。RequestBody:注解实现接收 http 请求的 json 数据,将 json 转…...
微信小程序
文章目录 一、实现步骤(一)创建项目(二)创建页面(三)准备图片素材(四)编写页面结构1、编写轮播区域页面结构2、编写九宫格区域页面结构 (五)编写页面样式1、编…...
Python教程——配置环境,再探IDE
文章目录 一、Python安装下载安装验证 二、第一个Python程序常见问题 三、Python解释器四、PyCharm工具安装和配置安装使用PyCharm基本使用 一、Python安装 下载 如果我们想要使用Python语言编写程序,我们必须下载Python安装包并配置Python环境,我们现…...
LeetCode - 394. 字符串解码
题目 394. 字符串解码 - 力扣(LeetCode) 思路 使用两个栈:一个存储重复次数,一个存储字符串 遍历输入字符串: 数字处理:遇到数字时,累积计算重复次数左括号处理:保存当前状态&a…...
Leetcode 3577. Count the Number of Computer Unlocking Permutations
Leetcode 3577. Count the Number of Computer Unlocking Permutations 1. 解题思路2. 代码实现 题目链接:3577. Count the Number of Computer Unlocking Permutations 1. 解题思路 这一题其实就是一个脑筋急转弯,要想要能够将所有的电脑解锁&#x…...
多模态商品数据接口:融合图像、语音与文字的下一代商品详情体验
一、多模态商品数据接口的技术架构 (一)多模态数据融合引擎 跨模态语义对齐 通过Transformer架构实现图像、语音、文字的语义关联。例如,当用户上传一张“蓝色连衣裙”的图片时,接口可自动提取图像中的颜色(RGB值&…...
江苏艾立泰跨国资源接力:废料变黄金的绿色供应链革命
在华东塑料包装行业面临限塑令深度调整的背景下,江苏艾立泰以一场跨国资源接力的创新实践,重新定义了绿色供应链的边界。 跨国回收网络:废料变黄金的全球棋局 艾立泰在欧洲、东南亚建立再生塑料回收点,将海外废弃包装箱通过标准…...
Python爬虫(一):爬虫伪装
一、网站防爬机制概述 在当今互联网环境中,具有一定规模或盈利性质的网站几乎都实施了各种防爬措施。这些措施主要分为两大类: 身份验证机制:直接将未经授权的爬虫阻挡在外反爬技术体系:通过各种技术手段增加爬虫获取数据的难度…...
2025季度云服务器排行榜
在全球云服务器市场,各厂商的排名和地位并非一成不变,而是由其独特的优势、战略布局和市场适应性共同决定的。以下是根据2025年市场趋势,对主要云服务器厂商在排行榜中占据重要位置的原因和优势进行深度分析: 一、全球“三巨头”…...
嵌入式学习笔记DAY33(网络编程——TCP)
一、网络架构 C/S (client/server 客户端/服务器):由客户端和服务器端两个部分组成。客户端通常是用户使用的应用程序,负责提供用户界面和交互逻辑 ,接收用户输入,向服务器发送请求,并展示服务…...
IP如何挑?2025年海外专线IP如何购买?
你花了时间和预算买了IP,结果IP质量不佳,项目效率低下不说,还可能带来莫名的网络问题,是不是太闹心了?尤其是在面对海外专线IP时,到底怎么才能买到适合自己的呢?所以,挑IP绝对是个技…...
RSS 2025|从说明书学习复杂机器人操作任务:NUS邵林团队提出全新机器人装配技能学习框架Manual2Skill
视觉语言模型(Vision-Language Models, VLMs),为真实环境中的机器人操作任务提供了极具潜力的解决方案。 尽管 VLMs 取得了显著进展,机器人仍难以胜任复杂的长时程任务(如家具装配),主要受限于人…...
CVPR2025重磅突破:AnomalyAny框架实现单样本生成逼真异常数据,破解视觉检测瓶颈!
本文介绍了一种名为AnomalyAny的创新框架,该方法利用Stable Diffusion的强大生成能力,仅需单个正常样本和文本描述,即可生成逼真且多样化的异常样本,有效解决了视觉异常检测中异常样本稀缺的难题,为工业质检、医疗影像…...
