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

【计算机网络】UDP报文详解

目录

一. UDP协议概述

二. UDP报文格式

首部

三. UDP的缓冲区


一. UDP协议概述

UDP——用户数据报协议,是传输层的一个重要协议

基于UDP的应用层协议有:DNS,TFTP,SNMP,NTP

协议全称默认端口号
DNSDomain Name Service(域名服务)53
TFTPTrivial File Transfer Protocol(简单文件传输协议)69
SNMPSimple Network Management Protocol(简单网络管理协议)通过UDP端口161接收,只有Trap信息采用端口162
NTPNetwork Time Protocol(网络时间协议)123

UDP的主要特点:

  1. UDP是无连接的。即发送数据前不需要建立连接,发送数据结束也没有连接释放,因此减少了开销和发送数据前的时延
  2. UDP使用尽最大努力交付。即不保证可靠交付,因此不需要维护复杂的连接状态表(有许多参数)
  3. UDP是面向数据报的。发送方的UDP对应用层交付的报文,在添加首部后直接交付给IP层。UDP对应用层交付的报文,既不合并,也不拆分,而是保留这些报文的边界。也就是说,应用层给UDP多长报文,UDP就发多长,一次发送一个报文,如下图。
  4. 在接收方的UDP,对于IP层交付的UDP用户数据报,在去除UDP首部后也直接交付应用层,不作任何处理,一次交付一个完整的报文。因此这就将控制报文长度的工作交给了应用层:应用层要选择合适大小的报文。若报文太长,UDP封装后交给IP层,IP层在传输时可能要进行分片处理,减低了IP层的效率。反之,应用层报文太短,效率也低
  5. UDP没有拥塞控制。因此网络出现的拥塞不会使源主机的发送速率降低。这对某些实时应用很重要,如IP电话,实时视频会议等,要求源主机以恒定的速率发送数据,并且允许在网络拥塞时丢失一部分数据,但不允许数据有太大的时延
  6. UDP支持一对一,一对多,多对一和多对多的交互通信
  7. UDP的首部开销小,只有8字节,比TCP的20字节的首部短

二. UDP报文格式

UDP报文有两大部分组成:报头+有效载荷(数据),其中有效载荷就是应用层交付给UDP协议层的报文

首部

在学习协议报文时,首先要解决两个问题:1. 报头和有效载荷如何分离  2. 有效载荷如何向上交付

第一个问题:报头和有效载荷如何分离

在UDP中,报头的大小是固定的——8字节。所以只要截取前8字节,后面就都是有效载荷了

第二个问题:有效载荷如何向上交付

UDP是传输层的,上层是应用层。而应用层程序会绑定端口号,UDP报头中有16位(bit位)目的端口号,根据端口号做到向上交付


UDP报头由4部分组成:

  1. 源端口号:发送方的端口号
  2. 目的端口号:目的主机的端口号
  3. UDP长度:UDP报文的长度,单位字节,包括报头和有效载荷
  4. UDP校验和:保证报文完整性和正确性,出错就丢弃

如果接收方 UDP 发现收到的报文中的端口号不存在,就丢弃该报文,并由国际控制报文协议 ICMP发送“端口不可达”差错报文给发送方

三. UDP的缓冲区

UDP报头中,UDP长度为16为,即最长UDP报文时64KB(包含报头),如果长度超过64KB,需要应用层手动分包,多次发送,并在接收方手动拼接

因为UDP是面向数据报的,上层一次交付多少数据,就发送多少数据,所以UDP是没有发送缓冲区的,但是有接受缓冲区,因为需要等待上层处理。所以UDP是全双工的(可同时收发数据)

结束语

本篇博客到此结束,感谢看到此处。
欢迎大家纠错和补充
如果觉得本篇文章对你有所帮助的话,不妨点个赞支持一下博主,拜托啦,这对我真的很重要。

相关文章:

【计算机网络】UDP报文详解

目录 一. UDP协议概述 二. UDP报文格式 首部 三. UDP的缓冲区 一. UDP协议概述 UDP——用户数据报协议,是传输层的一个重要协议 基于UDP的应用层协议有:DNS,TFTP,SNMP,NTP 协议全称默认端口号DNSDomain Name Se…...

排序算法——归并排序

归并排序(Merge Sort)是计算机科学中非常重要的排序算法之一。它不仅高效、稳定,而且是许多高级排序技术和算法思想的基础。在本文中,我们将深入探讨归并排序的原理、实现方法,以及它的优缺点。 1. 归并排序的原理 归…...

2023 年安徽省职业院校技能大赛高职组“软件测试”赛项样题

2023 年安徽省职业院校技能大赛 高职组“软件测试”赛项样题 目录 任务一:功能测试(45 分) 1、测试计划(5 分) 2、测试用例(15 分) 3、Bug 清单(20 分) 4、测试报告&…...

Mysql8和Oracle实际项目中递归查询树形结构

背景: 项目升级,引入MySQL数据库,之前一直用的是Oracle数据,在做用户登录单位维护的时候,需要返回该用户所属单位下的所有子单位。下边是模拟项目数据实践的过程。 数据准备: 准备一张单位表&#xff0c…...

docker mysql8 设置不区分大小写

docker安装Mysql8.0的坑之lower_case_table_names_docker mysql lower_case_table_names-CSDN博客https://blog.csdn.net/p793049488/article/details/108365929 docker run ‐di ‐‐nametensquare_mysql ‐p 33306:3306 ‐e MYSQL_ROOT_PASSWORD123456 mysql...

Audio Siganl (MATLAB) 代码学习—常见问题3

问题描述 生成信号y1: 8000个样本,1000个周期,幅度为0.85的余弦信号。若信号的持续时间为1s,则采样频率和信号频率为多少。生成信号y2: 持续时间为1s,幅度为0.7,频率为500Hz,相位为 π / 4 \pi/4 π/4生成信号y:y_1+y_2绘制前200ms的y信号示意图计算y的DFT绘制频域示意图…...

【PTA题目】7-8 矩阵运算 分数 10

7-8 矩阵运算 分数 10 全屏浏览题目 切换布局 作者 C课程组 单位 浙江大学 给定一个nn的方阵,本题要求计算该矩阵除副对角线、最后一列和最后一行以外的所有元素之和。副对角线为从矩阵的右上角至左下角的连线。 输入格式: 输入第一行给出正整数n(…...

Ubuntu20.04创建并挂在zfs池

Ubuntu 下使用 ZFS [适用于中高级用户] 主磁盘上清洁安装带有ZFS的Ubuntu后,可以开始体验其特性。 所有ZFS配置过程都需要命令行。 我不知道有GUI工具。 创建一个 ZFS 池 本节仅适用于具有多个磁盘的系统。 如果只有一个磁盘,Ubuntu会在安装时自动创建…...

x的平方根算法(leetcode第69题)

题目描述: 给你一个非负整数 x ,计算并返回 x 的 算术平方根 。由于返回类型是整数,结果只保留 整数部分 ,小数部分将被 舍去 。注意:不允许使用任何内置指数函数和算符,例如 pow(x, 0.5) 或者 x ** 0.5 。…...

打破空间限制,畅享真实生活

直播已经成为了当今社会中非常流行的一种娱乐方式,也是人们获取信息和互动的重要渠道之一。而无绿幕直播,则是近年来兴起的一种特殊形式,它打破了以往直播的空间限制,让观众们能够更贴近主播,更真实地感受到直播背后的…...

Python基础期末复习 新手 2

虽然age 10在__init__方法中定义了一个局部变量age,但这个局部变量并不会影响类属性age的值。类属性是在类级别上定义的,不属于任何一个实例。因此,在创建实例s1和s2时,它们的age属性值都为类属性的初始值0。 尽管对类的属性值进…...

Java接入ChatGPT接口简单示例

我们定义了一个名为ChartGPTConfig的类,它有两个私有成员变量apiKey和apiUrl,分别表示ChartGPT的API密钥和API URL。 public class ChartGPTConfig {private final String apiKey;private final String apiUrl;public ChartGPTConfig(String apiKey, St…...

解决夜神模拟器与Android studio自动断开的问题

原因:夜神模拟器的adb版本和Android sdk的adb版本不一致 解决办法: 1.找到android的sdk (1)File--->Project Structure (2)SDK Location:记下sdk的位置 2.找到sdk中的adb文件 SDK-->platform-tools-->adb.exe 3.复制…...

利用C语言模拟实现堆的基本操作和调堆算法

利用C语言模拟实现堆的基本操作和调堆算法 文章目录 利用C语言模拟实现堆的基本操作和调堆算法前言一、堆的基本原理大根堆和小根堆的比较 二、实现堆的基本操作1)结构定义2)初始化堆(HeapInit)3)销毁堆(He…...

react hooks之useRef和useImperativeHandle

为什么这两个一起写,是因为这两个关联性很大,逐一介绍。 一:useRef 1、作用:用于在函数组件中创建一个持久化的引用变量。这个引用变量可以在组件的多次渲染之间保持不变,并且可以访问和修改 DOM 元素或其他组件实例…...

scala方法与函数

定义方法定义函数方法和函数的区别scala的方法函数操作 1.9 方法与函数 1.9.1 定义方法 定义方法的基本格式是: def 方法名称(参数列表):返回值类型 方法体 def add(x: Int, y: Int): Int x y println(add(1, 2)) // 3 //也…...

前端框架(Front-end Framework)和库(Library)的区别

聚沙成塔每天进步一点点 ⭐ 专栏简介 前端入门之旅:探索Web开发的奇妙世界 欢迎来到前端入门之旅!感兴趣的可以订阅本专栏哦!这个专栏是为那些对Web开发感兴趣、刚刚踏入前端领域的朋友们量身打造的。无论你是完全的新手还是有一些基础的开发…...

mysql原理--B+树索引的使用

1.索引的代价 在介绍如何更好的使用索引之前先要了解一下使用这玩意儿的代价,它在空间和时间上都会拖后腿: (1). 空间上的代价 这个是显而易见的,每建立一个索引都要为它建立一棵 B 树,每一棵 B 树的每一个节点都是一个数据页&…...

Android : Room 数据库的基本用法 —简单应用_三_版本

在实体类中添加了新字段: Entity(tableName "people") public class People {//新添加的字段private String email;public String getEmail() {return email;}public void setEmail(String email) {this.email email;}} 再次编译启动时会报错&#xf…...

微服务网关组件Gateway实战

1. 需求背景 在微服务架构中,通常一个系统会被拆分为多个微服务,面对这么多微服务客户端应该如何去调用呢?如果根据每个微服务的地址发起调用,存在如下问题: 客户端多次请求不同的微服务,会增加客户端代码…...

Phi-4-mini-reasoning效果验证:在MMLU-Pro数学子集上的实际推理准确率展示

Phi-4-mini-reasoning效果验证:在MMLU-Pro数学子集上的实际推理准确率展示 1. 模型概述 Phi-4-mini-reasoning是一款3.8B参数的轻量级开源模型,由微软Azure AI Foundry团队开发。这款模型专为数学推理、逻辑推导和多步解题等强逻辑任务设计&#xff0c…...

Eigen库实战指南——从基础到精通

1. Eigen库基础入门:矩阵与向量操作 第一次接触Eigen库是在做机器人运动学仿真时,当时被它简洁的API设计惊艳到了。这个纯头文件的C模板库,不需要编译安装,只需包含头文件就能使用,对开发者极其友好。Eigen最核心的Mat…...

VisualCppRedist AIO:Windows系统运行库的一站式解决方案

VisualCppRedist AIO:Windows系统运行库的一站式解决方案 【免费下载链接】vcredist AIO Repack for latest Microsoft Visual C Redistributable Runtimes 项目地址: https://gitcode.com/gh_mirrors/vc/vcredist VisualCppRedist AIO是一个开源项目&#x…...

ComfyUI-WanVideoWrapper全栈指南:从认知到实践的AI视频生成解决方案

ComfyUI-WanVideoWrapper全栈指南:从认知到实践的AI视频生成解决方案 【免费下载链接】ComfyUI-WanVideoWrapper 项目地址: https://gitcode.com/GitHub_Trending/co/ComfyUI-WanVideoWrapper 一、认知篇:理解AI视频生成的技术基础 1.1 核心概念…...

国产化服务器上,手把手教你用TongHttpServer V6.0搭建静态资源站(含麒麟/统信系统适配指南)

国产化环境实战:TongHttpServer V6.0静态资源站部署全攻略 在信创产业快速发展的背景下,国产化软硬件生态已逐步成熟。对于需要在国产CPU和操作系统环境中部署Web服务的工程师而言,选择一款性能优异且兼容性良好的国产Web服务器软件至关重要。…...

5大维度解析zteOnu:让ONU设备管理效率提升300%的开源工具

5大维度解析zteOnu:让ONU设备管理效率提升300%的开源工具 【免费下载链接】zteOnu A tool that can open ZTE onu device factory mode 项目地址: https://gitcode.com/gh_mirrors/zt/zteOnu 问题引入:网络运维工程师的日常困境 你是否也曾面临这…...

28GHz毫米波滤波器设计实战:用SynMatrix快速搞定SIW带通滤波器(附完整参数)

28GHz毫米波滤波器设计实战:SynMatrix工具链的高效应用指南 在毫米波频段,滤波器设计一直是射频工程师面临的重大挑战之一。尤其是当工作频率上升到28GHz甚至更高时,传统设计方法往往陷入反复迭代的泥潭,耗费大量时间在仿真优化与…...

Three.js面试必备:从光源类型到性能优化的20个高频考点解析

Three.js面试深度攻略:从核心原理到性能优化的20个技术要点 当面试官抛出"Three.js的光照系统如何影响渲染性能"这类问题时,你是否能条理清晰地拆解环境光与平行光的计算差异?面对"如何实现自定义着色器优化建筑可视化项目的渲…...

CosyVoice部署实战:从零到一搭建你的AI语音合成环境

1. 环境准备:打造AI语音合成的温床 第一次接触CosyVoice时,我对着官方文档发呆了半小时——那些密密麻麻的命令行像天书一样。后来才发现,搭建AI语音合成环境就像组装乐高积木,只要按步骤拼接关键部件就能成功。我们先从最基础的系…...

AI赋能tokenp:借助快马多模型能力生成具备智能风控与建议的钱包原型

最近在尝试用AI辅助开发一个智能化的tokenp钱包原型,发现InsCode(快马)平台的多模型AI能力特别适合快速实现这类需求。今天就来分享下如何用React构建一个带AI风控和建议功能的增强型钱包界面。 项目整体构思 传统钱包应用主要关注资产存储和转账,而结合…...