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

网络工程师 (49)UDP协议

前言

       UDP协议,即用户数据报协议(User Datagram Protocol),是一种无连接的、不可靠的、面向报文的传输层通信协议。

一、基本特点

  1. 无连接性:UDP在发送数据之前不需要与目标设备建立连接,也无需在数据发送结束后释放连接。这种无连接特性减少了开销和发送数据前的时延。

  2. 不可靠性:UDP不提供可靠性保证,不对数据的传输进行确认、重传或流量控制。如果数据在传输过程中丢失、损坏或乱序,UDP不会自动进行纠正,接收端也无法得知数据是否完整到达。

  3. 面向报文:UDP对应用层交下来的报文不拆、不合,保留其边界进行传输。这意味着每个UDP报文都是一个独立的传输单位。

  4. 简单性:UDP的协议头相对较小,只包含必要的字段(源端口、目的端口、长度、校验和),使得UDP的处理和解析相对简单。

  5. 快速性:由于UDP没有建立连接和进行可靠性保证的开销,其传输速度相对较快,适用于实时性要求较高的应用。

  6. 支持广播和多播:UDP可以向局域网内的所有设备或特定组播组发送数据包,适用于设备发现、广告通知和组内通信等场景。

  7. 无拥塞控制:UDP不具备拥塞控制机制。当网络出现拥塞时,UDP数据包可能会被丢弃,导致丢失数据。

二、UDP报文格式

      UDP报文包括首部(Header)和数据(Payload)两部分。UDP报文首部只有8个字节,由4个字段组成,每个字段的长度是2字节:

  1. 源端口(Source Port):长度为16位,用于标识发送端的应用程序或进程。
  2. 目的端口(Destination Port):长度为16位,用于标识接收端的应用程序或进程。
  3. 长度(Length):长度为16位,表示UDP报文的总长度,包括UDP首部和数据部分,其最小值为8(只有首部)。
  4. 校验和(Checksum):长度为16位,用于检测UDP报文在传输过程中是否发生了错误。校验和字段的计算包括UDP头部和数据部分。

三、应用场景

  1. 实时音视频传输:如音频会议、视频聊天和实时流媒体等。UDP协议具有快速性和低延迟特点,可以更好地满足实时传输的要求。
  2. 实时数据更新:例如股票市场行情、实时天气信息、实时位置数据(车辆追踪、航空器监控和GPS定位)等。这些应用对于丢失少量数据包可以容忍,通过UDP低延迟和快速性使得实时数据能够迅速传输并及时更新。
  3. 在线游戏:UDP常用于游戏数据的传输,例如玩家位置、游戏状态和操作指令等。游戏通常可以容忍丢失少量数据,而更重视实时性和快速响应。
  4. 域名系统(DNS):DNS查询的请求和响应通常是简短的、小量的数据包,不需要TCP的可靠性保证。具有低延迟和简单性的UDP成为DNS的合适选择。
  5. 简单网络管理协议(SNMP):SNMP用于网络设备的管理和监控,由于SNMP需要频繁的交互和实时性,UDP的快速性和无连接性使其成为通信的合适选择。
  6. IoT设备通信:物联网终端的资源有限,很可能是内存非常小的嵌入式系统。因此,维护TCP协议代价太大。同时,物联网对实时性要求也很高,使用TCP会导致较大时延。UDP的简单性和低开销适用于大规模部署的低功耗设备间进行快速数据交换。
  7. 日志传输:在某些情况下,对于日志传输的实时性要求较高,而对数据的完整性和可靠性要求相对较低。因此,UDP适合用于快速传输日志数据。

四、安全性

       UDP协议的安全性较差,容易受到各种攻击,如DoS攻击、欺骗攻击等。为了保证UDP协议的安全性,可以采取一些防御措施,如限制源IP地址、过滤恶意数据包等。

 结语    

宁愿乐观地犯错

不愿悲观地正确

!!!

相关文章:

网络工程师 (49)UDP协议

前言 UDP协议,即用户数据报协议(User Datagram Protocol),是一种无连接的、不可靠的、面向报文的传输层通信协议。 一、基本特点 无连接性:UDP在发送数据之前不需要与目标设备建立连接,也无需在数据发送结束…...

1.20作业

1 mfw(git泄露) ./git,原本以为点了链接下了index文件,就可以打开看源码,结果解析不了 老老实实用了githacker githacker --url --output 1 assert() 断言(assert)的用法 | 菜鸟教程 命令注入: /?page).system(cat ./templates/fl…...

HTML/CSS中交集选择器

1.作用:选中同时符合多个条件的元素 交集就是或的意思 2.语法:选择器1选择器2选择器3......选择器n{} 3.举例: /* 选中:类名为beauty的p元素,此种写法用的非常的多 */p.beauty{color: red;}/* 选中:类名包含rich和beauty的元素 */.rich.beauty{color: blue;} 4.注意: 1.有标签…...

迅为RK3568开发板篇Openharmony配置HDF控制UART-实操-HDF驱动配置UART-修改HCS配置

对于不同的平台,需要在对应的平台目录修改对应的 hcs 文件,接下来示例为在 rk3568下新增 uart4 uart9 uart7 的修改方法。 修改 vendor/hihope/rk3568/hdf_config/khdf/device_info/device_info.hcs 文件,device_info.hcs 中添加以下内容&…...

实时股票行情接口与WebSocket行情接口的应用

实时股票行情接口与WebSocket行情接口的应用 实时股票行情接口是量化交易和投资决策的核心工具之一,行情接口的种类和功能也在不断扩展。介绍几种常见的行情接口,包括实时股票行情接口、Level2行情接口、WebSocket行情接口以及量化行情接口,…...

k8s故障处理经典案例(Classic Case of k8s Fault Handling)

k8s故障处理经典案例 问题描述 kubernetes版本:v1.22.5 部分Pod在新版本发布后一直处于ContainerCreating状态,经过kubectl delete命令删除后一直Terminating状态。 排查过程 遇到问题先查日志 首先进入宿主机,查看三个日志&#xff0c…...

关于uniApp的面试题及其答案解析

我的血液里流淌着战意!力量与智慧指引着我! 文章目录 1. 什么是uniApp?2. uniApp与原生小程序开发有什么区别?3. 如何使用uniApp实现条件编译?4. uniApp支持哪些平台,各有什么特点?5. 在uniApp中…...

给老系统做个安全检查——Burp SqlMap扫描注入漏洞

背景 在AI技术突飞猛进的今天,类似Cursor之类的工具已经能写出堪比大部分程序员水平的代码了。然而,在我们的代码世界里,仍然有不少"老骥伏枥"的系统在兢兢业业地发光发热。这些祖传系统的代码可能早已过时,架构可能岌…...

langchain系列 - FewShotPromptTemplate 少量示例

导读 环境:OpenEuler、Windows 11、WSL 2、Python 3.12.3 langchain 0.3 背景:前期忙碌的开发阶段结束,需要沉淀自己的应用知识,过一遍LangChain 时间:20250220 说明:技术梳理,针对FewShotP…...

【C语言】fgetpos函数用法介绍

目录 一、函数概述 二、核心参数与数据类型 三、典型应用场景 四、与 ftell() 的对比 五、错误处理与调试 六、进阶示例:多位置标记与恢复 七、注意事项 八、总结 fgetpos() 是C标准库中用于文件操作的关键函数之一,其核心功能是获取文件流的当前…...

《算法基础入门:最常用的算法详解与应用(持续更新实战与面试题)》

1. 排序算法 排序算法是将一组数据按特定的顺序排列起来的算法,常见的有: 冒泡排序(Bubble Sort)选择排序(Selection Sort)插入排序(Insertion Sort)归并排序(Merge So…...

YOLOv11-ultralytics-8.3.67部分代码阅读笔记-split_dota.py

split_dota.py ultralytics\data\split_dota.py 目录 split_dota.py 1.所需的库和模块 2.def bbox_iof(polygon1, bbox2, eps1e-6): 3.def load_yolo_dota(data_root, split"train"): 4.def get_windows(im_size, crop_sizes(1024,), gaps(200,), im_rate_t…...

如何使用Python快速开发一个带管理系统界面的网站-解析方案

如果你想用 Python 开发一个 管理系统界面 的网站,并且希望界面美观,可以考虑以下几个框架和库: 1. Streamlit(快速、简洁) 适合:数据分析、仪表盘、内部管理系统特点: 写法简单,类…...

25年HVV关于0day的面试题

以下是对0day漏洞如何防,基本上是每次HVV中大家都会提到的,今天总结了100day防护手段。 《网安面试指南》https://mp.weixin.qq.com/s/RIVYDmxI9g_TgGrpbdDKtA?token1860256701&langzh_CN 5000篇网安资料库https://mp.weixin.qq.com/s?__bizMzkw…...

【C# 数据结构】队列 FIFO

目录 队列的概念FIFO (First-In, First-Out)Queue<T> 的工作原理&#xff1a;示例&#xff1a;解释&#xff1a; 小结&#xff1a; 环形队列1. **FIFO&#xff1f;**2. **环形缓冲队列如何实现FIFO&#xff1f;**关键概念&#xff1a; 3. **环形缓冲队列的工作过程**假设…...

git 克隆及拉取github项目到本地微信开发者工具,微信开发者工具通过git commit、git push上传代码到github仓库

git 克隆及拉取github项目到本地微信开发者工具&#xff0c;微信开发者工具通过git commit、git push上传代码到github仓库 git 克隆及拉取github项目到本地 先在自己的用户文件夹新建一个项目文件夹&#xff0c;取名为项目名 例如这样 C:\Users\HP\yzj-再打开一个终端页面&…...

【机器学习】多元线性回归算法和正规方程解求解

多元线性方差和正规方差解 一、摘要二、多元线性回归介绍三、正规方程解的求解及代码实现 一、摘要 本文围绕多元线性回归的正规方程解展开&#xff0c;为初学者系统介绍了相关基本概念、求解方法、实际应用以及算法封装要点。 首先&#xff0c;深入阐释了正规方程解这一多元…...

在Linux上创建一个Docker容器并在其中执行Python脚本

在Linux上创建一个Docker容器并在其中执行Python脚本的过程&#xff0c;涉及多个方面的内容&#xff0c;包括安装Docker、编写Dockerfile、构建镜像、运行容器等。 1. 安装Docker 在Linux上使用Docker之前&#xff0c;你需要确保系统已安装Docker。Docker支持的Linux发行版有…...

Linux C 静态库如何生成并使用

1. 编写源文件 首先创建一个简单的示例项目&#xff0c;包含一个头文件和一个源文件。 头文件 my_lib.h // my_lib.h #ifndef MY_LIB_H #define MY_LIB_H// 函数声明 int add(int a, int b);#endif 源文件 my_lib.c #include <stdio.h>void print_hello() {printf(&q…...

清华大学deepseek教程第四版 DeepSeek+DeepResearch 让科研像聊天一样简单(附下载)

deepseek使用教程系列 DeepSeekDeepResearch 让科研像聊天一样简单(附下载) https://pan.baidu.com/s/1VMgRmCSEzNvhLZQc8mu6iQ?pwd1234 提取码: 1234 或 https://pan.quark.cn/s/f3d4511b790a...

请解释 Vue 中的生命周期钩子,不同阶段触发的钩子函数及其用途是什么?

vue生命周期钩子详解&#xff08;Vue 3版本&#xff09; 一、生命周期阶段划分 Vue组件的生命周期可分为四大阶段&#xff0c;每个阶段对应特定钩子函数&#xff1a; 创建阶段&#xff1a;初始化实例并准备数据挂载阶段&#xff1a;将虚拟DOM渲染为真实DOM更新阶段&#xff…...

输入搜索、分组展示选项、下拉选取,el-select 实现:即输入关键字检索,返回分组选项,选取跳转到相应内容页 —— VUE 项目-全局模糊检索

后端数据代码写于下一篇&#xff1a;输入搜索、分组展示选项、下拉选取&#xff0c;全局跳转页&#xff0c;el-select 实现 —— 后端数据处理代码&#xff0c;抛砖引玉展思路 【效果图】&#xff1a;分组展示选项 【去界面操作感受一下】—> 便捷简洁的企业官网 【录制效…...

Transformer为什么需要多头注意力(Multi-Head Attention)?如果没有多头会怎么样?

直接回答 关键点&#xff1a; Transformer 中的多头注意力&#xff08;Multi-Head Attention&#xff09;允许模型同时关注输入数据的不同方面&#xff0c;提升性能。 如果没有多头&#xff0c;模型可能无法捕捉复杂关系&#xff0c;表现会下降。 什么是多头注意力&#xff…...

VUE中的组件加载方式

加载方式有哪些&#xff0c;及如何进行选择 常规的静态引入是在组件初始化时就加载所有依赖的组件&#xff0c;而懒加载则是等到组件需要被渲染的时候才加载。 对于大型应用&#xff0c;可能会有很多组件&#xff0c;如果一开始都加载&#xff0c;可能会影响首屏加载时间。如…...

Linux自启动fastapi服务

步骤一 在/etc/systemd/system/文件夹下创建pyod.service&#xff08;其中/path/to/conda/bin/activate要改为activate实际存放位置&#xff0c;例如miniconda的实际存放位置为/root/miniconda3/bin/activate&#xff09; [Unit] DescriptionPyOD Uvicorn Service Afternetwo…...

C++与Python:两种编程语言的区别

C和Python都是当今编程领域广泛使用的语言&#xff0c;它们各有特色&#xff0c;适用于不同的开发场景。本文将从语言特性、性能、学习难度、应用领域等多个方面探讨C与Python之间的区别。 一、语言特性 类型系统&#xff1a; C&#xff1a;是一种静态类型语言&#xf…...

进程线程的创建、退出、回收

1. 进程相关知识点 1.1 进程创建 fork()&#xff1a; 功能&#xff1a;创建一个子进程。 返回值&#xff1a; 父进程中返回子进程的 PID。 子进程中返回 0。 失败返回 -1。 特点&#xff1a;子进程是父进程的副本&#xff0c;拥有独立的内存空间。 vfork()&#xff1a;…...

深度学习-6.用于计算机视觉的深度学习

Deep Learning - Lecture 6 Deep Learning for Computer Vision 简介深度学习在计算机视觉领域的发展时间线 语义分割语义分割系统的类型上采样层语义分割的 SegNet 架构软件中的SegNet 架构数据标注 目标检测与识别目标检测与识别问题两阶段和一阶段目标检测与识别两阶段检测器…...

低概率发生调用`pthread_cond_wait`的线程没有被唤醒

低概率发生调用pthread_cond_wait的线程没有被唤醒 背景&#xff1a; 你是否也踩过坑&#xff0c;在A线程调用pthread_cond_wait等待&#xff0c;在B线程调用pthread_cond_signal唤醒A线程进行工作处理&#xff0c;然后在某一次用户产品反馈中发现了低概率问题。A线程像是卡住…...

MATLAB学习之旅:数据插值与曲线拟合

在MATLAB的奇妙世界里,我们已经走过了一段又一段的学习旅程。从基础的语法和数据处理,到如今,我们即将踏入数据插值与曲线拟合这片充满魅力的领域。这个领域就像是魔法中的艺术创作,能够让我们根据现有的数据点,构建出更加丰富的曲线和曲面,从而更好地理解和描述数据背后…...

Python复习

第一章 Python概述 python特点 优点&#xff1a; 简单易学&#xff1b;开发效率高&#xff1b;典型的工具语言&#xff1b;强大丰富的模块库&#xff1b;优秀的跨平台&#xff1b; 缺点&#xff1a; 执行效率不高&#xff1b;代码不能加密&#xff1b;用缩进区分语句关系&…...

通信系统中物理层与网络层联系与区别

在通信系统中&#xff0c;物理层和网络层是OSI&#xff08;开放系统互连&#xff09;模型中的两个重要层次&#xff0c;分别位于协议栈的最底层和第三层。它们在功能、职责和实现方式上有显著的区别&#xff0c;但同时也在某些方面存在联系。以下是物理层与网络层的联系与区别的…...

go 错误处理 error

普通错误处理 // 包路径 package mainimport ("errors""fmt" )func sqrt(f1, f2 float64) (float64, error) {if f2 < 0 {return 0, errors.New("error: f2 < 0")}return f1 / f2, nil }func sqrt1(f1, f2 float64) {if re, err : sqrt(f…...

Redis 缓存穿透、击穿、雪崩:问题与解决方案

在使用 Redis 作为缓存中间件时&#xff0c;系统可能会面临一些常见的问题&#xff0c;如 缓存穿透、缓存击穿 和 缓存雪崩。这些问题如果不加以解决&#xff0c;可能会导致数据库压力过大、系统响应变慢甚至崩溃。本文将详细分析这三种问题的起因&#xff0c;并提供有效的解决…...

Spring容器初始化扩展点:ApplicationContextInitializer

目录 一、什么是ApplicationContextInitializer&#xff1f; 1、核心作用2、适用场景 二、ApplicationContextInitializer的使用方式 1、实现ApplicationContextInitializer接口2、注册初始化器 三、ApplicationContextInitializer的执行时机四、实际应用案例 1、动态设置环境…...

冯·诺依曼体系结构、理解操作系统管理

在谈操作系统概念之前&#xff0c;先简单讲解一下冯诺伊曼体系结构&#xff0c;理解了在硬件层面上数据流的走向&#xff0c;这对后续的理解有很大的帮助。 文章目录 一.冯诺依曼结构冯诺依曼体系结构内存存在的意义 二.理解操作系统管理操作系统的作用管理的本质系统调用 一.…...

Linux初体验:从零开始掌握操作系统的发展与多样性

Linux初体验&#xff1a;从零开始掌握操作系统的发展与多样性 前言一、什么是Linux&#xff1f;1. Linux的定义2. Linux的组成 二、Linux的发展历史1. Unix的诞生2. Linux的诞生3. Linux的普及 三、Linux的发行版1. **Ubuntu**2. **CentOS**3. **Debian**4. **Fedora**5. **Arc…...

文心一言大模型的“三级跳”:从收费到免费再到开源,一场AI生态的重构实验

2025年2月&#xff0c;百度文心大模型接连抛出两枚“重磅炸弹”&#xff1a;4月1日起全面免费&#xff0c;6月30日正式开源文心大模型4.5系列。这一系列动作不仅颠覆了李彦宏此前坚持的“闭源优势论”13&#xff0c;更标志着中国AI大模型竞争进入了一个全新的阶段——从技术壁垒…...

技术教程 | 如何实现1v1音视频通话(含源码)

今天&#xff0c;给大家讲一下怎么实现1v1音视频通话&#xff0c;以下是教程内容&#xff1a; 开发环境 开发环境要求如下&#xff1a; 环境要求说明JDK 版本1.8.0 及以上版本Android API 版本API 21、Android Studio 5.0 及以上版本CPU架构ARM 64、ARMV7IDEAndroid Studio其…...

mysql实时同步到es

测试了多个方案同步&#xff0c;最终选择oceanu产品&#xff0c;底层基于Flink cdc 1、实时性能够保证&#xff0c;binlog量很大时也不产生延迟 2、配置SQL即可完成&#xff0c;操作上简单 下面示例mysql的100张分表实时同步到es&#xff0c;优化备注等文本字段的like查询 创…...

Linux-ubuntu系统移植之Uboot启动流程

Linux-ubuntu系统移植之Uboot启动流程 一&#xff0c;Uboot启动流程1.Uboot的两阶段1.1.第一阶段1.11.硬件初始化1.12.复制 U-Boot 到 RAM1.13.跳转到第二阶段 1.2.第二阶段1.21.C 语言环境初始化1.22. 硬件设备初始化1.23. 加载环境变量1.24. 显示启动信息1.25. 等待用户输入&…...

《Operating System Concepts》阅读笔记:p62-p75

《Operating System Concepts》学习第 10 天&#xff0c;p62-p75 总结&#xff0c;总计 14 页。 一、技术总结 1. system call (1) 定义 The primary interface between processes and the operating system, providing a means to invoke services made available by th…...

【Java场景题】MySQL死锁排查

大家好&#xff0c;今天XiXi给大家分享一个MySQL死锁排查的实验&#xff0c;文章主要有&#xff1a; 通过show engine innodb status&#xff0c;查看最近一次死锁信息开启innodb_print_all_deadlocks&#xff0c;在错误日志中能够记录所有死锁信息通过解析binlog日志定位死锁…...

JSON格式,C语言自己实现,以及直接调用库函数(一)

JSON&#xff08;JavaScript Object Notation&#xff09;是一种轻量级的数据交换格式&#xff0c;易于人阅读和编写&#xff0c;同时也易于机器解析和生成。以下为你提供不同场景下常见的 JSON 格式示例。 1. 简单对象 JSON 对象是由键值对组成&#xff0c;用花括号 {} 包裹&…...

leetcode刷题第十三天——二叉树Ⅲ

本次刷题顺序是按照卡尔的代码随想录中给出的顺序 翻转二叉树 226. 翻转二叉树 /*** Definition for a binary tree node.* struct TreeNode {* int val;* struct TreeNode *left;* struct TreeNode *right;* };*//*总体思路就是&#xff0c;对于每一个结点&…...

spring boot知识点5

1.如何你有俩套配置环境&#xff0c;运行时如何选择 如果有俩套配置环境&#xff0c;则需要三个yml application.yml 用于配置你用那个配置环境 application-dev.yml 用于开发配置环境 application-prod.yml 用于发布配置环境 spring:profiles:active: prod # 指定当前激…...

bboss v7.3.5来袭!新增异地灾备机制和Kerberos认证机制,助力企业数据安全

ETL & 流批一体化框架 bboss v7.3.5 发布&#xff0c;多源输出插件增加为特定输出插件设置记录过滤功能&#xff1b;Elasticsearch 客户端新增异地双中心灾备机制&#xff0c;提升框架高可用性&#xff1b;Elasticsearch client 和 http 微服务框架增加对 Kerberos 认证支持…...

Android自带的省电模式主要做什么呢?

Android自带的省电模式主要做什么呢&#xff1f; 省电模式支持的策略 LOCATION 灭屏后开启GPS待机省电模式 VIBRATION 关闭触摸震动和来电震动 ANIMATION 关闭动画 FULL_BACKUP 全备份 KEYVALUE_BACKUP 键值备份 NETWORK_FIREWALL 网络防火墙&#xff0c;限制 Doze …...

tp6上传文件大小超过了最大值+验证文件上传大小和格式函数

问题&#xff1a; 最近用tp6的文件上传方法上传文件时报文件过大错误。如下所示&#xff1a; $file $this->request->file(file);{"code": 1,"msg": "上传文件大小超过了最大值&#xff01;","data": {"code": 1,&q…...

将RocketMQ集成到了Spring Boot项目中,实现站内信功能

1. 添加依赖 首先&#xff0c;在pom.xml中添加RocketMQ的依赖&#xff1a; <dependencies><!-- Spring Boot Starter Web --><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifac…...