UDP基本了解

news2024/12/21 2:22:38

UDP基本了解

TCP、UDP区别

TCP(Transfer Control Protocol) UDP(User Datagram Protocol )

  • 连接:TCP是面向连接的传输协议,传输数据前需要先建立连接。而UDP不需要连接,即刻传输数据

  • 服务对象:TCP是一对一的两点服务,即一条连接只有两个端点,UDP支持一对一,一对多,多对多的交互通信

  • 可靠性:TCP是可靠交付数据,数据可以无差错,不丢失,不重复,按序到达。UDP则是尽最大努力交付。不保证可靠交付数据。但是我们可以基于UDP传输协议实现可靠的传输协议,如QUIC协议

  • 拥塞控制、流量控制:TCP有拥塞控制和流量控制来保证数据传输的安全性。UDP没有,即使网络变得拥挤也不影响UDP速率。

  • 首部开销:TCP首部较长,会有一定的开销,首部没有“选项”字段占20字节,有的话首部则会变长。而UDP只有8个字节,且长度固定不变开销小。

  • 传输方式:TCP是流式传输、没有边界、但保证顺序和可靠。UDP是一个包一个包的发送,是有边界的,但可能会丢失包和乱序。

详细来看

UDP(User Datagram Protocol)即用户数据报协议,是一种简单的传输层协议,与 TCP 协议相比,具有不同的特点和应用场景。

主要特点

  1. 无连接

    • UDP 在传输数据之前不需要建立连接,发送方直接将数据封装成 UDP 数据报发送给接收方。这使得 UDP 的通信过程更加简单和高效,减少了建立和释放连接的开销,例如延迟时间和资源消耗。

    • 但是这种无连接的特性也意味着 UDP 无法保证数据传输的顺序性和可靠性,数据报可能会丢失、重复或者乱序到达接收方。

  2. 不可靠传输

    • 由于 UDP 没有像 TCP 那样的确认、重传和流量控制机制,所以它不能保证数据一定能够被接收方正确接收。当数据报在网络传输过程中出现丢失、损坏或者被丢弃的情况时,UDP 不会自动进行重传。

    • 这种不可靠性在某些对实时性要求很高,但对数据完整性要求相对较低的场景下是可以接受的,甚至是更有利的,因为它可以减少因重传等机制带来的延迟。

  3. 面向报文

    • UDP 是面向报文的,它对应用层交下来的报文,既不合并,也不拆分,而是保留这些报文的边界。这意味着应用程序交给 UDP 多长的报文,UDP 就照样发送,即一次发送一个报文。

    • 接收方收到 UDP 数据报后,在将数据交付给应用层时,也会保持报文的边界不变。这与 TCP 面向字节流的特性形成对比,TCP 会将数据看作无结构的字节流进行处理。

  4. 高效性

    • UDP 协议头部短小,只有 8 个字节,相比 TCP 头部(通常至少 20 个字节)开销更小。在数据传输过程中,UDP 不需要进行复杂的连接建立、维护和拆除操作,也没有像 TCP 那样的拥塞控制和流量控制机制,这使得 UDP 在发送数据时更加高效,能够快速地将数据发送出去。

    • 这种高效性使得 UDP 适合于那些对传输速度要求极高,对数据准确性要求相对较低的应用场景。

UDP 报文格式

UDP 报文由首部和数据两部分组成,首部格式比较简单,只有 8 个字节,具体如下:

源端口(16 位)目的端口(16 位)
长度(16 位)校验和(16 位)

其中,源端口和目的端口用于标识发送方和接收方的应用程序;长度字段表示 UDP 数据报的总长度,包括首部和数据部分;校验和字段用于检验数据在传输过程中是否出现错误,是可选字段,当不计算校验和时,该字段置为 0。

工作原理

  1. 数据封装

    • 发送方的应用程序将数据交给 UDP 层后,UDP 会将数据封装成 UDP 数据报。它会在数据报的首部添加源端口、目的端口、长度和校验和等信息,然后将整个数据报交给网络层进行传输。

  2. 数据传输

    • 网络层将 UDP 数据报封装成 IP 数据报(因为 UDP 是基于 IP 协议的),并通过网络发送给接收方。在网络传输过程中,数据报可能会经过多个路由器和网络链路,由于 UDP 没有对传输路径进行控制和保证,数据报可能会在传输过程中出现丢失、延迟或者乱序等情况。

  3. 数据接收与交付

    • 接收方的网络层收到 IP 数据报后,会将其解封装,把 UDP 数据报交给 UDP 层。UDP 层会检查数据报的目的端口是否与本地应用程序的端口匹配,如果匹配,则将数据报的数据部分交付给相应的应用程序。如果数据报在传输过程中出现错误(例如校验和不匹配),UDP 通常会直接丢弃该数据报,而不会通知发送方。

应用场景

  1. 实时视频和音频传输

    • 例如在线视频直播、IP 电话等应用。这些应用对实时性要求非常高,少量的数据丢失或者错误对于用户体验的影响相对较小,而延迟是更需要关注的问题。UDP 可以快速地将音频和视频数据发送出去,减少因为重传等机制导致的延迟,保证实时性。

  2. 网络游戏

    • 许多网络游戏需要快速地在客户端和服务器之间传递玩家的操作指令和游戏状态信息。虽然数据的准确性也很重要,但在一定程度上可以接受少量数据的丢失或者错误,因为游戏通常会有自己的机制来处理这些情况(例如预测和补偿机制)。UDP 的高效性可以保证游戏的流畅性和实时响应。

  3. 简单的查询 - 响应系统

    • 如 DNS(域名系统)查询。当客户端向 DNS 服务器发送域名查询请求时,请求的数据量通常较小,而且一次查询如果失败,可以很快进行下一次查询。UDP 的无连接和高效特性使得它适合用于这种简单的查询 - 响应场景,能够快速地获取查询结果。

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

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

相关文章

java全栈day19--Web后端实战(java操作数据库3)

一、MyBatis 1.1介绍 前提引入: controller(控制层)作用:接受请求,响应数据 service(业务层)作用:负责具体的逻辑处理 dao(持久层)作用:数据访问层 一般的访问流程:浏览器发起请求过来,先…

以太网帧、IP数据报图解

注:本文为 “以太网帧、IP数据报”图解相关文章合辑。 未整理去重。 以太网帧、IP数据报的图解格式(包含相关例题讲解) Rebecca.Yan已于 2023-05-27 14:13:19 修改 一、基础知识 UDP 段、IP 数据包,以太网帧图示 通信过程中&…

Android Vendor Overlay机制

背景介绍: 看Android 15版本更新时,"Android 15 deprecates vendor overlay"。 猜想这个vendor overlay是之前用过的settings overlay, 不过具体是怎么回事呢? 目录 Vendor Overlay介绍 Vendor Overlay工作原理 Ven…

联发科MTK8788_MT8788安卓核心板安兔兔跑分_安卓主板方案商

MT8788安卓核心板具有集成的蓝牙、fm、WLAN和gps模块,是一个高度集成的基带平台,包括调制解调器和应用处理子系统,启用LTE/LTE-A和C2K智能设备应用程序。该芯片集成了工作在2.0GHz的ARM Cortex-A73、最高可达2.0GHz的ARM Cortex-A53和功能强大…

uniapp连接蓝牙操作(蓝牙设备地锁)

介绍: 本文采用uni-app框架来创建一个简单的用户界面,用于搜索、连接和发送命令给蓝牙设备。 1.打开蓝牙适配器 function openBluetooth() {uni.openBluetoothAdapter({success() {uni.offBluetoothDeviceFound();// 监听新设备发现事件uni.onBlueto…

谁说C比C++快?

看到这个问题,我我得说:这事儿没有那么简单。 1. 先把最大的误区打破 "C永远比C快" —— 某位1990年代的程序员 这种说法就像"自行车永远比汽车省油"一样荒谬。我们来看个例子: // C风格 char* str (char*)malloc(100…

宝塔SSL证书申请失败,报错:申请SSL证书错误 module ‘OpenSSL.crypto‘ has no attribute ‘sign‘(已解决)

刚安装宝塔申请SSL就报错:申请SSL证书错误 module OpenSSL.crypto has no attribute sign 面板、插件版本:9.2.0 系统版本:Alibaba Cloud Linux 3.2104 LTS 问题:申请SSL证书错误 module OpenSSL.crypto has no attribute sign…

华为OD-计算正方形数量

华为OD-计算正方形数量 题目解题思路源码实现 题目 解题思路 由于是构成正方形 再结合用例1 很容易直接写出第一行代码 const pointCount await readline();if (pointCount < 4) {console.log(0);return;}然后就是典型的数学题,什么才能构成正方形(这题题主不会,看了解析之…

使用 rvest 包快速抓取网页数据:从入门到精通

介绍 随着大数据和数据科学的迅速发展&#xff0c;互联网数据的抓取已经成为重要的信息获取手段之一。网页抓取&#xff08;Web Scraping&#xff09;可以帮助我们自动化地从网页中提取有价值的数据&#xff0c;应用广泛&#xff0c;包括新闻热点分析、金融数据采集等。在本篇…

【机器学习】【集成学习——决策树、随机森林】从零起步:掌握决策树、随机森林与GBDT的机器学习之旅

这里写目录标题 一、引言机器学习中集成学习的重要性 二、决策树 (Decision Tree)2.1 基本概念2.2 组成元素2.3 工作原理分裂准则 2.4 决策树的构建过程2.5 决策树的优缺点&#xff08;1&#xff09;决策树的优点&#xff08;2&#xff09;决策树的缺点&#xff08;3&#xff0…

【Rust自学】4.2. 所有权规则、内存与分配

4.2.0 写在正文之前 在学习了Rust的通用编程概念后&#xff0c;就来到了整个Rust的重中之重——所有权&#xff0c;它跟其他语言都不太一样&#xff0c;很多初学者觉得学起来很难。这个章节就旨在让初学者能够完全掌握这个特性。 本章有三小节&#xff1a; 所有权&#xff1…

Mamba安装环境和使用,anaconda环境打包

什么是mamba Mamba是一个极速版本的conda&#xff0c;它是conda的C重新实现&#xff0c;使用多线程并行处理来加速包和依赖项的下载。 Mamba旨在提高安装、更新和卸载Python包的速度&#xff0c;同时保持与conda相同的兼容性和命令行接口。 Mamba的核心部分使用C实现&#xff…

Vue前端开发-数据缓存

完成全局性的axios实例对象配置后&#xff0c;则可以在任意一个组件中直接调用这个对象&#xff0c;发送异步请求&#xff0c;获取服务端返回的数据&#xff0c;同时&#xff0c;针对那些不经常变化的数据&#xff0c;可以在请求过程中&#xff0c;进行数据缓存&#xff0c;并根…

Composer指定php版本执行(windows)

✔️指定php版本执行&#xff08;windows&#xff09; 正常用法如下 /usr/bin/php7.1 /usr/local/bin/composer require xxxx 通过alias 简化指定PHP版本的路径 alias .php7_composer‘/d/application/phpstudy_pro/Extensions/php/php7.3.4nts/php /d/application/phpstudy_pr…

搭建私有链

文章目录 1. 准备工作2. 创建创世区块配置文件2.1 创建数据目录2.2 创建创世区块配置文件1. “config”部分2. “alloc”部分3. “coinbase”4. “difficulty”5. “extraData”6. “gasLimit”7. “nonce”8. “mixhash”9. “parentHash”10. “timestamp” 3. 初始化&#x…

游戏AI实现-寻路算法(BFS)

广度优先搜索算法&#xff08;英语&#xff1a;Breadth-first search&#xff0c;缩写&#xff1a;BFS&#xff09;&#xff0c;又译作宽度优先搜索&#xff0c;或横向优先搜索&#xff0c;是一种图形搜索算法。 寻路地图搭建&#xff1a; 游戏AI实现-寻路地图搭建-CSDN博客 …

k-均值聚类(k-Means Clustering)详解

✅作者简介&#xff1a;2022年博客新星 第八。热爱国学的Java后端开发者&#xff0c;修心和技术同步精进。 &#x1f34e;个人主页&#xff1a;Java Fans的博客 &#x1f34a;个人信条&#xff1a;不迁怒&#xff0c;不贰过。小知识&#xff0c;大智慧。 &#x1f49e;当前专栏…

复合机器人为生产提供精准的建议和决策支持

在现代化生产的浪潮中&#xff0c;智能复合机器人以其卓越的性能和高度智能化特点&#xff0c;正成为保障生产安全与可靠性的重要力量。 智能复合机器人具备精确的感知、判断和决策能力&#xff0c;能够在复杂的生产环境中自主导航、精确操作&#xff0c;避免了人为因素可能导致…

AI前沿分析:Github Copilot 推出免费版本,AI + 编程更高效!

名人说&#xff1a;莫听穿林打叶声&#xff0c;何妨吟啸且徐行。—— 苏轼 Code_流苏(CSDN)&#xff08;一个喜欢古诗词和编程的Coder&#x1f60a;&#xff09; 目录 一、GitHub Copilot&#xff1a;AI编程的“革命性”助力二、免费版本上线&#xff1a;AI编程的普及时代&…

git使用教程(超详细)-透彻理解git

一.核心基础 核心概念有六个 首先请把与svn有关的一切概念暂时从你的脑海中移除掉&#xff0c;我们要重新认识本文所讲述的所有概念。这非常重要。 1.worktree worktree是一个目录&#xff0c;你在这里对文件进行增加、删除、修改。也就是我们常说的工作区。在git中worktree…