当前位置: 首页 > news >正文

UDP协议详解

目录

前言:

再谈协议

UDP协议

 比较知名的校验和

小结:


前言:

    UDP和TCP作为传输层非常知名的两个协议,那么将数据从应用层到传输层数据是怎样进行打包的?具体都会增加一些什么样的报头,下面内容详细介绍。

再谈协议

    所谓协议就是双方约定的一种数据组织的格式。发送方按照约定来将数据进行封装,接收方同样也按照这样的格式进行解析。UDP是传输层协议,而上面的应用层也有相应的协议。一般应用层协议都是自定义的。

    应用层业务是错综复杂的,没有办法使用一个大协议去规定所有业务的数据格式(很难有一个通用的协议,满足所有业务需求)。需要根据不同场景,不同业务使用相对适合的协议去约定数据的组织格式。

自定义协议首先要明确两点:

    1)结合需求分析清楚,请求响应(客户端,服务器之间)要传递哪些数据。

    2)明确数据以什么样的格式组织。客户端按照这样的协议组织数据,服务端同样按照这样格式去解析数据。

典型的数据组织格式:

    1)XML标签化的数据组织方式,使用标签来表示键值对,用嵌套的方式表示树形结构。

    2)json现在比较流行的数据组织格式。针对XML进行改进,使用大括号的方式来组织。

    3)protobuffer谷歌研发的一种数据组织格式。二进制数据表示方式,针对数据通过二进制表示方式进行压缩。直观的不能观察,但是占用空间小,传输的带宽就降低了。

UDP协议

    UDP协议针对要发送的数据进行封装,原始数据称为“载荷”(payload)。所封装的一些数据称为“报头”。

    这张图在一些技术书籍上很常见,但实际这样画不是很确切。(书上为了排版方便)

解释:

1)

    源端口,目的端口是一次通信中的五元组之二。指定发送方端口和接收方端口。

    由于只有两个字节,无符号数范围就是0 -- 65535。因此端口号就需要在这个范围内, 0 -- 1023范围内端口号被称为知名端口号,就是比较知名的程序使用的端口号。我们在设置端口号不建议使用知名端口号,虽然知名端口号并没有全部使用完0 -- 1023范围内的所有端口,但是也是很可能产生端口冲突,导致程序抛异常。

2)

    UDP报文长度指的是整个报文的长度。由于两个字节最大表示数据是65535,那么UDP报文长度最大也就是64kb。使用UDP一次最大传输64kb大小的报文。

    那么如果我们要传输的数据大于64kb呢?将报文进行拆包,控制每个报文大小在64k以内。或者直接将UDP协议改为TCP协议传输。

3)

    校验和,验证数据传输是否正确。高电平或者低电平,波长大的光信号或者波长小的光信号表示1和0,由于物理原因可能存在“比特位反转”0变1或者1变0。那么传输的数据就会有很大的差别。

    校验和就是针对数据进行一系列数学运算,得到一个数字(如果数据不一致得到的数字也不一致)。在数据发送时也将校验和发送过去,然后得到的数据再进行一次校验和计算,比较这次计算的校验和和发送的校验和,看是否一致。这样就能判断数据是否发送正确。

 比较知名的校验和

1)CRC(循环冗余校验)

    简单粗暴,把数据的每个字节,循环往上累加。如果累加溢出了,高位就不要了。容易计算,但效果不是很理想。想想如果一位1变0,一位0变1,累加的数据也是不变的,就会出现问题。

2)MD5

    MD5通过一系列公式进行数学计算。

特点:

    1.定长:无论原始数据多长,得到的MD5值都是固定长度。

    2.冲突概率小:原始数据只要变动一小部分,计算的MD5值都会差别很大(MD5结果更加分散)。

    3.不可逆:通过MD5值还原成始数据,这个操作很难(计算量非常大)。一些简单的数据通过打表的方式可以还原一些。打表就是把常见的转换记录下来,然后查表转换。

3)SHA1

特点:

    1.不可以从消息摘要中复原信息。(不可逆)

    2.两个不同的消息不会产生同样的消息摘要,所以可以用摘要来校验信息是否正确。

小结:

    理解封装的过程,会对我们进行网络编程有很大促进作用。

相关文章:

UDP协议详解

目录 前言: 再谈协议 UDP协议 比较知名的校验和 小结: 前言: UDP和TCP作为传输层非常知名的两个协议,那么将数据从应用层到传输层数据是怎样进行打包的?具体都会增加一些什么样的报头,下面内容详细介绍…...

Myb atis基础3

Mybatis注解开发单表操作Mybatis的常用注解Mybatis的增删改查MyBatis注解开发的多表操作MyBatis的注解实现复杂映射开发一对一查询一对多查询多对多查询构建sqlsql构建对象介绍查询功能的实现新增功能的实现修改功能的实现删除功能的实现Mybatis注解开发单表操作 Mybatis的常用…...

VHDL语言基础-时序逻辑电路-寄存器

目录 寄存器的设计: 多位寄存器: 多位寄存器的VHDL描述: 移位寄存器: 串进并出的移位寄存器的VHDL描述: 寄存器的设计: 多位寄存器: 一个D触发器就是一位寄存器,如果需要多位寄存器&…...

高通开发系列 - linux kernel更新msm-3.18升至msm-4.9

By: fulinux E-mail: fulinux@sina.com Blog: https://blog.csdn.net/fulinus 喜欢的盆友欢迎点赞和订阅! 你的喜欢就是我写作的动力! 目录 linux kernel更新msm-3.18升至msm-4.9第一周处理的内容:第二周处理的内容第三周处理的内容linux kernel更新msm-3.18升至msm-4.9 第…...

【Tensorflow2.0】tensorflow中的Dense函数解析

目录1 作用2 例子3 与torch.nn.Linear的区别4 参考文献1 作用 注意此处Tensorflow版本是2.0。 由于本人是Pytorch用户,对Tensorflow不是很熟悉,在读到用tf写的代码时就很是麻烦。如图所示,遇到了如下代码: h Dense(unitsadj_di…...

PyTorch学习笔记:data.RandomSampler——数据随机采样

PyTorch学习笔记:data.RandomSampler——数据随机采样 torch.utils.data.RandomSampler(data_source, replacementFalse, num_samplesNone, generatorNone)功能:随即对样本进行采样 输入: data_source:被采样的数据集合replace…...

设计模式(七)----创建型模式之建造者模式

1、概述 将一个复杂对象的构建与表示分离,使得同样的构建过程可以创建不同的表示。 分离了部件的构造(由Builder来负责)和装配(由Director负责)。 从而可以构造出复杂的对象。这个模式适用于:某个对象的构建过程复杂的情况。 由于实现了构建和装配的解…...

DCGAN

DCGAN的论文地址[https://arxiv.org/pdf/1511.06434.pdf]。DCGAN是GAN的一个变体,DCGAN就是将CNN和原始的GAN结合到一起,生成网络和鉴别网络都运用到了深度卷积神经网络。DCGAN提高了基础GAN的稳定性和生成结果质量。DCGAN主要是在网络架构上改进了原始的…...

【速通版】吴恩达机器学习笔记Part3

目录 1.多元线性回归 a.特征缩放 可行的缩放方式: 1.除以最大值: 2.mean normalization: 3.Z-score normalization b.learning curve: c.learning rate: 2.多项式回归 3.classification logistics regression 1.多元线性回归 其意义很…...

【leetcode】跳跃游戏

一、题目描述 给定一个非负整数数组 nums ,你最初位于数组的 第一个下标 。 数组中的每个元素代表你在该位置可以跳跃的最大长度。 判断你是否能够到达最后一个下标。 示例 1: 输入:nums [2,3,1,1,4] 输出:true 解释&#x…...

论文投稿指南——中文核心期刊推荐(冶金工业 2)

【前言】 🚀 想发论文怎么办?手把手教你论文如何投稿!那么,首先要搞懂投稿目标——论文期刊 🎄 在期刊论文的分布中,存在一种普遍现象:即对于某一特定的学科或专业来说,少数期刊所含…...

【GPLT 二阶题目集】L2-044 大众情人

人与人之间总有一点距离感。我们假定两个人之间的亲密程度跟他们之间的距离感成反比,并且距离感是单向的。例如小蓝对小红患了单相思,从小蓝的眼中看去,他和小红之间的距离为 1,只差一层窗户纸;但在小红的眼里&#xf…...

SpringBoot整合(二)MyBatisPlus技术详解

MyBatisPlus详解 一、标准数据层开发 MyBatisPlus(简称MP)是基于MyBatis框架基础上开发的增强型工具,旨在简化开发、提高效率 MyBatisPlus的官网为:https://mp.baomidou.com/ 1.1 标准CRUD 1.2 新增 int insert (T t)T:泛型&#xff0c…...

导入importk8s集群,添加node节点,rancher agent,Rancher Agent设置选项

curl方式: Rancher在每个节点上部署代理以与节点通信。 此页面描述了可以传递给代理的选项,要使用这些选项,您需要采用创建自定义集群 ,并在docker run添加节点时将选项添加到生成的命令中。 常规选项 参数环境变量描述—serve…...

C++11--右值引用与移动语义

目录 基本概念 左值与右值 左值引用与右值引用 右值引用的使用场景和意义 左值引用的使用场景 右值引用和移动语义 移动构造和拷贝构造的区别 编译器的优化 移动赋值和赋值运算符重载的区别 右值引用的其他应用场景 完美转发 万能引用 完美转发保持值属性 完美转…...

Python SQLAlchemy入门教程

本文将以Mysql举例,介绍sqlalchemy的基本用法。其中,Python版本为2.7,sqlalchemy版本为1.1.6。 一. 介绍 SQLAlchemy是Python中最有名的ORM工具。 关于ORM: 全称Object Relational Mapping(对象关系映射&#xff0…...

你是真的“C”——操作符详解【下篇】+整形提升+算术转换

你是真的“C”——操作符详解下篇😎前言🙌操作符详解【上篇】内容:操作符详解【下篇】内容:1、 条件操作符2、逗号表达式:3、下标引用、函数调用和结构成员3、访问一个结构的成员表达式求值1、隐式类型转换&#xff1a…...

文本匹配SimCSE模型代码详解以及训练自己的中文数据集

前言 在上一篇博客文本匹配中的示例代码中使用到了一个SimCSE模型,用来提取短文本的特征,然后计算特征相似度,最终达到文本匹配的目的。但是该示例代码中的短文本是用的英文短句,其实SimCSE模型也可以用于中文短文本的特征提取&a…...

Biotin-PEG-FITC 生物素聚乙二醇荧光素;FITC-PEG-Biotin 科研用生物试剂

结构式: ​Biotin-PEG-FITC 生物素聚乙二醇荧光素 英文名称:Biotin-PEG-Fluorescein 中文名称:生物素聚乙二醇荧光素 外观:黄色液体、半固体或固体,取决于分子量。 溶剂:溶于大部分有机溶剂,…...

FISCO BCOS 搭建区块链,在SpringBoot中调用合约

一、搭建区块链 使用的是FISCO BCOS 和 WeBASE-Front来搭建区块链,详细教程: https://blog.csdn.net/yueyue763184/article/details/128924144?spm1001.2014.3001.5501 搭建好能达到下图效果即可: 二、部署智能合约与导出java文件、SDK证…...

3PEAK思瑞浦 TPW4157-TR SOT23-6 模拟开关/多路复用器

特性 锁存性能超过JESD78标准,lI类,每通道800mA 供电电压:1.65V至5.5V 低导通电阻:典型值0.950,Vs4.5V 带宽:100MHz 快速开关时间:tON40ns,tOFF15ns 断开再闭合开关 工作温度范围:-40C至125C...

HoRain云--Apache HTTP服务器搭建与优化全指南

模 🎬 HoRain 云小助手:个人主页 ⛺️生活的理想,就是为了理想的生活! ⛳️ 推荐 前些天发现了一个超棒的服务器购买网站,性价比超高,大内存超划算!忍不住分享一下给大家。点击跳转到网站。 目录 ⛳️ 推…...

从LeNet到ResNet:用NN-SVG和PlotNeuralNet复现经典网络架构图

从LeNet到ResNet:用NN-SVG和PlotNeuralNet复现经典网络架构图 在深度学习领域,理解神经网络的结构就像建筑师需要熟悉蓝图一样重要。许多初学者在阅读论文时,常常被那些复杂的网络架构图弄得晕头转向——卷积层、池化层、全连接层、跳跃连接&…...

当混乱的地址数据遇见智能解析:一个Java开发者的救赎之旅

当混乱的地址数据遇见智能解析:一个Java开发者的救赎之旅 【免费下载链接】address-parse Java 版智能解析收货地址 项目地址: https://gitcode.com/gh_mirrors/addr/address-parse 你是否也曾被这样的地址数据折磨过? "广东省深圳市盐田区…...

从零到一:基于YOLOv8与PySide6构建桌面端目标检测应用

1. 环境准备与工具安装 目标检测应用的开发离不开合适的工具链支持。我们先从最基础的环境搭建开始,这里我推荐使用Python 3.8版本,因为这个版本在兼容性和稳定性方面表现都很不错。安装过程很简单,直接从Python官网下载对应操作系统的安装包…...

别再只给Gerber了!资深PCB工程师教你用Allegro准备‘板厂友好型’生产文件包

资深PCB工程师的Allegro生产文件包优化指南:从基础导出到板厂友好型交付 在高速PCB设计领域,导出Gerber文件只是与制造厂协作的第一步。真正体现工程师专业度的,是如何将设计意图通过完整的生产文件包准确传达给板厂。我曾见过太多案例——设…...

超越DWA和TEB?深入拆解Nav2的MPPI控制器:从采样噪声到插件化Critic的运作机制

超越DWA和TEB?深入拆解Nav2的MPPI控制器:从采样噪声到插件化Critic的运作机制 在机器人运动规划领域,局部轨迹规划器的选择直接影响着机器人的动态性能和避障能力。传统方法如DWA(Dynamic Window Approach)和TEB&#…...

中文在线年营收16.6亿:净亏6.7亿 腾讯与阅文减持 合计套现4亿

雷递网 雷建平 4月23日中文在线集团股份有限公司(证券代码:300364,证券简称:中文在线)日前发布截至2025年的财报。财报显示,中文在线2025年营收为16.57亿,较上年同期的11.59亿元增长43%。中文在…...

手把手教你用STM32F4的TIM3定时器,给Livox激光雷达生成精准PPS信号(附完整代码)

基于STM32F4的Livox激光雷达PPS信号精准生成实战指南 1. 项目背景与需求分析 在机器人定位与建图(SLAM)系统中,多传感器时间同步是影响精度的关键因素之一。Livox激光雷达作为国产高性价比激光雷达代表,其硬件时间同步方案中PPS&a…...

90%时间节省:LaTeX2Word-Equation如何彻底改变学术公式处理流程

90%时间节省:LaTeX2Word-Equation如何彻底改变学术公式处理流程 【免费下载链接】LaTeX2Word-Equation Copy LaTeX Equations as Word Equations, a Chrome Extension 项目地址: https://gitcode.com/gh_mirrors/la/LaTeX2Word-Equation 根据对500名科研工作…...