传输层协议:UDP协议

news2024/11/15 22:28:37

简介

用户数据报协议(英语:User Datagram Protocol,缩写:UDP;又称用户数据包协议)是一个简单的面向数据包的通信协议,位于OSI模型的传输层。该协议由David P. Reed在1980年设计且在RFC 768中被规范。典型网络上的众多使用UDP协议的关键应用在一定程度上是相似的。

是一个与 IP 协议 一起使用的长期协议,用于在传输速度和效率比安全性和可靠性更重要的场合下发送数据。

UDP的报头是怎么样的?

当我们发送 UDP 包到达目标机器后,发现 MAC 地址匹配,于是就取下来,将剩下的包传给处理 IP 层的代码。把 IP 头取下来,发现目标 IP 匹配,接下来这里面的数据包是给谁呢?

发送的时候,我知道我发的是一个 UDP 的包,收到的那台机器咋知道的呢?所以在 IP 头里面有个 8 位协议,这里会存放,数据里面到底是 TCP 还是 UDP,当然这里是 UDP。所以,如果我们知道 UDP 头的格式,就能从数据里面,将它解析出来。解析出来以后呢?数据给谁处理呢?

UDP报头结构如下

报头分组结构

UDP报头包括4个字段,每个字段占用2个字节(即16个二进制位)。在IPv4中,“来源连接端口”和“校验和”是可选字段(以粉色背景标出)。在IPv6中,只有来源连接端口是可选字段。 各16bit的来源端口和目的端口用来标记发送和接受的应用进程。因为UDP不需要应答,所以来源端口是可选的,如果来源端口不用,那么置为零。在目的端口后面是长度固定的以字节为单位的长度域,用来指定UDP数据报包括数据部分的长度,长度最小值为8byte。首部剩下地16bit是用来对首部和数据部分一起做校验和(Checksum)的,这部分是可选的,但在实际应用中一般都使用这一功能。

  • 报文长度

    该字段指定UDP报头和数据总共占用的长度。可能的最小长度是8字节,因为UDP报头已经占用了8字节。由于这个字段的存在,UDP报文总长不可能超过65535字节(包括8字节的报头,和65527字节的数据)。实际上通过IPv4协议传输时,由于IPv4的头部信息要占用20字节,因此数据长度不可能超过65507字节(65,535 − 8字节UDP报头 − 20字节IP头部)。在IPv6的jumbogram中,是有可能传输超过65535字节的UDP数据包的。依据RFC 2675,如果这种情况发生,报文长度应被填写为0。

  • 校验和

    校验和字段可以用于发现头部信息和数据中的传输错误。该字段在IPv4中是可选的,在IPv6中则是强制的。如果不使用校验和,该字段应被填充为全0。

主要特点

  • 无连接,即发送数据之前不需要建立连接(发送数据结束时也没有连接可释放),减少了开销和发送数据之前的时延
  • 尽最大努力交付,即不保证可靠交付,主机不需要维持复杂的连接状态表,例如流媒体,实时多人游戏和IP语音(VoIP)是经常使用UDP的应用程序。 在这些特定应用中,丢包通常不是重大问题。如果应用程序需要高度可靠性,则可以使用诸如TCP之类的协议。
  • 面向报文,发送方的 UDP 对应用程序交下来的报文,在添加首部后就向下交付 IP 层。UDP 对应用层交下来的报文,既不合并,也不拆分,而是保留这些报文的边界
  • 支持一对一、一对多、多对一和多对多的交互通信
  • 首部开销小,只有8个字节,比 TCP 的20个字节的首部要短
  • 缺乏拥塞控制,所以需要基于网络的机制来减少因失控和高速UDP流量负荷而导致的拥塞崩溃效应。换句话说,因为UDP发送端无法检测拥塞,所以像使用包队列和丢弃技术的路由器之类的网络基础设备会被用于降低UDP过大流量。数据拥塞控制协议(DCCP)设计成通过在诸如流媒体类型的高速率UDP流中增加主机拥塞控制,来减小这个潜在的问题。

应用场景

许多关键的互联网应用程序使用UDP[2],包括:

  • 域名系统(DNS),其中查询阶段必须快速,并且只包含单个请求,后跟单个回复数据包;
  • 动态主机配置协议(DHCP),用于动态分配IP地址;
  • 简单网络管理协议(SNMP);
  • 路由信息协议(RIP);
  • 网络时间协议(NTP)。

流媒体、在线游戏流量通常使用UDP传输。 实时视频流和音频流应用程序旨在处理偶尔丢失、错误的数据包,因此只会发生质量轻微下降,而避免了重传数据包带来的高延迟。 由于TCP和UDP都在同一网络上运行,因此一些企业发现来自这些实时应用程序的UDP流量影响了使用TCP的应用程序的性能,例如销售、会计和数据库系统。 当TCP检测到数据包丢失时,它将限制其数据速率使用率。由于实时和业务应用程序对企业都很重要,因此一些人认为开发服务质量解决方案至关重要。[3]

一些VPN应用(如OpenVPN)使用UDP并可以在应用程序级别实现可靠连接和错误检查。

参考链接

1.https://zh.wikipedia.org/wiki/%E7%94%A8%E6%88%B7%E6%95%B0%E6%8D%AE%E6%8A%A5%E5%8D%8F%E8%AE%AE

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

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

相关文章

CrimeFragment的UI fragment进行管理

用户界面将由一个名为CrimeFragment的UI fragment进行管理。CrimeFragment的 实例将通过一个名为CrimeActivity的activity来托管。CrimeActivity视图由FrameLayout组件组成,FrameLayout组件为CrimeFragment要显示 的视图安排了存放位置。 CrimeFragment 的视图由一个…

Thinkphp QVD-2022-46174 多语言rce

文章目录漏洞介绍vulhub漏洞搭建漏洞利用利用一:写入文件利用二:文件包含漏洞分析参考文章漏洞介绍 Thinkphp,v6.0.1~v6.0.13,v5.0.x,v5.1.x 如果 Thinkphp 程序开启了多语言功能,那就可以通过 get、head…

[从零开始]用python制作识图翻译器·三

AlsoEasy-RecognitionTranslator具体实现开发环境准备和验证下载conda创建开发环境文字识别模块在线模块离线模块机器翻译模块在线模块离线模块GUIGUI-定位模块GUI-截图模块具体实现 开发环境准备和验证 前期测试项目文件已上传到我的仓库。 下载conda conda是python的版本管…

Day863.协程 -Java 并发编程实战

协程 Hi,我是阿昌,今天学习记录的是关于协程的内容。 Java 语言里解决并发问题靠的是多线程,但线程是个重量级的对象,不能频繁创建、销毁,而且线程切换的成本也很高,为了解决这些问题,Java SD…

C++设计模式(4)——策略模式

策略模式 亦称: Strategy 意图 策略模式是一种行为设计模式, 它能让你定义一系列算法, 并将每种算法分别放入独立的类中, 以使算法的对象能够相互替换。 问题 一天, 你打算为游客们创建一款导游程序。 该程序的核心…

什么是CNCF云原生

一、CNCF简介 CNCF:全称Cloud Native Computing Foundation(云原生计算基金会),成立于2015年12月11日,是一个开源软件基金会,它致力于云原生(Cloud Native)技术的普及和可持续发展。…

golang 错误处理channel+error真的香

官方推荐golang中错误处理当做值处理, 既然是值那就可以在channel中传输,本文带你看看golang中channelerror来做异步错误处理有多香,看完本文还会觉得golang的错误处理相比java try catch一点优势都没有吗? 场景 如下&#xff0…

LeetCode刷题笔记 - JavaScript(二)

文章目录1.剑指 Offer 60. n个骰子的点数2.面试题67. 把字符串转换成整数3.面试题59 - II. 队列的最大值剑指 Offer 60. n个骰子的点数 面试题67. 把字符串转换成整数 面试题59 - II. 队列的最大值 1.剑指 Offer 60. n个骰子的点数 把n个骰子扔在地上,所有骰子朝上一…

Java运行机制

java的运行机制 Java程序的运行机制分为编写、编译和运行三个步骤。 1.编写 编写是指在Java开发环境中进行程序代码的编辑,最终生成后缀名为“.java”的Java源文件。 2.编译 编译是指使用Java编译器对源文件进行错误排查的过程,编译后将生成后缀名为…

一篇文章带你熟悉Ajax

文章目录一、AJAX 简介二、创建 AJAX 的基本步骤1. 创建 XMLHttpRequest 对象2.向服务器发送请求3.服务器响应状态一、AJAX 简介 ☀️AJAX 的英文全称为 Asynchronous JavaScript And XML,Asynchronous 是异步的意思。何为异步呢?在这里异步是指通过 AJA…

IT运维服务体系的总体架构是什么?

大家好,我是技福的小咖老师。 今天我们来简单介绍一下IT运维服务体系的总体架构。 运维服务体系由运维服务制度、运维服务流程、运维服务组织、运维服务队伍、运维技术服务平台以及运行维护对象六部分组成,涉及制度、人、技术、对象四类因素。制度是规…

每日一题-力扣(leetcode)2368. 受限条件下可到达节点的数目

题目描述 现有一棵由 n 个节点组成的无向树,节点编号从 0 到 n - 1 ,共有 n - 1 条边。 给你一个二维整数数组 edges ,长度为 n - 1 ,其中 edges[i] [ai, bi] 表示树中节点 ai 和 bi 之间存在一条边。另给你一个整数数组 restr…

激光雷达对植被冠层结构和SIF同时探测展望

前言陆表植被在全球碳循环中起着不可替代的作用。但现阶段,人们对气候变化与植被生态理化功能的关系的研究还不够完善。为了提高气候预测以及缓解气候恶化的速率,对植被参数比如:叶面积指数(leaf)、植被冠层结构&#…

JavaScript JSON序列化和反序列化

文章目录JavaScript JSON序列化和反序列化概述JSON序列化JSON.stringify()仅一个参数使用使用2个参数使用3个参数其他自定义toJson序列化顺序反序列化JSON.parse()仅一个参数使用使用2个参数eval()JavaScript JSON序列化和反序列化 概述 JSON数据在网络传输时存在两种类型&am…

【虹科云展厅】虹科赋能汽车智能化云展厅专题回顾

虹科赋能汽车智能化云展厅 聚焦前沿技术,【虹科赋能汽车智能化云展厅】正式上线,本次云展厅围绕“汽车以太网/TSN、汽车总线、智能网联、电子测试与验证、自动驾驶”等核心话题,为您带来如临展会现场般的讲演与介绍,更有技术工程…

PromQL之选择器和运算符

平台统一监控的介绍和调研直观感受PromQL及其数据类型PromQL之选择器和运算符 PromQL 匹配器 相等匹配器() 选择与提供的字符串完全相同的数据 例:筛选出id“G1 Eden Space” 的数据 jvm_memory_used_bytes{id"G1 Eden Space"}…

Elasticsearch高级查询—— 匹配查询文档

目录一、初始化文档数据二、匹配查询文档示例2.1、概述2.2、示例一、初始化文档数据 在 Postman 中,向 ES 服务器发 POST 请求 :http://localhost:9200/user/_doc/1,请求体内容为: {"name":"张三","age&…

知识图谱与神经网络,神经调节知识网络图

1、图立方和知识图谱的区别和联系与区别 图网络,即Natural Graph,是基于世界各实体之间的自然关系表示而得到的图,他们的节点一般是某个特定网络中的实体(人、物理机、分子)。例如:社交网络、通信网络、蛋…

阿里云-ODPS SQL-日常开发日期、字符、数学运算、聚合函数函数使用技巧

文章目录1、背景2、 数据处理2.1、OLTP与OLAP概念2.2、OLTP与OLAP区别3、日常开发常用函数3.1、日期函数3.2、数学运算函数3.3、字符串处理函数3.4、聚合函数1、背景 数据仓库,是一个面向主题的、集成的、随时间变化的、信息本身相对稳定的数据集合。 数据仓库从Or…

2-Node.js 内置模块

Node.js 内置模块 简介 之前说过,Node.js 中重要的两句话是 Node.js 是一个基于 Chrome V8 引擎的 JavaScript 运行环境。Node.js 使用了一个事件驱动、非阻塞式 I/O 的模型,使其轻量又高效。 上面两句话,可以使用下面的图片来具体认识。…