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

UDP协议原理

UDP协议原理

本篇介绍

在前面使用UDP编程时已经基本了解了UDP的工作模式,也知道了UDP有三个特点:

  1. 无连接
  2. 不可靠
  3. 面向数据报

但是当时并没有具体谈论为什么UDP有以上三个特点,基于这个原因,本篇就会针对这三个原因进行介绍

UDP协议在底层的设计

前面多次提交,协议本质可以理解为一个结构体,所以UDP协议也是一个含有一些字段的结构体,基本示意图如下:

在这里插入图片描述

在上面的结构中,首先是源端口和目的端口,因为UDP属于传输层协议,该层上一层就是应用层,如果上一步是解包,那么接下来的工作就是分用,所以为了知道将接收到的数据具体传输到哪一个应用就需要通过目的端口号进行匹配

在UDP编程接口基本使用提到,端口号port的类型为uint16_t,在Linux底层是unsigned short int,这个类型是两个字节,对应的就是UDP协议结构中一个端口号占用空间的大小

接着就是16位大小的数据长度空间,这个部分主要存储了数据部分内容的长度,具体会在下一部分讲解到

最后就是16位校验和,这个字段用于检测数据在传输过程中是否发生错误,不具体介绍

UDP面向数据报

在前面学习UDP和TCP通信过程中,提到了UDP一般不会出现数据不完整的情况,但是TCP会出现数据不完整的情况所以需要做数据完整性检查,之所以会出现这个原因就是因为UDP是面向数据报的,而TCP是面向字节流的,那么既然UDP是面向数据报,那么在发送或者接收时都必须遵循完整发完整收,这就导致一个问题,客户端和服务端怎么主调这个数据是完整的,在前面TCP编程的封装协议中,都涉及到一个字段「数据长度」,通过数据长度判断是否拿到完整的数据,UDP也不例外,在UDP协议中的16位大小的数据长度字段就是用来指明发送的数据有多大

但是因为这个长度字段只有16位,这就导致了其只能存储64K()的值,也就是说,这个长度是有限的,如果需要传输大于16位2进制可以表示的范围,那么此时就需要对数据进行手动拆分,因为UDP必须满足发多少收多少

UDP无连接

本质上是因为建立连接需要一定的时间和消耗,在TCP中,TCP的建立连接需要至少1.5个RTT(Round-Trip Time)的延迟,所以为了在一些需要效率并且又可以容忍一小部分数据丢失的情况下(例如视频通话)就可以考虑使用UDP

UDP不可靠

因为UDP需要保证效率,在传送的过程中不会对数据进行校验,并且也不会对丢失的内容进行重传,这就导致了丢失的数据无法再次获取。另外,因为UDP没有真正意义上的 发送缓冲区,所以调用sendto会直接交给内核,再由内核将数据传给网络层协议进行后续的传输动作,但是UDP具有接收缓冲区,不过这个接收缓冲区不能保证收到的UDP报的顺序和发送UDP报的顺序一致,如果缓冲区满了,再到达的UDP数据就会被丢弃

基于UDP的应用层协议

常见的有下面几种:

  1. NFS:网络文件系统
  2. TFTP:简单文件传输协议
  3. DHCP:动态主机配置协议
  4. BOOTP:启动协议(用于无盘设备启动)
  5. DNS:域名解析协议

相关文章:

UDP协议原理

UDP协议原理 本篇介绍 在前面使用UDP编程时已经基本了解了UDP的工作模式,也知道了UDP有三个特点: 无连接不可靠面向数据报 但是当时并没有具体谈论为什么UDP有以上三个特点,基于这个原因,本篇就会针对这三个原因进行介绍 UDP…...

EtherCAT转Modbus网关如何在倍福plc组态快速配置

EtherCAT转Modbus网关如何在倍福plc组态快速配置 在工业控制领域,EtherCAT和Modbus是两种常见的总线通信协议。EtherCAT以其高速的数据传输和灵活的网络配置被广泛应用于高性能自动化控制系统中,而Modbus则因其简单、稳定且兼容性强而被许多设备所支持。…...

如何设计大模型意图识别?

环境: 大模型 问题描述: 如何设计大模型意图识别? 解决方案: 1. 意图识别定义与核心任务 定义:意图识别(Intent Recognition)是从用户输入(文本、语音等)中解析其核…...

FPGA设计中时间单位科普

FPGA设计中时间单位主要有秒s,毫秒ms,微秒us,纳秒ns,皮秒ps, 使用秒s作为单位时一定要谨慎,因为秒s对于FPGA来说是一个很大的单位。FPGA的时钟周期通常是20ns左右,1秒意味着需要等待50000000个…...

DooTask在Linux的离线部署教程

DooTask在Linux的离线部署教程 下载安装包 从网盘中将安装包下载到本地,下载地址 通过网盘分享的文件:DooTask项目管理工具 链接: https://pan.baidu.com/s/1hGmLXonT4c8hLiDP1QBr8w?pwdgdp6 提取码: gdp6 通过网盘分享的文件:DooTask项目…...

Python实现WYY音乐下载

一、需求背景 WYY音乐作为国内主流音乐平台,其歌曲资源丰富但下载接口存在多重加密保护。本文将通过Python结合JS逆向技术,解析其核心加密逻辑,实现免费歌曲的下载功能。 二、技术难点分析 1. 接口加密机制 通过抓包分析可知,网易云核心接口使用两次加密: 第一次:获取…...

Java基础面试题学习

转换成自已的语言来回答,来源小林coding、沉默王二以及其它资源和自已改编。 1、概念 1、说一下Java的特点 我认为Java有很多特点 首先是平台无关性:Java可以实现一次编译到处运行,因为Java的编译器将源代码编译成字节码,使得该…...

【笔记】深度学习模型训练的 GPU 内存优化之旅:重计算篇

开设此专题,目的一是梳理文献,目的二是分享知识。因为笔者读研期间的研究方向是单卡上的显存优化,所以最初思考的专题名称是“显存突围:深度学习模型训练的 GPU 内存优化之旅”,英文缩写是 “MLSys_GPU_Memory_Opt”。…...

AI革命!蓝耘携手海螺AI视频,打造智能化视频新纪元

AI革命!蓝耘携手海螺AI视频,打造智能化视频新纪元 前言 在这个信息爆炸的时代,视频已经成为我们获取信息、学习新知识的重要方式。而随着人工智能(AI)技术的快速发展,AI与视频内容的结合为我们带来了全新的…...

Django+celery+flower

Djangoceleryflower Django的定时任务及可视化监控Django Django的定时任务及可视化监控 Django的定时任务,以及可视化监控。 Django Django; 首先在python中新建虚拟环境并激活 pip install virtualenv python -m venv venv source venv/bin/activa…...

MapReduce处理数据流程

(一)Shuffle MapReduce中的Shuffle过程指的是在Map方法执行后、Reduce方法执行前对数据进行分区排序的阶段 (二)处理流程 1. 首先MapReduce会将处理的数据集划分成多个split,split划分是逻辑上进行划分,…...

基于springboot的教务系统(源码+lw+部署文档+讲解),源码可白嫖!

摘要 这些年随着Internet的迅速发展,我们国家和世界都已经进入了互联网大数据时代,计算机网络已经成为了整个社会以及经济发展的巨大动能,各个高校的教务工作成为了学校管理事务的重要目标和任务,因此运用互联网技术来提高教务的…...

潮流霓虹酸性渐变液体流体扭曲颗粒边缘模糊JPG背景图片设计素材 Organic Textures Gradients Collection

这个系列将液体运动、霓虹灯和热浪扭曲提炼成一组有机纹理。渐变像水面上的油一样荡漾,模糊了科幻小说与自然之间的界限。这种未来主义的边缘,加上近乎生物的感觉,与正在进行的抽象数字超现实主义浪潮完美同步。 这套具有 20 种原始纹理和 20…...

现代时尚标签海报包装网站设计几何风PSAI无衬线英文字体安装包 Matahari Sans Font Family

Matahari(英语:Sun)是生命的动力源泉。与日常生活的其他部分协同作用的力量和能量的象征。这是我们人类需要的最基本的东西之一,就像交流一样。就像 Matahari 本身一样,文字的力量足以维持生计。 参考怪诞字体并受到埃…...

Spring MVC响应数据

handler方法分析 /*** TODO: 一个controller的方法是控制层的一个处理器,我们称为handler* TODO: handler需要使用RequestMapping/GetMapping系列,声明路径,在HandlerMapping中注册,供DS查找!* TODO: handler作用总结:* 1.接收请求参数(param,json,pathVariable,共享域等…...

jmeter验证正则表达式提取值是否正确

正则提取 验证提取是否正确...

共注意力机制及创新点深度解析

一、核心原理剖析 1. 基本思想 共注意力机制(Co-Attention)通过建立双向注意力交互通道,同步学习图像和问题两个模态的关键信息。与传统单向注意力相比,其核心创新在于: ​双向信息流:图像特征和问题特征…...

联想台式电脑启动项没有U盘

开机按F12,进入启动设备菜单,发现这里没有识别到插在主机的U盘? 解决方法 1、选上图的Enter Setup或者开机按F2,进入BIOS设置 选择Startup -> Primary Boot Sequence 2、选中“Excludeed from boot order”中U盘所在的一行 …...

基于 Python 爬取 TikTok 搜索数据 Tiktok爬虫(2025.3.17)

1. 前言 在数据分析和网络爬虫的应用场景中,我们经常需要获取社交媒体平台的数据,例如 TikTok。本篇文章介绍如何使用 Python 爬取 TikTok 用户搜索数据,并解析其返回的数据。 结果截图 2. 项目环境准备 在正式运行代码之前,我…...

【HarmonyOS Next】鸿蒙中App、HAP、HAR、HSP概念详解

【HarmonyOS Next】鸿蒙中App、HAP、HAR、HSP概念详解 (图1-1) 一、鸿蒙中App、HAP、HAR、HSP是什么? (1)App Pack(Application Package) 是应用发布的形态,上架应用市场是以App Pa…...

计算机二级MS之Excel

声明:跟着大猫和小黑学习随便记下一些笔记供大家参考,二级考试之前将持续更新,希望大家二级都能轻轻松松过啦,过了二级的大神也可以在评论区留言给点建议,感谢大家!! 文章目录 考题难点&#x…...

Unity导出WebGL,无法加载,data文件无法找到 404(NotFound)

问题:data文件无法找到404Not found 示例是使用IIS托管启动 F12可以看到not found 的报错 解决办法: iis无法识别data文件,在MIME类型中增加data 类型:application/octet-stream 添加之后,会在根目录下生产一个…...

洛谷题目: P1225 黑白棋游戏 题解 (本题难)

题目传送门: P1225 黑白棋游戏 - 洛谷 (luogu.com.cn) 前言: 这道题要求我们找出从黑白棋游戏的初始棋盘状态变化到目标棋盘状态的最短着棋序列,也就是要找到最少的交换相邻方格棋子的步数以及每一步具体的交换位置。我们可以使用广度优先…...

网络安全技术分析:攻防演进、核心技术与未来挑战

本文系统梳理网络安全技术发展脉络,聚焦漏洞利用、威胁检测、数据保护三大核心领域,结合APT攻击、勒索软件、零日漏洞等典型案例,解析防火墙、IDS、零信任架构等技术原理。通过分析2023年全球重大安全事件(如MOVEit漏洞攻击、Lock…...

SpringBoot与Redisson整合,用注解方式解决分布式锁的使用问题

文章引用:https://mp.weixin.qq.com/s/XgdKE2rBKL0-nFk2NJPuyg 一、单个服务 1.代码 该接口的作用是累加一个值,访问一次该值加1 RestController public class LockController {Autowiredprivate StringRedisTemplate stringRedisTemplate;GetMappin…...

通过Typora + PicGo + 阿里云对象存储(OSS)实现图床

文章目录 通过Typora PicGo 阿里云对象存储(OSS)实现图床1 准备工作1.1 阿里云对象存储 OSS配置创建oss存储空间bucket获取AccessKey 1.2 PicGo配置1.3 Typora配置 2 使用流程3 常见问题和解决3.1 创建asesskey3.2 You have no right to access this o…...

爱普生FC-12M石英晶体谐振器精准时钟源解决方案

在当今数字化时代,电子设备无处不在,从我们日常使用的智能手机、平板电脑,到复杂的工业控制系统、通信基站,每一台设备的稳定运行都离不开精准的时钟信号。而在众多提供时钟信号的元件中,爱普生 FC-12M 石英晶体谐振器…...

【css酷炫效果】纯CSS实现手风琴折叠效果

【css酷炫效果】纯CSS实现手风琴折叠效果 缘创作背景html结构css样式完整代码效果图 想直接拿走的老板,链接放在这里:https://download.csdn.net/download/u011561335/90492015 缘 创作随缘,不定时更新。 创作背景 刚看到csdn出活动了&am…...

AI辅助的逆向分析

AI大模型结合反编译工具与AI的辅助分析能力,已能实现部分代码逻辑的还原与重构。 1. 技术实现路径 (1)二进制文件预处理与反编译 反编译工具:需先使用IDA Pro、Ghidra等工具将二进制文件转换为低级中间表示(如汇编代…...

物理标签与逻辑标签的区别

物理标签和逻辑标签都可以被机器&#xff08;如浏览器、爬虫、屏幕阅读器&#xff09;解析和识别&#xff0c;但它们的 语义信息 对机器的意义不同。以下是详细解释&#xff1a; 1. 物理标签的解析 可以识别&#xff1a;浏览器会正确解析物理标签&#xff08;如 <b>、<…...