UDP协议介绍和作用

news2024/11/15 23:38:10

什么是UDP?
UDP是User Datagram Protocol的简称,中文名是用户数据报协议,是OSI参考模型中的传输层协议,它是一种无连接的传输层协议,提供面向事务的简单不可靠信息传送服务。
UDP的正式规范是IETF RFC768。UDP在IP报文的协议号是17。

在OSI模型中,UDP在第四层——传输层,处于IP协议的上一层。UDP有不提供数据包分组、组装和不能对数据包进行排序的缺点,也就是说,当报文发送之后,是无法得知其是否安全完整到达的。UDP用来支持那些需要在计算机之间传输数据的网络应用。包括网络视频会议系统在内的众多的客户/服务器模式的网络应用都需要使用UDP协议。UDP协议从问世至今已经被使用了很多年,虽然其最初的光彩已经被一些类似协议所掩盖,但是即使是在今天UDP仍然不失为一项非常实用和可行的网络传输层协议。

与所熟知的 TCP(传输控制协议)协议一样,UDP 协议直接位于 IP(网际协议)协议
的顶层。根据 OSI(开放系统互连)参考模型,UDP 和 TCP 都属于传输层协议。 UDP 协议
的主要作用是将网络数据流量压缩成数据包的形式。一个典型的数据包就是一个二进制数据
的传输单位。每一个数据包的前 8 个字节用来包含报头信息,剩余字节则用来包含具体的传
输数据。

UDP报头

UDP报头包括4个字段,每个字段占用2个字节(即16个二进制位)。
在IP4v中,“来源连接端口”和“校验和”是可选字段(粉色背景标出)。
在IPv6中,只有来源连接端口是可选字段。

UDP数据报格式有首部和数据两个部分。首部很简单,共8字节。包括:

源端口(Source Port):2字节,源端口号。
目的端口(Destination Port):2字节,目的端口号。
长度(Length):2字节,用于校验UDP数据报的数据字段和包含UDP数据报首部的“伪首部”。其校验方法用IP分组首部中的首部校验和。
伪首部,又称为伪包头(Pseudo Header):是指在TCP的分段或UDP的数据报格式中,在数据报首部前面增加源IP地址、目的IP地址、IP分组和协议字段、TCP或UDP数据报的总长度等共12字节,所构成的扩展首部结构。此伪首部是一个临时的结构,它既不向上也不向下传递,仅仅只是为了保证可以校验套接字的正确性。

TCP和UDP区别

特征点TCPUDP
传输可靠性面向连接面向非连接
应用场景传输数据量大传输量小
速度

TCP(传输控制协议)提供的是面向连接、可靠的字节流服务。当客户端和服务器彼此交换数据前,必须先在双方之间建立一个TCP连接,之后才能传输数据。TCP提供超时重发,丢弃重复数据,检验数据,流量控制等功能,保证数据能从一端传到另一端。

UDP(用户数据协议)是一个简单的面向数据报的运输层协议。UDP不提供可靠性,它只是把应用程序传给IP层的数据报发送出去,但是并不能保证它们能到达目的地。由于UDP咋传输数据前不用在客户和服务器之间建立一个连接,且没有超时重发等机制,故而传输速度很快。

由于UDP缺乏拥塞控制(congestion control),需要基于网络的机制来减少因失控和高速UDP流量负荷而导致的拥塞崩溃效应。换句话说,因为UDP发送者不能够检测拥塞,所以像使用包队列和丢弃技术的路由器这样的网络基本设备往往就成为降低UDP过大通信量的有效工具。数据报拥塞控制协议(DCCP)设计成通过在诸如流媒体类型的高速率UDP流中,增加主机拥塞控制,来减小这个潜在的问题。

UDP方式传输数据
发送时:先把数据放到报文,写到缓冲区字节数组再传送。
接收时:从缓冲器数组读取,打包到报文。

UDP的应用场景
在选择使用协议的时候,选择UDP必须要谨慎。由于缺乏可靠性且属于非连接导向协议,UDP一般必须允许一定量的数据包丢失、出错和复制粘贴。但有些应用,比如TFTP,需要可靠性保证,则必须在应用层增加根本的可靠机制。但是绝大多数UDP应用都不需要可靠机制,甚至可能因为引入可靠机制而降低性能。流媒体、即时多媒体游戏和IP电话(VoIP)就是典型的UDP应用。如果某个应用需要很高的可靠性,那么可以用传输控制协议(及TCP协议)来代替UDP。

由图一我们可以看到,使用UDP协议的应用有:域名系统(DNS)、简单网络管理协议(SNMP)、路由信息协议(RIP)等等。因为UDP不属于连接型协议,因而具有资源消耗小,处理速度快的优点,所以音频、视频和普通数据在传送时使用UDP比较多,因为它们即使偶尔丢失一两个数据包,也不会对接收结果产生太大影响。比如我们聊天用到的QQ就是使用UDP协议。

UDP的单播、广播、组播
①单播:用于两个主机之间端对端的通信。即一对一(客户端与服务器端点到点连接)。

②广播:用于一个主机对整个局域网上所有主机通信。即一对所有。广播禁止在Internet宽带网上传输(广播风暴)。

③组播(多播):对一组特定的主机进行通信,而不是整个局域网上的所有主机。即一对一组

将网络中同一业务类型主机进行了逻辑上的分组,进行数据收发的时候其数据仅仅在同一分组中进行,其他的主机没有加入此分组不能收发对应的数据。

单播和广播是两个极端,要么对一个主机进行通信,要么对整个局域网上的主机进行通信。实际情况下,经常需要对一组特定的主机进行通信,而不是整个局域网上的所有主机,这就是组播的用途。
注意:只有UDP才有广播、组播的传递方式。而TCP是一对一连接通信。组播的重点是高效的把同一个包尽可能多的发送到不同的,甚至可能未知的设备。但是TCP连接是一对一明确的。

组播的优点
具有同种业务的主机加入同一数据流,共享同一通道,节省了带宽和服务器的优点,具有广播的优点而又没有广播所需要的带宽。
服务器的总带宽不受客户端带宽的限制。由于组播协议由接收者的需求来确定是否进行数据流的转发,所以服务器端的带宽是常量,与客户端的数量无关。
与单播一样,多播是允许在广域网即Internet上进行传输的,而广播仅仅在同一局域网上才能进行。
IP地址的不同
广播:主机发送广播消息时,需要指定目的IP地址255.255.255.255和接受者的端口号。
多播:在多播系统中,有一个源点一组终点。这是一对多的关系。在这种类型的通信中,源地址是一个单播地址,而目的地址则是一个组地址。

IP多播通信必须依赖于IP多播地址,在IPv4中它是 一个D类IP地址,范围从224.0.0.0到239.255.255.255,并被划分为局部连接多播地址、预留多播地址和管理权限多播地址三类。

局部多播地址在224.0.0.0~224.0.0.244之间,是为路由协议和其他用途保留的地址,路由器并不转发属于此范围的IP包。
预留多播地址在224.0.1.0~238.255.255.255之间,可用于全球范围(如Internet)或网络协议。
本地管理组播地址在239.0.0.0~239.255.255.255之间,可供组织内部使用,类似于私有IP地址,不能用于Internet,可限制多播范围。

本次分享到此结束,感谢大家的阅读!

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

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

相关文章

java数组之线性查找、二分法查找

一、线性查找 思想:如果想在一个数组中查找是否有某个元素,最容易想到的办法就是遍历数组,将数组中元素与想要查找的元素逐个对比,如果相等表示找到了,如果不等,则表示没找到。这就是线性查找的思想。 案例…

Chat2DB:AI引领下的全链路数据库管理新纪元

一、引言 随着数据驱动决策成为现代企业和组织的核心竞争力,数据库管理工具的重要性日益凸显。然而,传统的数据库管理工具往往存在操作复杂、功能单一、不支持多类型数据库管理等问题,限制了数据的有效利用。为了打破这一局面,Ch…

东方通Tongweb发布vue前端

一、前端包中添加文件 1、解压vue打包文件 以dist.zip为例,解压之后得到dist文件夹,进入dist文件夹,新建WEB-INF文件夹,进入WEB-INF文件夹,新建web.xml文件, 打开web.xml文件,输入以下内容 …

代码随想录算法训练营第四十九天| 647. 回文子串、 516.最长回文子序列

647. 回文子串 题目链接:647. 回文子串 文档讲解:代码随想录 状态:不会 思路: dp[i][j] 表示字符串 s 从索引 i 到索引 j 这一段子串是否为回文子串。 当s[i]与s[j]不相等,那没啥好说的了,dp[i][j]一定是fa…

Chromium编译指南2024 Linux篇-编译Chromium(五)

1.引言 在完成环境配置之后,我们需要开始实际的编译工作。编译 Chromium 是一个相对复杂且耗时的过程,尤其是第一次编译时。为了保证顺利完成,我们将使用 GN 和 Ninja 工具来生成和管理构建文件。接下来,我们会详细介绍如何生成构…

Cesium中实现全球体积云效果的一种方案

原生 Cesium 提供了一种积云的效果,云的物理特征和渲染性能都还不错,这种方案适合表达小范围相对离散的云朵,但是用来实现全球范围下相对连续、柔和渐变的云层比较困难。本文在体渲染的基础上,参考了开源社区中 shadertoy 和 thre…

软件架构之软件架构概述及质量属性

软件架构之软件架构概述及质量属性 第 9 章:软件架构设计9.1 软件架构概述9.1.1 软件架构的定义9.1.2 软件架构的重要性9.1.3 架构的模型 9.2 架构需求与软件质量属性9.2.1 软件质量属性9.2.2 6 个质量属性及实现 第 9 章:软件架构设计 像学写文章一样&…

java通过poi-tl导出word实战详细步骤

文章目录 与其他模版引擎对比1.引入maven依赖包2.新建Word文档exportWprd.docx模版3.编写导出word接口代码4.导出成果 poi-tl是一个基于Apache POI的Word模板引擎,也是一个免费开源的Java类库,你可以非常方便的加入到你的项目中,并且拥有着让…

模板语法之插值语法{{}}——01

<主要研究&#xff1a;{{ 这里可以写什么}} 1.在data中声明的变量函数都可以 2.常量 3.只要是合法的JavaScript的表达式&#xff0c;都可以 4. 模板表达式都被放在沙盒中&#xff0c;只能访问全局变量的一个白名单&#xff0c;如 Math 和 Date <body> <div i…

进程间的通信--管道

文章目录 一、进程通信的介绍1.1进程间为什么需要通信1.2进程如何通信 二、管道2.1匿名管道2.1.1文件描述符理解管道2.1.2接口使用2.1.3管道的4种情况2.1.4管道的五种特征 2.2管道的使用场景2.2.1命令行中的管道2.2.2进程池 2.命名管道2.1.1原理2.2.2接口2.2.3代码实例 一、进程…

网络编程:各协议头(数据报格式)

一、mac头 二、ip头 protocol——tcp/udp &#xff08;7&#xff09;TTL——生存时间 三、tcp头 四、udp头

最新2023年行政区划、路网、土壤质地矢量数据

行政区划矢量数据是指用矢量格式表示的地理信息系统&#xff08;GIS&#xff09;数据&#xff0c;其中包含了行政区域的边界信息&#xff0c;如国家、省份、城市、区县、乡镇甚至村级的界限。这些数据通常以点、线、面的几何图形来表示具体的地理实体&#xff0c;并且每个实体都…

傅里叶级数的3D表示 包括源码

傅里叶级数的3D表示 包括源码 flyfish 傅里叶级数的基本形式 &#xff1a; y ( t ) ∑ n 1 , 3 , 5 , … N 4 A n π sin ⁡ ( n π T t ) y(t) \sum_{n1,3,5,\ldots}^{N} \frac{4A}{n\pi} \sin\left(\frac{n\pi}{T} t\right) y(t)n1,3,5,…∑N​nπ4A​sin(Tnπ​t) 其中&…

python爬虫基础入门

步骤 获取网页内容&#xff1a; http请求 python的Requests库 解析网页内容 html网页结构 python的Beautiful Soup库 储存或分析数据 储存进数据库 作为ai分析的数据 转化为图表显示出来 DDoS攻击 通过给服务器发送海量高频请求&#xff0c;大量消耗网页资源&#…

548M高精度全球国界数据

我们在《2024版有审图号的SHP行政区划》一文中为你分享过全国行政区划&#xff0c;现在再为你分享一份高精度的全球国界数据。 如果你需要该全球国界数据&#xff0c;请在文末查看该数据的领取方法。 548M全球国界数据 数据来源于GADM&#xff0c;全称Database of Global Ad…

51.通过获取数据快速实现一个辅助

上一个内容&#xff1a;50.破坏性更小的代码跳转功能完善&#xff08;无敌秒杀&#xff09; 原理是&#xff1a;找一个现成的辅助&#xff0c;使用PCHunter工具看现成辅助对目标游戏做了那些hook操作&#xff0c;然后再使用Ollydbg.exe工具分析现成辅助为何这样做。 下图左边…

图论---无向图中国邮路的实现

开始编程前分析设计思路和程序的整体的框架&#xff0c;以及作为数学问题的性质&#xff1a; 程序流程图&#xff1a; 数学原理&#xff1a; 本质上是找到一条欧拉回路&#xff0c;考虑图中的边权重、顶点的度数以及如何通过添加最少的额外边来构造欧拉回路&#xff0c;涉及到欧…

「媒体邀约」上海请媒体的费用

传媒如春雨&#xff0c;润物细无声&#xff0c;大家好&#xff0c;我是51媒体网胡老师。 上海无疑是最具活动的城市之一&#xff0c;各种大大小小的论坛、发布会、展览展会应接不暇&#xff0c;那么在上海做活动想邀请媒体进行宣传报道&#xff0c;需要多少费用呢&#xff1a;…

Outlook邮件提醒通知功能详解:设置教程!

Outlook邮件提醒通知使用指南&#xff1f;如何个性设计邮件通知&#xff1f; 为了帮助用户更好地管理邮件&#xff0c;Outlook提供了强大的邮件提醒通知功能。AokSend将详细介绍如何设置和使用Outlook邮件提醒通知功能&#xff0c;以提高工作效率和管理时间的能力。 Outlook邮…

昇思25天学习打卡营第12天|应用实践之基于MindSpore通过GPT实现情感分类

基本介绍 今天的应用实践是基于MindSpore通过GPT实现情感分类&#xff0c;这与之前的使用BERT模型实现情绪分类有异曲同工之妙&#xff0c;本次使用的模型是OpenAI开源的GPT&#xff0c;数据集是MindNLP内置的数据集imdb。我们将会使用该数据集对GPT进行训练&#xff0c;然后进…