【windows|015】UDP协议详解

🍁博主简介

🏅云计算领域优质创作者

🏅2022年CSDN新星计划python赛道第一名

🏅2022年CSDN原力计划优质作者 ​

🏅阿里云ACE认证高级工程师 ​

🏅阿里云开发者社区专家博主

💊交流社区:CSDN云计算交流社区欢迎您的加入!

目录

1、UDP协议简介

2、UDP协议报文格式和常用的端口

3、UDP协议特点

4、UDP协议的数据传输流程

5、UDP协议的应用场景

6、UDP协议的优缺点

7、TCP和UDP协议比较


UDP(用户数据报协议)是OSI参考模型中传输层的一种无连接协议。

UDP协议是一种简单、高效的传输协议,适用于对实时性要求高、但对可靠性要求不高的场景。然而,在使用UDP协议时,需要根据实际需求进行权衡和优化

1、UDP协议简介

  • 定义:UDP是OSI模型中第四层(传输层)的协议,位于IP协议之上,提供面向事务的简单不可靠信息传送服务。其正式规范由IETF RFC 768定义。

  • 中文名:用户数据报协议

  • 特点:无连接、不保证可靠交付、面向报文、首部开销小

  • 用途:为应用程序提供一种以最少的协议机制向其他程序发送消息的过程

2、UDP协议报文格式和常用的端口

UDP报文包括首部(Header)和数据(Payload)两部分,但它不像TCP报文有那么复杂的首部内容。UDP报文首部只有8个字节,由4个字段组成,每个字段的长度是2字节,如图所示:

图片

因为UDP报头使用两个字节存放端口号,所以端口号的有效范围从0到65535。部分常用的端口如下表所示

图片

3、UDP协议特点

无连接

  • 在发送数据之前不需要建立连接,发送结束时也没有连接可以释放,因此减少了开销和发送数据之前的时延。

  • 主机不需要维持具有许多参数的、复杂的连接状态表。

不保证可靠交付

  • UDP使用尽最大努力交付,即不保证数据包的可靠传输。如果数据包在传输过程中丢失或损坏,接收方将无法得到这个数据包,且UDP不会进行重传。

面向报文

  • UDP对应用程序交下来的报文,再添加首部后就向下交付IP层。UDP对应用层交下来的报文,既不合并,也不拆分,而是保留这些报文的边界。

无拥塞控制

  • UDP不进行拥塞控制,因此网络出现的拥塞不会使源主机的发送速率降低。这使得UDP适合那些对实时性要求高、允许一定数据丢失的应用。

支持多种交互通信

  • UDP支持一对一、一对多、多对一和多对多的交互通信。

首部开销小

  • UDP的首部只有8个字节,比TCP的首部小得多,这减少了网络开销。

4、UDP协议的数据传输流程

UDP协议是面向无连接的,即发送数据之前不需要建立连接(无TCP协议复杂的三次握手,四次挥手的过程),发送数据就是简单的把数据包封装一下,然后从网卡发出去,数据包之间并没有状态上的联系。UDP 协议基本上是 IP 协议与上层协议的接口,UDP协议使用IP层提供的服务将应用层得到的数据从一台主机的某个应用进程传递到另一台主机的某个应用进程。

举个例子:

当传输层从IP层收到UDP数据报文时,根据UDP数据报文首部中的目的端口,把UDP数据报文通过相应的端口传递给应用进程,如下图所示:

UDP协议的数据传输流程相对简单,主要包括两个步骤:

发送数据

  • 向目标地址和端口号发送需要传输的数据。

接收数据

  • 接收从源地址和源端口号发来的数据包。

5、UDP协议的应用场景

由于其高效性和实时性,UDP协议被广泛应用于多种业务场景,包括:

视频和音频流传输

  • 如视频会议、实时直播等。在这些应用中,数据的实时性至关重要,而轻微的数据丢失相对于传输延迟来说是可以接受的。

在线游戏

  • 尤其是实时多人在线游戏。UDP由于无需建立连接,且没有TCP的握手和断开过程的连接开销,因此能够快速处理海量数据包,非常适合用于实时游戏数据的传输。

DNS查询

  • 当我们在浏览器中输入一个网址时,计算机需要通过DNS查询将该网址转换为对应的IP地址。UDP协议能够在网络出现问题时快速检查DNS错误,确保网址的迅速解析。

网络广播

  • UDP支持广播功能,使得数据可以同时传输到多个客户端。这一特性在网络广播业务中具有显著优势,如校园广播、公司内部通知广播等场景。

实时通信应用

  • 如即时消息传递、VoIP(网络电话)等。这些应用要求数据传输速度快、延迟低,而UDP正好满足这些需求。

6、UDP协议的优缺点

优点

  • 传输效率高:由于UDP协议简单、首部开销小,因此传输效率高。

  • 实时性好:无需建立连接和进行复杂的握手过程,适合实时性要求高的应用。

缺点

  • 可靠性差:不保证数据的可靠传输,可能出现数据包丢失或损坏的情况。

  • 无拥塞控制:可能导致网络拥塞时数据包丢失严重。

7、TCP和UDP协议比较

TCP(传输控制协议)和UDP(用户数据报协议)是网络通信中两种常用的传输层协议,它们各自具有不同的特点和适用场景。

通过下方图解想必是非常生动形象的展示tdp和udp的区别了吧!

可靠性

  • TCP提供可靠的数据传输服务。它通过序列号、确认机制和重传机制来确保数据的完整性和有序性。如果数据在传输过程中出现丢失或错误,TCP会自动重传丢失的数据,保证数据的可靠传输。

  • UDP则不提供可靠的数据传输服务。它无连接、不保证可靠交付,因此主机不维持复杂的连接状态。UDP发送数据之后不会确认是否到达,也不会重传丢失的数据。因此,UDP更适用于一些对可靠性要求相对较低的应用场景,如音频和视频传输。

速度

  • 由于TCP需要确保数据的可靠传输,它需要额外的控制信息来维护连接状态和数据的传输控制。这使得TCP相对UDP更加复杂,在传输效率上稍低一些。

  • UDP没有连接建立和断开的开销,只需要很少的控制信息,因此传输速度较快。UDP适用于一些实时性要求较高的应用,如在线游戏和实时视频传输。

连接性

  • TCP是面向连接的协议。在数据发送和接收前,必须先建立连接,建立连接后才能发送数据。这种连接性使得TCP能够保证数据传输的可靠性。

  • UDP是无连接的协议。它可以直接发送数据,不需要先建立连接。这使得UDP的开销较小,并且发送数据的实时性较高。但缺点是无法保证数据传输的可靠性。

数据包大小

  • TCP在传输数据时,将数据分割成较小的数据块,并根据网络状况调整数据块的大小。这使得TCP可以适应不同网络环境下的数据传输。

  • UDP的数据包大小没有限制,它可以发送任何大小的数据。但在实际使用中,通常会将数据包大小限制在网络传输的最大MTU(最大传输单元)以内。

应用场景

  • TCP适用于需要可靠传输的场景,如文件传输、电子邮件发送等。在这些场景中,数据的完整性和有序性至关重要。

  • UDP适用于对实时性要求较高、对可靠性要求相对较低的场景,如在线游戏、实时视频传输等。在这些场景中,数据的传输速度更为重要,而数据的丢失或错误可能不会对应用产生严重影响。

TCP和UDP服务的是程序,但程序和人是一样的,可以你来我往进行交流,也可以一股脑的倾诉。

TCP就是彼此之间坦诚交流。消息有没有收到,收到的信息是否一致,都可以有及时的反馈。

        

UDP就是倾诉,我不管你有没有听进去,不管你有无反馈,我就要不停地说。

 

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

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

相关文章

学懂C语言(四):C语言数据类型

目录 一、数据类型分类 二、存储大小和值范围 三、类型转换 在 C 语言中,数据类型指的是用于声明不同类型的变量或函数的一个广泛的系统。变量的类型决定了变量存储占用的空间,以及如何解释存储的位模式。 一、数据类型分类 C 中的类型可分为以下几…

内六角螺丝外观检测有多严格?

沉头内六角螺丝是一种常见的螺丝类型,具有内部六角孔和沉头设计。这种螺丝通常需要使用内六角扳手或扳手来拧紧或松开。沉头设计让螺丝头部潜入被连接的物体表面,使其表面平整,不会凸起。 沉头设计使螺丝头部潜入物体表面,实现隐…

PAT甲级真题1042判断二叉搜索树

镜像后的树 样例是前序遍历,中序序列就是把前序序列sort一下,然后根据中序序列和前序序列构造一棵树,和树的遍历一样 前序序列:8 6 5 7 10 8 11 中序序列:5 6 7 8 8 10 11 镜像后的中序序列:11 10 8 8 7 6 5 ###在中序序列中有多个相同的根结点,取第一个 ###如果在中序序列中…

解决element-ui e-table表格中使用多选,当翻页时已选中的数据丢失

用element-ui中的table时&#xff0c;当有多选又有翻页功能时&#xff0c;点击翻页后之前选中的数据会丢失&#xff0c;怎么使表格具有记忆功能呢 element-ui API中有几个属性可以供我们完美解决这个问题 1.单元格的属性和方法&#xff1a; 2.表格的方法&#xff1a; <el-…

数据预处理在建模中的重要性与常见方法(二):数据变化篇

1. 数据标准化 数据标准化是将数据转换到同一量纲&#xff0c;以消除不同量纲之间的影响&#xff0c;使数据具有可比性。常见的标准化方法包括Min-Max标准化和Z-score标准化。 &#xff08;1&#xff09;Min-Max标准化 应用场景&#xff1a;适用于对特征范围有要求的模型&…

AI发展除了带来失业,还带来了不少副业兼职,一键无脑生成,月入1W+

前言 今天&#xff0c;我想和大家分享一下在当前经济下行、就业压力加大的背景下&#xff0c;个人如何利用AI技术开展副业&#xff0c;实现月入过万。 近年来&#xff0c;AI技术的发展虽然带来了不少就业岗位的流失&#xff0c;但同时也为我们提供了许多新的副业机会。今天我…

LNMP环境配置问题整理

首先是一键安装直接报错: 换教程:搭建LNMP,步骤最详细,附源码,学不会打我-CSDN博客 mysql安装成功之后: MySQL 启动报错:Job for mysqld.service failed because the control process exited with error code. 如果所有方法都试过之后卸载后重装可以快速解决: 参考…

matlab PID tuner整定工具箱的用法

从主页的APP中搜索到它&#xff1a; 按照下图IMPORT导入被控对象的传递函数 在下图的Inspect按钮中可以看到导入的被控对象的传函。 在下图的Type中选择控制器类型&#xff1a; 在下图的Form中选择PID的形式&#xff1a;有两种可选&#xff1a;平行式Parallel和标准式Standard …

【Vue3 ts】echars图表展示统计的月份数据

图片展示 此处内容为展示24年各个月份产品的创建数量。在后端统计24年各个月份产品数量后&#xff0c;以数组的格式发送给前端&#xff0c;前端负责展示。 后端 entity层&#xff1a; Data Schema(description "月份统计")public class MonthCount {private Stri…

SCSA第九天

DPI和DFI的对比 1&#xff0c;DFI仅对流量行为分析&#xff0c;只能对应用类型进行笼统的分类&#xff0c;无法做到精细的识别 2&#xff0c;如果流量进行加密的话&#xff0c;DPI可能在没有解密的情况无法进行识别&#xff0c;但是DFI不受影响 IPS&#xff08;入侵防御&…

HarmonyOS介绍

一、什么是HarmonyOS HarmonyOS是新一代的智能终端操作系统&#xff0c;为不同设备的智能化、互联与协同提供了统一的语言&#xff0c;为用户带来简捷、流畅、连续、安全可靠的全场景交互体验。 二、HarmonyOS的核心理念 1、一次开发 多端部署 指的是一个工程&#xf…

基于SpringBoot+Vue的广场舞团系统(带1w+文档)

基于SpringBootVue的广场舞团系统(带1w文档) 基于SpringBootVue的广场舞团系统(带1w文档) 广场舞团&#xff0c;为用户随时随地查看广场舞团信息提供了便捷的方法&#xff0c;更重要的是大大的简化了管理员管理广场舞团信息的方式方法&#xff0c;更提供了其他想要了解广场舞团…

Java多线程用法(附20道练习题)

目录 一、多线程的实现方式1. 继承Thread类2. 实现Runnable接口3. 实现Callable接口4. 三种方式的对比 二、多线程的常用的实现方法三、守护线程、礼让线程和插队线程1. 守护线程 thread.setDaemon(true)2. 礼让线程 Thread.yield()3. 插队线程 thread.join(); 四、Java中线程的…

Go 语言 UUID 库 google/uuid 源码解析:UUID version7 的实现

google/uuid 库地址 建议阅读内容 在阅读此篇文章之前&#xff0c;建议先了解 UUIDv1 的构成、UUIDv4 的 API 以及掌握位运算。 了解 UUIDv1 的构成可以参考Go 语言 UUID 库 google/uuid 源码解析&#xff1a;UUID version1 的实现 或 RFC 9562。 了解 UUIDv4 的 API 可以看…

husky 和 lint-staged 构建代码项目规范

目录 前言 最简单的方法 过 scripts 来解决如果检测工具多&#xff0c;需要多次处理 通过 husky(哈士奇)来解决容易遗忘的问题 1. 安装 2. husky init 3. 试一试​ lint-stadge 只 lint 改动的 1. 安装 2. 修改 package.json 配置 3. 添加 npm 脚本: 4.使用 Husky…

成为git砖家(1): author 和 committer 的区别

大家好&#xff0c;我是白鱼。一直对 git author 和 committer 不太了解&#xff0c; 今天通过 cherry-pick 的例子搞清楚了区别。 原理 例如我克隆了著名开源项目 spdlog 的源码&#xff0c; 根据某个历史 commit A 创建了分支&#xff0c; 然后 cherry-pick 了这个 commit …

卡片式组件封装demo

效果视频&#xff1a; 卡片组件 样式还得细调~&#xff0c;时间有限&#xff0c;主要记录一下逻辑。 html结构&#xff1a; 目录 父组件数据处理数据格式 父组件的全部代码 子组件数据处理props参数 样式部分三个圆点点击三圆点在对应位置显示查看弹框点击非内容部分隐藏查看…

第四章 自定义序列类

目录 5.1 序列类型的分类 容器序列 扁平序列 可变序列 不可变序列 5.2 序列的abc继承关系 5.3 序列的、和extend的区别 操作符 操作符 extend方法 5.4 实现可切片的对象 5.5 bisect管理可排序序列 深入解释 5.6 什么时候我们不该用列表 深入解释 5.7 列表推导式…

第十章 多线程、多进程和线程池编程

目录 11.1 多线程编程 什么是多线程&#xff1f; 创建和启动线程 线程同步 11.2 多进程编程 什么是多进程&#xff1f; 创建和启动进程 进程间通信 11.3 线程池和进程池 什么是线程池和进程池&#xff1f; 使用线程池 使用进程池 11.4 选择多线程还是多进程 适用…

vue3 vxe-grid修改currentPage,查询数据的时候,从第一页开始查询

1、当我们设置好VxeGrid.Options进行数据查询的时候,下面是可能的设置&#xff1a; const gridOptions reactive<BasicTableProps>({id: UserTable,showHeaderOverflow: false,showOverflow: true,keepSource: true,columns: userColumns,size: small,pagerConfig: {cur…