运输层---UDP协议
目录
- 一. 无连接运输:UDP
- 1.1 定义
- 1.2 特点
- 1.3 应用
- 二. UDP报文段结构
- 三. UDP检验和
- 3.1 定义
- 3.2 检验和计算实例
- 3.2 UDP检验和的局限
一. 无连接运输:UDP

1.1 定义
- UDP(User Datagram Protocol)用户数据报协议:由 [RFC 768] 定义的协议。只做运输层协议能做的最少的工作,除了复用/分解功能以及少量差错检测外,几乎没有对IP协议增加别的东西。
运输层协议最低限度必须提供一种复用/分解服务。
- 构成:从应用进程得到数据,附加上源端口号字段和目的端口号字段,以及两个其他的小字段(长度字段,检验和字段checksum)形成报文段交付给网络层。
(网络层将UDP提供的报文段封装到IP数据报中,然后尽力而为地交付给目标主机。)
1.2 特点
UDP不提供不必要报文段交付之外的额外功能
-
- 尽力而为的交付(不可靠数据传输服务):不保证可靠交付,主机不需要维护复杂的连接状态。
QUIC协议(Quick UDP Internet Connections):快速UDP因特网连接,是一种基于 UDP 的传输层协议。将UDP作为支撑运输协议并在UDP之上的应用层协议中实现可靠性。保证了数据的完整性和有序性。
-
- 无连接的:通信时不需要创建连接(发送报文段之前,发送方域接收方运输层实体之间没有握手),减小了开销和发送数据前的时延。
-
- 无阻塞控制:不会影响发送端的发送频率。(与TCP相比发送时延少,交付时间短)
-
- 无连接状态 :由于不提供可靠数据传输服务,也没有拥塞控制机制,UDP不维护连接状态,也不跟踪参数(接收/发送缓存,拥塞控制参数以及序号与确认号的参数)。
-
- 面向报文:只在应用层交下来的报文前增加了首部后就向下交付IP层。
-
- 首部开销小:只有8个字节,相对于TCP的20个字节的首部要短
-
- 支持一对一、一对多、多对一、多对多的交互通信。
1.3 应用
-
DNS:
- 使用UDP的优势:无需建立连接,运行速度快。
- 网络层将封装好的IP数据报发送给一个名字服务器,查询主机中的DNS应用程序等待响应。如果(由于底层网络丢失了查询或者响应或其他原因)未收到响应,要么向另一个名字服务器发送查询,要么通知调用它的应用程序无法获得响应。
-
流媒体
一种网上即时传输影音以供观赏的一种技术与过程。
流媒体技术将一连串的媒体数据压缩后,经过网上分段发送数据,在网上即时传输影音以供观赏。此技术使得数据包得以像流水一样发送。如果不使用此技术,就必须在使用前下载整个媒体文件。
- SNMP
SNMP(Simple Network Management Protocol)是一种用于网络管理的应用层协议,它为网络管理员提供了一种通过运行网络管理软件的中心计算机(即网络管理工作站)来管理设备的方法。

二. UDP报文段结构

UDP报文段包含数据报头(首部)和数据区两部分:
- 数据报头:由4个字段(每个字段有2字节)组成,分别是:源端口、目的端口、报文长度和校验和。
- 数据区:包含UDP数据,长度在8字节~65535字节之间,在终点交付报文时需要用到。
数据报头具体释义如下:
- 源端口:可选字段,通常包含发送数据报的应用程序所使用的UDP端口。需要对方回信时选用,如果不需要对方回信,可置0。
- 目的端口:接收端计算机上UDP软件使用的端口,占据16位。
- 报文长度:该字段占据16位,表示UDP数据报长度,包含UDP报文头和UDP数据长度。因为UDP报文头长度是8个字节,所以这个值最小为8。
- 校验和:检测UDP数据在传输中是否出错,有错则丢弃。该字段可选,当源主机不想计算校验和,则置0。
实际上计算检验和时UDP包含了伪首部,其中包括了源IP地址、目的IP地址、协议号、以及UDP数据的长度,这些信息也要包含在计算校验和的过程中,以确保数据的完整性和正确性。
三. UDP检验和
3.1 定义
- 目的: 提供差错检测功能,检测在被传输报文段中的差错 (如比特反转)
- 实现:
- 发送方: UDP数据报分成若干个16位的比特字(如果数据报的长度不是16位的整数倍,则在末尾填充0),对所有比特字进行求和运算,求和时遇到的任何溢出都被回卷,取累加和的反码作为校验和,放在 UDP报文段中的检验和字段。
进位回卷: 如果累加和超过16位,则将高位的进位加到低位上
ps:这里的取反码是指将16比特01数据中的0与1反转互换,即1变为0,0变为1。
- 接收方:接收到UDP数据报后会重新计算校验和,然后将计算得到的校验和与接收到的校验和进行比较。如果两者相同,则说明数据在传输过程中可能没有发生错误;如果不同,则说明数据被修改或损坏。
校验范围+校验和=1111111111111111 则通过校验, 否则没有通过校验

3.2 检验和计算实例

回卷:取出超过16位比特的进位(也就是数字1),与最后一位相加(如果出现多次溢出,则重复回卷过程直到无溢出),得到最后的和,再进一步得到检验和。
3.2 UDP检验和的局限
-
- UDP虽然提供差错检测,但是对差错恢复无能为力。
-
- 某种实现:丢弃受损报文段
-
- 其他实现:将受损报文段交给应用程序并给出警告。
相关文章:
运输层---UDP协议
目录 一. 无连接运输:UDP1.1 定义1.2 特点1.3 应用 二. UDP报文段结构三. UDP检验和3.1 定义3.2 检验和计算实例3.2 UDP检验和的局限 一. 无连接运输:UDP 1.1 定义 UDP(User Datagram Protocol)用户数据报协议:由 [RF…...
【LeetCode】剑指 Offer Ⅱ 第3章:字符串(7道题) -- Java Version
题库链接:https://leetcode.cn/problem-list/e8X3pBZi/ 题目解决方案剑指 Offer II 014. 字符串中的变位词双指针 数组模拟哈希表 ⭐剑指 Offer II 015. 找到字符串中所有字母异位词双指针 数组模拟哈希表 ⭐剑指 Offer II 016. 不含重复字符的最长子字符串双指针…...
【python】绘图代码模板
【python】绘图代码模板 pandas.DataFrame.plot( )画图函数Seaborn绘图 -数据可视化必备主题样式导入数据集可视化统计关系散点图抖动图箱线图小提琴图Pointplot群图 可视化数据集的分布绘制单变量分布柱状图直方图 绘制双变量分布Hex图KDE 图可视化数据集中的成对关系 好看的图…...
RTT学习笔记12-KConfig 语法学习
KConfig 语法学习 RTT 官方教程 https://www.rt-thread.org/document/site/#/development-tools/build-config-system/Kconfig 我自己写的IIC配置 menuconfig BSP_USING_I2C # I2C 菜单bool "Enable I2C BUS" # 提示I2C 菜单default n # 默认不使能I2C 菜单…...
基于Mediapipe的姿势识别并同步到Unity人体模型中
如题,由于是商业项目,无法公开源码,这里主要说一下实现此功能的思路。 人体关节点识别 基于Mediapipe Unity插件进行开发,性能比较低的CPU主机,无法流畅地运行Mediapipe,这个要注意一下。 Mediapipe33个人体…...
Linux下进程的特点与环境变量
目录 进程的特点 进程特点的介绍 进程时如何实现并发性的 进程间如何切换 概念铺设 PC指针 上下文 环境变量 PATH 修改PATH HOME SHELL env 命令行参数 什么是命令行参数? 打印命令行参数 通过函数获得环境变量 getenv 命令行参数 env 修改环境变…...
以Llama-2为例,在生成模型中使用自定义LogitsProcessor
以Llama-2为例,在生成模型中使用自定义LogitsProcessor 1. 前言2. 场景介绍3. 解决方法4. 结语 1. 前言 在上一篇文章 以Llama-2为例,在生成模型中使用自定义StoppingCriteria中,介绍了怎样在生成的过程中,使用stopping criteria…...
python 计算图片hash 缓存图片为key
python,有时希望缓存图片作为key,怎么办?缓存整张突破占用内存太多,不妨缓存hash值: Fast way to Hash Numpy objects for Caching import hashlib import numpy a numpy.random.rand(10, 100) b a.view(numpy.uin…...
制造型企业如何实现车间设备生产数据的实时采集?需要5G网络吗?
引言 在制造业数字化转型的浪潮下,实时采集车间设备生产数据变得尤为重要。工业边缘网关HiWoo Box作为一款专为工业应用而设计的智能设备,具备工业级设计和多种联网方式,为制造型企业提供了高性能的车间设备数据实时采集解决方案。本文将重点…...
第2章 HTML中的JavaScript
引言 将JavaScript引入网页,首先要解决它与网页的主导语言HTML的关系问题 script元素 将JavaScript插入HTML的主要方法是使用script元素,script有8个可选属性 async:表示异步加载js文件内容,他们之间的顺序不一定按照html顺序ch…...
景联文科技高质量成品数据集上新啦!
景联文科技近期上新多个成品数据集,包含图像、视频等多种类型的数据,涵盖丰富的场景,可满足不同模型的多元化需求。 高质量成品数据集可用于训练和优化模型,使得模型能够更加全面和精准地理解和处理任务,更好地应对复…...
flask------请求拓展
flask中也有类似与django中的中间件,只不过是另一种写法,但是他们的作用是一样的,下面我们就一一介绍: 1.before_request 作用 : before_request 相当于 django 中的 process_request,每一个请求在被处理前都会经…...
大数据-玩转数据-FLINK-从kafka消费数据
一、基于前面kafka部署 大数据-玩转数据-Kafka安装 二、FLINK中编写代码 package com.lyh.flink04;import org.apache.flink.api.common.serialization.SimpleStringSchema; import org.apache.flink.streaming.api.environment.StreamExecutionEnvironment; import org.apa…...
介绍Sping Boot的5个扩展点
1、初始化器ApplicationContextInitializer 我们在启动Spring Boot项目的时候,是执行这样一个方法来启动的 我们一层一层往下点,最终发现执行的是这个方法 所以我们在启动项目的时候也可以这样启动 new SpringApplication(SpringbootExtensionPointAp…...
Linux2.6内核配置说明
maturity level options代码成熟度选项 Prompt for development and/or incomplete code/drivers 显示尚在开发中或尚未完成的代码与驱动.除非你是测试人员或者开发者,否则请勿选择 setup常规设置 Local version - append to kernel release 在内核版本后面加上自定义的…...
Pytest简介及jenkins集成
一、pytest介绍 pytest介绍 - unittest\nose pytest:基于unittest之上的单元测试框架 自动发现测试模块和测试方法 断言使用assert表达式即可 可以设置测试会话级、模块级、类级、函数级的fixtures 数据准备 清理工作 unittest:setUp、teardown、…...
【LeetCode】105. 从前序与中序遍历序列构造二叉树 106. 从中序与后序遍历序列构造二叉树
105. 从前序与中序遍历序列构造二叉树 这道题也是经典的数据结构题了,有时候面试题也会遇到,已知前序与中序的遍历序列,由前序遍历我们可以知道第一个元素就是根节点,而中序遍历的特点就是根节点的左边全部为左子树,右…...
堆内存和一些检测工具
17 堆定义 通过new关键字创建,创建对象都会使用堆内存。 是线程共享的,需要考虑线程安全问题。 有垃圾回收机制。18 堆-内存溢出 当默认情况下,发现执行到26,出现内存溢出。 当我们将堆内存调为8m,继续执行ÿ…...
【JavaScript】元素获取指南
简介 在 JavaScript 中,我们经常需要通过获取元素来进行 DOM 操作和交互。本教程将介绍多种获取元素的方式,包括根据 ID、标签名、类名、选择器、属性和名称等。 通过ID获取元素 使用getElementById方法根据元素的ID属性获取单个元素。 var element = document.getElementB…...
uniapp 返回上一页并刷新
如要刷新的是mine页面 在/pages/mine/improveInfo页面修改信息,点击保存后跳转到个人中心(/pages/mine/index)页面并刷新更新数据 点击保存按钮时执行以下代码: wx.switchTab({url: /pages/mine/index }) // 页面重载 let pages …...
Chapter03-Authentication vulnerabilities
文章目录 1. 身份验证简介1.1 What is authentication1.2 difference between authentication and authorization1.3 身份验证机制失效的原因1.4 身份验证机制失效的影响 2. 基于登录功能的漏洞2.1 密码爆破2.2 用户名枚举2.3 有缺陷的暴力破解防护2.3.1 如果用户登录尝试失败次…...
视频行为标注工具BehaviLabel(源码+使用介绍+Windows.Exe版本)
前言: 最近在做行为检测相关的模型,用的是时空图卷积网络(STGCN),但原有kinetic-400数据集数据质量较低,需要进行细粒度的标注,同时粗略搜了下已有开源工具基本都集中于图像分割这块,…...
视觉slam十四讲实践部分记录——ch2、ch3
ch2 一、使用g++编译.cpp为可执行文件并运行(P30) g++ helloSLAM.cpp ./a.out运行 二、使用cmake编译 mkdir build cd build cmake .. makeCMakeCache.txt 文件仍然指向旧的目录。这表明在源代码目录中可能还存在旧的 CMakeCache.txt 文件,或者在构建过程中仍然引用了旧的路…...
《信号与系统》第 6 章 信号与系统的时域和频域特性
目录 6.0 引言 6.1 傅里叶变换的模和相位表示 6.2 线性时不变系统频率响应的模和相位表示 6.2.1 线性与非线性相位 6.2.2 群时延 6.2.3 对数模和相位图 6.3 理想频率选择性滤波器的时域特性 6.4 非理想滤波器的时域和频域特性讨论 6.5 一阶与二阶连续时间系统 6.5.1 …...
2.3 物理层设备
在这个视频中,我们要学习工作在物理层的两种网络设备,分别是中继器和集线器。首先来看中继器。在计算机网络中两个节点之间,需要通过物理传输媒体或者说物理传输介质进行连接。像同轴电缆、双绞线就是典型的传输介质,假设A节点要给…...
Java并发编程实战 Day 11:并发设计模式
【Java并发编程实战 Day 11】并发设计模式 开篇 这是"Java并发编程实战"系列的第11天,今天我们聚焦于并发设计模式。并发设计模式是解决多线程环境下常见问题的经典解决方案,它们不仅提供了优雅的设计思路,还能显著提升系统的性能…...
Python环境安装与虚拟环境配置详解
本文档旨在为Python开发者提供一站式的环境安装与虚拟环境配置指南,适用于Windows、macOS和Linux系统。无论你是初学者还是有经验的开发者,都能在此找到适合自己的环境搭建方法和常见问题的解决方案。 快速开始 一分钟快速安装与虚拟环境配置 # macOS/…...
表单设计器拖拽对象时添加属性
背景:因为项目需要。自写设计器。遇到的坑在此记录 使用的拖拽组件时vuedraggable。下面放上局部示例截图。 坑1。draggable标签在拖拽时可以获取到被拖拽的对象属性定义 要使用 :clone, 而不是clone。我想应该是因为draggable标签比较特。另外在使用**:clone时要将…...
GB/T 43887-2024 核级柔性石墨板材检测
核级柔性石墨板材是指以可膨胀石墨为原料、未经改性和增强、用于核工业的核级柔性石墨板材。 GB/T 43887-2024核级柔性石墨板材检测检测指标: 测试项目 测试标准 外观 GB/T 43887 尺寸偏差 GB/T 43887 化学成分 GB/T 43887 密度偏差 GB/T 43887 拉伸强度…...
ffmpeg(三):处理原始数据命令
FFmpeg 可以直接处理原始音频和视频数据(Raw PCM、YUV 等),常见场景包括: 将原始 YUV 图像编码为 H.264 视频将 PCM 音频编码为 AAC 或 MP3对原始音视频数据进行封装(如封装为 MP4、TS) 处理原始 YUV 视频…...
