【网络】UDP协议详解

news2024/9/20 13:38:09

目录

UDP的感性理解

UDP协议格式

UDP协议格式感性理解

 UDP特点

UDP的缓冲区


UDP的感性理解

UDP的传输过程类似于寄信,假设你要写一封家书寄回家里:首先你要在信封上填写好寄件人和收件人的地址,其次在贴好邮票,最后将信件投放到邮筒中。寄信的特点就是信件是否送到,在寄送的过程中有没有丢失,对于寄件人来说是不知道的。所以寄信是一种不可靠的传递,同样的UDP也是一种不可靠的协议。

UDP协议格式

源端口号和目的端口号在计算机网络中用于标识数据包发送和接收的进程或应用程序。

a. 源端口号(16位):发送方计算机上的端口号。

b. 目的端口号(16位):接收方计算机上的端口号。

c. UDP长度(16位):表示整个数据报(UDP首部+UDP数据)的最大长度。

d. UDP校验和(16位):检测 UDP 用户数据报在传输过程中是否出错。如果校验和出错直接丢弃。

UDP的报头是固定的8字节。

UDP协议格式感性理解

linux内核是用C语言写的,所以报头实际上就是一种结构化的数据对象,用伪代码可表示为如下结构:

 解包分用的过程同样可以用上述的思路去分析:

我们知道UDP报头是固定大小的8字节,所以可以将要发送的数据拷贝到8字节后的位置,在填充udp_har的各个字段,用伪代码表示如下:

 UDP特点

a. 无连接,知道接收方的IP和端口号就可以直接进行传输,不需要建立连接。

b. 不可靠,没有确认机制,没有重传机制。如果因为网络或者其它原因没有传输成功,UDP协议层也不会给应用层返回任何错误信息,也不会重传。

c.面向数据报,应用层交给UDP多长的报文,UDP既不会拆分也不会合并,原样发送。也就是说发送端发送多少个报文,接收方就收取多少个报文,整读整取。

以一个例子理解面向数据报:如果发送端调用一次sendto, 发送200个字节, 那么接收端也必须调用对应的一次recvfrom, 接收200个字节; 而不能循环调用10次recvfrom, 每次接收20个字节。
 

UDP的缓冲区

UDP没有真正意义上的 发送缓冲区. 调用sendto会直接交给内核, 由内核将数据传给网络层协议进行后续的传输动作;


UDP具有接收缓冲区, 但是这个接收缓冲区不能保证收到的UDP报文的顺序和发送UDP报文的顺序一致:

 如果接收缓冲区满了, 再到达的UDP数据就会被丢弃:

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

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

相关文章

MySQL数据库 库表操作

1. (1) mysql> create database Market; 创建数据库 mysql> use Market 使用Market数据库(2) mysql> create table customers(-> c_num int(11) primary key auto_increment,-> c_name varchar(50),-> c_contact varchar(50),-> c_city varc…

ChatGPT炒股:从巨潮资讯网上批量下载特定主题的股票公告

巨潮资讯网是股票公告的指定披露渠道之一,上面有非常详细的A股股票公告内容。 现在,我们要获取2023-01-04~2023-07-04期间所有新三板公司中标题包含“2023年日常性关联交易”的公告。 首先从network中获取到真实网址:http://www.cninfo.com…

大一下学期期末考wp

【web】 1.sign 打开题目 发现有1000个页面 打开第9999个和第9998个页面,发现是utf-8编码 当再随机打开其他页面时,页面又出现了另外一种情况 于是我们猜测,flag是由utf-8编码的,编码被拆散了随机放在10000个页面中的几个页面中…

找不到msvcp140.dll解决方法有哪些?那个修复方法更简单

是使用Windows操作系统的计算机时,总是不可避免会遇到系统报错。像计算机提示找不到msvcp140.dll,msvcp140.dll是一个Windows操作系统中的动态链接库文件,它属于Microsoft Visual C Redistributable包的一部分。这个文件包含了一些供C程序使用…

计算机的大脑 CPU

晶体管 N型MOS管P型MOS管 算术逻辑单元 ALU 晶体管–>门电路–>加法器–>ALU 既可以做逻辑运算、也可以做逻辑运算、成为计算机CPU中非常核心的组件。 指令 一条指令只完成一个基本操作的精简指令集 RISC 、它们的指令长度基本上是固定的。比如 ARM一条指令可以…

【SLAM14讲】02 视觉SLAM基本架构

一、传感器 1.1 安装位置分类 根据安装位置分为两类: 携带于机器人本体 上的传感器,比如激光传感器、相机、轮式编码器、惯性测量单元(Inertial Measurement Unit, IMU)等等,它们测到的通常都是一些间接的物理量而不…

一键创建日期命名的txt文件(方便日报)

背景 刚工作,免不了写日报,写日计划的时候。为了方便,写了一个bat文件直接点击即可创建今天时间命名的txt文件 代码 win10我的笔记本 echo set tmp%date:~3,4%%date:~8,2%%date:~11,2% type nul > %tmp%.txtwindows 下创建文件就是 t…

排序算法性能分析

目录 实现插入排序、冒泡排序、选择排序、合并排序、快速排序算法(从小到大) ①插入排序 ②冒泡排序 ③选择排序 ⑥快速排序 五种排序 现在有10亿的数据(每个数据四个字节),请快速挑选出最大的十个数&#xff0…

红黑树与234树

红黑树 参考:宇文新粥:红黑树红黑树可视化 234树 这个树有三种节点,分别包含1/2/3个元素,下方可以有2/3/4个子节点理解234树的插入 红黑树与234树之间的关系 红黑树有几个特性,但如果从234树的角度理解红黑树&…

在微软十年了!

时光飞逝,光阴如梭。 2013 年的 7 月 8 号,我在隔壁的交大软院毕业后,正式入职紫竹微软。 至今,已是整整 10 年了。 记得当时的闵行回市区的交通还不是那么堵,坐 5点半的班车下班,S4中环一路走,…

【C++ OJ练习】4.字符串中的第一个唯一字符

1.题目链接 力扣 2.解题思路 利用计数排序的思想 映射进行计数 最后计数为1的那个字符就是唯一字符 从前往后遍历 可以得到 第一个唯一字符 3.代码 class Solution { public:int firstUniqChar(string s) {//使用映射的方式统计次数 计数排序思想int count[26] { 0 };fo…

机器视觉硬件选型-工业光源-环形光源

视觉人机器视觉-硬件发货前硬件确认效果 工业光源根据灯的几何形状可分为条形光源,分区光源,环形光源、圆顶(积分)光源、平面光源,同轴光源,方形光源,线扫光源,点光源,线光源等等。 …

在上海滩,听懂5G时代的浪奔浪流

几天前的“湾区升明月”上,赵雅芝与吕良伟合唱了一首《上海滩》。“浪奔,浪流”的歌词一出,无数记忆涌上了一代人的心头。 上海这座城市,始终代表着进取、创新、引领,代表着面向世界的中国形象。黄浦江的浪花&#xff…

【尚医通】vue3+ts前端项目开发笔记 2 —— 创建项目、封装网络请求、集成elment-plus 、重置样式、准备状态管理/路由 等开发前准备

尚医通开发记录(Vue3TypeScriptPiniaAxios) 一、接口地址 服务器地址:http://syt.atguigu.cn 医院接口:http://139.198.34.216:8201/swagger-ui.html 公共数据接口:http://139.198.34.216:8202/swagger-ui.html 会员接口:http://139.198.34…

掌握文件转换的技巧:在线工具帮你轻松转换为PDF格式

许多文件都有自己的原始格式,然而这些格式都可以进行修改。遇到无法打开或信息丢失的情况时,可以进行格式转换,其中效果最好的就是PDF格式,无论在哪个平台上查看文档,都有自己的格式,能够在所有平台上查看的…

中国首个铝基轻量化平台?纯电中型 SUV 奇瑞eQ7将于7月12日发布

奇瑞新能源将于7月12日发布首台量产车奇瑞eQ7,并公布中国首个铝基轻量化平台。 车型参数:奇瑞 eQ7是一款定位纯电动中型SUV,采用后置后驱和油冷扁线三合一电机技术。其以全铝车身和全铝平台为基础,整备质量为185kg。车身尺寸为467…

表中签到ID格式是以逗号分隔,需将ID拆开并分成多条数据

原有数据格式: 拆分后数据格式: 拆分SQL: select bc.资源名称,bc.资源ID,bc.签到时间,bc.签到人,bb.column_value 签到附件ID from report_fir.V_kw_checksign_info bc,table(hbrmw6.split_string(bc.签到附件ID,,)) bb; HBRMW6.split_string函数创…

mysql数据库内存占用高原因(数据库内存占用高)

1、查看数据库分配内存大小 ( mysql内存计算器,具体地址为http://www.mysqlcalculator.com/ ) select VARIABLE_NAME,VARIABLE_VALUE/1024/1024 MB from information_schema.GLOBAL_VARIABLES WHERE VARIABLE_NAME in (key_buffer_size,query_cache_size,tmp_tabl…

基本数据与封装对象转换(Java)

文章目录 1. 基本数据与对象封装转换1.1 8种基本数据类型:1.2 基本数据类型 -- > 封装对象:1.3 封装对象 -- > 基本数据类型:1.4 借助String类型作为中间桥梁 2. 自动转换规则 1. 基本数据与对象封装转换 1.1 8种基本数据类型: boolean(true/false),byte(1 …

时间序列预测 | Matlab粒子群算法(PSO)优化极限梯度提升树XGBoost时间序列预测,PSO-XGBoost时间序列预测模型

文章目录 效果一览文章概述部分源码参考资料效果一览 文章概述 时间序列预测 | Matlab基粒子群算法(PSO)优化极限梯度提升树XGBoost时间序列预测,PSO-XGBoost时间序列预测模型 评价指标包括:MAE、RMSE和R2等,代码质量极高,方便学习和替换数据。要求2018版本及以上。 部分源码…