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

深入浅出:你需要了解的用户数据报协议(UDP)

文章目录

      • **UDP概述**
        • **1. 无连接性**
        • **2. 尽最大努力交付**
        • **3. 面向报文**
        • **4. 多种交互通信支持**
        • **5. 较少的首部开销**
      • **UDP报文的首部格式**
        • **详细解释每个字段**
      • **UDP的多路分用模型**
        • **多路分用的实际应用**
      • **检验和的计算方法**
        • **伪首部的详细内容**
        • **检验和计算步骤**
      • **实际应用中的UDP**
        • **1. 实时视频流**
        • **2. 在线游戏**
        • **3. 物联网(IoT)**
      • **UDP的局限性**
      • **如何提高UDP的可靠性**
      • **总结**

用户数据报协议(UDP)是互联网协议套件中的一种协议,它在IP层之上增加了一些有限的功能,如端口功能和差错检测功能。虽然UDP用户数据报只能提供不可靠的交付,但它在某些方面有其特殊的优点。本文将带你深入了解UDP的基本概念、优点、报文结构以及多路分用模型。无论你是网络新手还是想要巩固基础知识,这篇文章都能让你对UDP有一个清晰的认识。

UDP概述

1. 无连接性

UDP是无连接的,即发送数据之前不需要建立连接,这样可以减少开销和发送数据之前的时延。这一特性使得UDP相比于其他协议(如TCP)更加轻量级和高效。举个例子,当你在进行视频通话时,你不希望每次发送数据都需要先建立一个连接,这样会增加延迟,影响通话质量。

2. 尽最大努力交付

UDP使用尽最大努力交付,即不保证可靠交付,同时也不使用流量控制和拥塞控制。因此,主机不需要维持复杂的连接状态表。这对于某些应用来说非常重要,例如实时应用(如IP电话、实时视频会议等) ,这些应用要求以恒定速率发送数据,并且允许在网络发生拥塞时丢失一些数据。比如在IP电话中,一些数据包的丢失并不会显著影响通话质量,但延迟的增加却会。

3. 面向报文

UDP是面向报文的,也就是说,应用程序交给UDP一个报文,UDP就发送这个报文;而UDP收到一个报文,就把它交付应用程序。应用程序需要选择合适大小的报文,以避免在IP层传输时效率降低。举个例子,如果你发送的报文太长,IP层在传送时可能要进行分片,这会降低效率;如果报文太短,IP数据报的首部相对太大,也会降低效率。

4. 多种交互通信支持

UDP支持多种交互通信模式,包括一对一、一对多、多对一和多对多的交互通信,使其在多种场景下都能灵活应用。例如,在多人视频会议中,UDP可以支持多个用户同时发送和接收数据,从而实现高效的多方通信。

5. 较少的首部开销

UDP首部只有8字节的开销,相比于TCP的20字节首部,这大大减少了数据传输的负担。对于需要频繁发送小数据包的应用,如在线游戏,这种减少开销的特性尤其重要。

UDP报文的首部格式

UDP用户数据报由两个部分组成:数据部分和首部。首部非常简单,只有8字节,由四个字段组成,每个字段都是2字节。这些字段包括源端口、目的端口、长度和检验和。

  • 源端口:标识发送方的端口号。
  • 目的端口:标识接收方的端口号。
  • 长度:UDP用户数据报的总长度。
  • 检验和:用于差错检测,防止数据报在传输中出错。
详细解释每个字段
  1. 源端口:这是发送方的端口号,用于标识数据报的发送来源。例如,在一场在线游戏中,游戏服务器的端口号就是源端口。
  2. 目的端口:这是接收方的端口号,用于标识数据报的接收目的地。例如,在同一场在线游戏中,玩家的端口号就是目的端口。
  3. 长度:这是UDP用户数据报的总长度,包括首部和数据部分。这个字段确保接收方知道接收到的数据报的确切大小。
  4. 检验和:这是一个差错检测码,用于验证数据报在传输过程中是否出错。如果检验和验证失败,数据报将被丢弃。

UDP的多路分用模型

UDP的多路分用模型如图所示。一个UDP端口与一个报文队列(缓存)关联,UDP根据目的端口号将到达的报文加到对应的队列中。应用进程根据需要从端口对应的队列中读取整个报文。需要注意的是,端口队列中的所有报文的目的IP地址和目的端口号相同,但源IP地址和源端口号可能不同。

多路分用的实际应用

在一个视频流应用中,不同的视频源(比如多个摄像头)可能发送数据到同一个服务器端口。服务器通过端口号将数据分配到不同的队列,然后应用程序从这些队列中读取数据进行处理。这样可以确保数据的有序和准确交付。

检验和的计算方法

UDP报文首部中的检验和计算方法有些特殊。在计算检验和时,要在UDP用户数据报之前增加12字节的伪首部。伪首部并不是UDP用户数据报真正的首部,仅在计算检验和时临时使用。通过这种方法,可以防止报文被意外地交付到错误的目的地。

伪首部的详细内容

伪首部包括以下字段:

  1. 源IP地址:发送方的IP地址。
  2. 目的IP地址:接收方的IP地址。
  3. 全零字段:用于填充。
  4. 协议字段:表示使用的协议类型,对于UDP,该值为17。
  5. UDP长度:UDP用户数据报的总长度。
检验和计算步骤
  1. 发送方先将检验和字段置为全零。
  2. 将伪首部及UDP用户数据报看作由多个16位的字串组成。
  3. 如果UDP用户数据报的数据部分不是偶数个字节,则填入一个全零字节(但此字节不发送)。
  4. 按二进制反码计算这些16位字串的和。
  5. 将此和的二进制反码写入检验和字段。
  6. 发送这样的UDP用户数据报。

接收方会将收到的UDP用户数据报和伪首部(以及可能的填充全零字节)放在一起,再按二进制反码求这些16位字的和。当无差错时其结果应为全1,否则表明有差错出现,接收方就应丢弃该数据报(也可以上交应用层,附上出现差错的警告)。

实际应用中的UDP

1. 实时视频流

在实时视频流应用中,如YouTube直播或Twitch,UDP的低延迟特性尤为重要。实时视频流要求数据快速传输,即使丢失少量数据也不会显著影响用户体验。UDP可以在网络拥塞时迅速恢复,而无需等待重传确认。

2. 在线游戏

在线游戏同样依赖UDP的快速传输和低延迟特性。在多人在线游戏中,玩家的动作需要实时同步,即使丢失少量数据包,也不应影响游戏的流畅性。UDP能确保游戏中的数据传输迅速而无阻碍。

3. 物联网(IoT)

在物联网设备之间的通信中,UDP也被广泛使用。许多物联网设备需要定期发送状态更新或数据,这些数据通常很小且对延迟敏感。UDP的低开销和快速传输特性使其成为物联网通信的理想选择。

UDP的局限性

虽然UDP在许多应用中表现出色,但它也有一些局限性。由于缺乏流量控制和拥塞控制,网络拥塞时可能会导致数据丢失。此外,UDP不保证数据包的顺序和完整性,因此在需要高度可靠的应用中,TCP可能是更好的选择。

如何提高UDP的可靠性

尽管UDP本身不提供可靠性保证,但应用层可以通过一些手段来提高其可靠性。例如,前向纠错(FEC)和重传机制可以在不影响实时性的情况下减少数据丢失。应用进程可以在发送数据时加入冗余信息,接收方可以利用这些冗余信息来纠正错误或重建丢失的数据。

总结

UDP作为一种无连接的传输层协议,虽然不保证可靠交付,但在实时应用和要求低延迟的场景中具有明显优势。理解UDP的工作原理和优点有助于在实际应用中更好地选择合适的传输协议。希望通过本文,你对UDP有了更深入的了解,并能在未来的网络应用中灵活运用UDP。


以上就是对UDP的全面解析,希望这篇文章能够帮助你更好地理解和掌握用户数据报协议。无论是理论学习还是实际应用,掌握这些基础知识都是非常重要的。如果你有任何疑问或需要进一步了解的内容,欢迎在评论区留言,我们一起讨论交流!

图文来源:《计算机网络教程》第六版微课版

相关文章:

深入浅出:你需要了解的用户数据报协议(UDP)

文章目录 **UDP概述****1. 无连接性****2. 尽最大努力交付****3. 面向报文****4. 多种交互通信支持****5. 较少的首部开销** **UDP报文的首部格式****详细解释每个字段** **UDP的多路分用模型****多路分用的实际应用** **检验和的计算方法****伪首部的详细内容****检验和计算步…...

C++的Magic Static

什么是“Magic Static”? C 中,函数内部的静态变量只会在第一次执行该函数时被初始化,而且这种初始化在 C11 标准之后是线程安全的。这意味着即使多个线程同时第一次调用该函数,静态变量也只会被初始化一次,并且在初始…...

vscode添加宏定义

1 起因 在用vscode看项目代码时,如果源文件中的代码块被某个宏定义给包裹住了,则在vscode的默认配置下,不会高亮显示这块被包裹住的代码,如下图中229行开始的代码被STM32F40_41xxx所控制,没有高亮显示。 由于STM32F4…...

Postman接口关联

接口关联 接口之间存在依赖关系,接口B要依赖于接口A的返回值。 例如:现在有两个接口,接口1:获取接口统一鉴权码token接口,接口2:创建标签接口。接口2里的请求参数需要依赖接口1返回的值,即需要…...

用Python制作开心消消乐游戏|附源码

制作一个完整的“开心消消乐”风格的游戏在Python中是一个相对复杂的项目,因为它涉及到图形界面、游戏逻辑、动画效果以及用户交互等多个方面。不过,我可以为你提供一个简化的版本和概念框架,帮助你理解如何开始这个项目,并提供一…...

ArcGIS10.8 安装教程

目录 一、环境及安装包准备 二、安装流程 1、解压安装包ArcGIS_108.rar 2、安装 三、汉化 四、激活 五、自定义菜单(可选) 六、打开软件按查看 七、安装过程中出现的报错 八、其他 一、环境及安装包准备 安装环境:win7 安装包下载…...

2024网络安全学习路线,最全保姆级教程,学完直接拿捏!

关键词: 网络安全入门、渗透测试学习、零基础学安全、网络安全学习路线 首先咱们聊聊,学习网络安全方向通常会有哪些问题 前排提示:文末有CSDN独家网络安全资料包! 1、打基础时间太长 学基础花费很长时间,光语言都有…...

Apache Doris 中Compaction问题分析和典型案例

说明 此文档主要说明一些常见compaction问题的排查思路和临时处理手段。这些问题包括 Compaction socre高Compaction失败compaction占用资源多Compaction core 如果问题紧急,可联系社区同学处理 如果阅读中有问题,可以反馈给社区同学。 1 compaction …...

redis面试(十七)MultiLock加锁和释放锁

MultiLock MultiLock,英语直译为多个锁。 redisson分布式锁中的MultiLock这个机制,可以将多个锁合并为一个大锁,对一个大锁进行统一的申请加锁以及释放锁 一次性锁定多个资源,再去处理一些事情,然后事后一次性释放所…...

电脑开机LOGO修改教程_BIOS启动图片替换方法

准备工具:刷BIOS神器和change logo,打包下载地址:https://download.csdn.net/download/baiseled/89374686 一.打开刷BIOS神器,点击备份BIOS,保存到桌面 二.打开change logo,1.点击load image,选…...

微前端架构的持续集成与持续部署实践

在软件开发中,持续集成(Continuous Integration, CI)和持续部署(Continuous Deployment, CD)是实现高效、自动化软件交付的关键实践。微前端架构通过将应用拆分为多个自治的子应用,带来了开发和部署上的灵活…...

【STM32 FreeRTOS】事件标志组

事件标志组简介 事件标志组:用一个比特位来表示事件是否发生 事件标志组是一组事件标志位的集合,可以简单理解为事件标志组就是一个整数。 事件标志组的特点: 它的每一位表示一个事件(高八位不算)每一位事件的含义…...

【启动centos报错】另一个程序已锁定文件的一部分,进程无法访问,打不开磁盘.

启动centos报错 另一个程序已锁定文件的一部分,进程无法访问打不开磁盘“D:\Program2\CentOS\CentOS7\CentOS7.vmdk”或它所依赖的某个快照磁盘。模块“Disk”启动失败。未能启动虚拟机。解决方法 删除.lck文件...

基于YOLOv8-pose的手部关键点检测(3)- 实现实时手部关键点检测

目录 前言 1.扩大检测框区域 2.先检测手部,后检测手部关键点 3.正面视角检测 4.侧面视角检测 5.摄像头视角检测 6.遮挡视角检测 7.结论 前言 使用YOLOv8-m对图像进行手部检测,然后扩大检测框区域,并对该区域使用YOLOv8-s-pose使用关键…...

kylin系统永久关闭iptables

1 关闭iptables, 并且相关规则写入文件firewall.rules sudo iptables-save > /root/firewall.rules iptables -X iptables -t nat -F iptables -t nat -X iptables -t mangle -F iptables -t mangle -X iptables -P INPUT ACCEPT iptables -P FORWARD ACCEPT iptables -P …...

写一个githubDemo

1.List组件 <template><div class"container"><!-- 展示用户列表 --><div class"row"><divv-show"info.users.length"v-for"(item, index) in info.users":key"item.id"><div class"…...

java入门-成员内部类和静态内部类的访问

&#xff08;一&#xff09;成员内部类 package InnerClass;import javax.print.attribute.standard.MediaSize;public class Outer {//2外部类中的成员private int age99;public static String a;public class Inner{//普通的成员内部类//1.1成员变量public String name;priva…...

ansible【自动化配置】(thirty day)

回顾 1、mysql和python &#xff08;1&#xff09;不需要执行mysql_ssl_rsa_setup &#xff08;2&#xff09;Change_master_to.不需要get public key 2、可以使用pymysql非交互的管理mysql &#xff08;1&#xff09;connpymysql.connect(host,user,password,database,prot) …...

GitOps Tekton+ArgoCD

GitOps 提供了一种基于 Git 的操作理念&#xff0c;而 Tekton 和 ArgoCD 分别作为 CI/CD 工具&#xff0c;共同实现了这一理念在 Kubernetes 集群中的应用 k8s只是jenkins 流水线中的一环&#xff0c;但是在tekton中&#xff0c;k8s是基础设施 工作流程&#xff1a; 代码提交…...

uniapp用户列表页面渲染、增删改查逻辑

<template><view class="container">...

力扣高频SQL 50题(基础版)第四十七题之1321.餐馆营业额变化增长

力扣高频SQL 50题&#xff08;基础版&#xff09;第四十七题 1321.餐馆营业额变化增长 题目说明 表: Customer ---------------------- | Column Name | Type | ---------------------- | customer_id | int | | name | varchar | | visited_on | date | | amount | …...

django中的MESSAGE组件

文章目录 message组件1 使用配置2 设置值3 读取值4 源码分析 message组件 1 使用配置 INSTALLED_APPS [# django.contrib.admin,# django.contrib.auth,# django.contrib.contenttypes,# django.contrib.sessions,django.contrib.messages,django.contrib.staticfiles,"…...

【JavaSE】解读Java中的toString方法

前言&#xff1a; 在Java中&#xff0c;toString方法来自java.lang.Object 类&#xff0c;然后所有对象都继承该Object 类。默认情况下&#xff0c;它的作用是返回对象的字符串表示形式。在实际开发中&#xff0c;重写 toString() 方法可以帮助我们以更易读的形式输出对象信息&…...

软件工程的核心原则:KISS, DRY, SOLID, YAGNI

软件工程的核心原则&#xff1a;KISS, DRY, SOLID, YAGNI — 深入解析与实践指南 引言 在软件开发的广阔领域中&#xff0c;原则和实践是构建高质量、可维护系统的基石。本文将深入探讨四个核心原则&#xff1a;KISS&#xff08;保持简单&#xff0c;愚蠢&#xff09;、DRY&a…...

Android 高通7.1系开机动画自动跟随系统方向旋转

本篇博客是记录自己解决开机动画与系统方向不一致方案代码&#xff0c;思路&#xff1a;在系统参数根目录自定义persist.sys.hwrotationxrd0来作为动画方向&#xff0c;当修改系统方向时同时修改这个参数&#xff0c;当系统启动加载动画时在根据这个来旋转动画方式以保证动画方…...

Sentinel入门与进阶:微服务流量控制的最佳实践 ( 三 )

5.配置持久化 目前的sentinel&#xff0c;无法满足我们生产环境的需求&#xff0c;因为一旦sentinel-dashboard发生重启&#xff0c;限流规则也会随之丢失。 sentinel规则的持久化: Sentinel自身就支持了多种不同的数据源来持久化规则配置&#xff0c;比如文件配置&#xff0…...

2021年上半年网络工程师考试上午真题

2021年上半年网络工程师考试上午真题 网络工程师历年真题含答案与解析 第 1 题 以下关于RISC和CISC计算机的叙述中&#xff0c;正确的是&#xff08; &#xff09;。 (A) RISC不采用流水线技术&#xff0c;CISC采用流水线技术(B) RISC使用复杂的指令&#xff0c;CISC使用简…...

SQL触发器的级联魔力:数据完整性的守护者

标题&#xff1a;SQL触发器的级联魔力&#xff1a;数据完整性的守护者 在SQL的丰富世界中&#xff0c;触发器&#xff08;Trigger&#xff09;是一种特殊的存储过程&#xff0c;它能够自动执行响应数据库中的数据修改事件。而级联操作&#xff08;Cascade&#xff09;则是触发…...

ARCGIS PRO 要素标注背景色透明度的设置

使用ArcGIS Pro 设置标注背景色的透明度 一、点击标注属性 二、点击符号、注释 三、下拉框选择背景 四、背景符号 五、点击颜色 六、编辑颜色 七、应用...

探讨MySQL中 “约束“ 下的查询

目录&#xff1a; 一. 数据库约束 二. 表的设计 三. 聚合查询 四.联合查询 一. 数据库约束&#xff1a; 1.约束类型汇总&#xff1a; 约束类型 说明 NULL约束使用NOT NULL指定列不为 空UNIQUE唯一约束指定列为唯一的、不重复的DEFAULT默认值约 …...

Nuxt3【布局】layouts 详解

Nuxt 内置布局框架&#xff0c;用法如下&#xff1a; 修改 app.vue <template><NuxtLayout><NuxtPage /></NuxtLayout> </template>NuxtLayout 为 Nuxt 的内置组件&#xff0c;默认加载 layouts/default.vue &#xff0c;若页面中指定了布局&…...

获取数据源(多种方式爬虫介绍)

获取不同类型的数据源&#xff1a; 对于看上的网站如何获取其信息&#xff1a; 1.分析原网站是如何获取到这些数据的&#xff1f;哪个接口&#xff1f;哪些参数&#xff1f; 2.用程序去调用接口&#xff08;python/java都可以&#xff09; 3.处理一些数据&#xff0c;优化数…...

Linux下FTP服务器搭建配置:vsftpd的安装与配置实验

文章目录 vsftpd的安装与配置指南1. vsftpd的安装2. vsftpd配置详解3. 匿名访问测试4. 本地用户访问FTP的配置5. 修改匿名用户和本地用户的默认根目录6. 黑名单与白名单的使用7. 使用Windows文件资源管理器登录8. 拓展FTP的使用场景9. 注意事项 vsftpd的安装与配置指南 本文详…...

使用Java调用Apache commons-text求解字符串相似性实战

目录 前言 一、字符串距离的几种计算方法 1、Levenshtein 距离 2、Overlap Coefficient计算 3、Q-gram Matching 4、余弦相似性计算 二、基于余弦相似性的基地名称对比 1、加载百科中的基地信息列表 2、设置忽略词列表 3、将数据库地名和Excel进行对比 三、总结 前言…...

http request-01-XMLHttpRequest XHR 简单介绍

http 请求系列 http request-01-XMLHttpRequest XHR 简单介绍 http request-01-XMLHttpRequest XHR 标准 Ajax 详解-01-AJAX&#xff08;Asynchronous JavaScript and XML&#xff09;入门介绍 Ajax XHR 的替代方案-fetch Ajax XHR 的替代方案-fetch 标准 Ajax 的替代方案…...

关于tresos Studio(EB)的MCAL配置之DIO

General Dio Development Error Detect开发者错误检测 Dio Flip Channel Api翻转通道电平接口Dio_FlipChannel是否启用 Dio Version Info Api决定Dio_GetVersionInfo接口是否启用&#xff0c;一般打开就行。 Dio Reverse Port Bits让端口的位&#xff08;通道&#xff09;进…...

【漫谈C语言和嵌入式003】1394总线

1394总线&#xff08;FireWire或IEEE 1394&#xff09;是一种高速串行总线标准&#xff0c;最初由苹果公司开发&#xff0c;并在1995年被IEEE&#xff08;电气与电子工程师协会&#xff09;批准为国际标准。它最初的目标是提供一种高性能、低延迟的数据传输方法&#xff0c;用于…...

python爬虫爬取某图书网页实例

文章目录 导入相应的库正确地设置代码的基础部分设置循环遍历遍历URL保存图片和文档全部代码即详细注释 下面是通过requests库来对ajax页面进行爬取的案例&#xff0c;与正常页面不同&#xff0c;这里我们获取url的方式也会不同&#xff0c;这里我们通过爬取一个简单的ajax小说…...

Linux 用户管理的基本概念、常用工具及操作流程

&#x1f600;前言 本篇博文是关于Linux 中用户管理的基本概念、常用工具及操作流程&#xff0c;并提供了一些实用的示例和注意事项。希望这些内容能帮助读者在日常工作中更加高效地管理 Linux 系统的用户账户&#xff0c;希望你能够喜欢&#x1f970; &#x1f3e0;个人主页&a…...

手撕C++入门基础

1.C介绍 C课程包括&#xff1a;C语法、STL、高阶数据结构 C参考文档&#xff1a;Reference - C Reference C 参考手册 - cppreference.com cppreference.com C兼容之前学习的C语言 2.C的第一个程序 打印hello world #define _CRT_SECURE_NO_WARNINGS 1 // test.cpp // …...

NPM版本控制策略:实现版本候选行为的指南

引言 在现代JavaScript项目中&#xff0c;依赖管理是确保应用稳定性和安全性的关键环节。NPM&#xff08;Node Package Manager&#xff09;作为Node.js的包管理器&#xff0c;提供了一套灵活的版本控制机制&#xff0c;允许开发者精确控制依赖包的版本。版本候选行为&#xf…...

问题集锦6

1.外调外围接口数据库没有变化 我已经修改完发到线上&#xff0c;看调用用代码释放更新了 or 自己掉测试环境试下 handledList 2.list每次写入最前面 List<Integer> snew ArrayList<>();s.add(1);s.add(2);s.add(0,0);System.out.println(s);3.集合 List<Inte…...

【研发日记】嵌入式处理器技能解锁(四)——TI C2000 DSP的Memory

文章目录 前言 背景介绍 Memory映射 RAM ROM 外设Register Memory分配 应用实例 总结 参考资料 前言 见《【研发日记】嵌入式处理器技能解锁(一)——多任务异步执行调度的三种方法》 见《【研发日记】嵌入式处理器技能解锁(二)——TI C2000 DSP的SCI(串口)通信》 见《…...

Ubuntu离线安装docker

查看操作系统版本&#xff1a; rootzyh-VMware-Virtual-Platform:~/install# lsb_release -a No LSB modules are available. Distributor ID: Ubuntu Description: Ubuntu 24.04 LTS Release: 24.04 Codename: noble rootzyh-VMware-Virtual-Platform:~/install#…...

【抓耳挠腮,还是升职加薪,一起来画架构图!】

1. 焦头烂额 最近又遇到个焦头烂额的事情 &#xff0c;老板有了新想法&#xff0c;业务有所转向&#xff0c;需要新的方案设计 &#xff0c;架构设计&#xff0c;以进行后续实施。很快&#xff0c;第一次汇报来了&#xff0c; 由于前期准备时间短&#xff0c;模块拆分不清晰&a…...

算法的学习笔记—合并两个排序的链表(牛客JZ25)

&#x1f600;前言 在算法面试中&#xff0c;链表问题是经常遇到的考点之一&#xff0c;其中合并两个排序链表是一个非常经典的问题。本文将详细介绍如何通过递归和迭代两种方式实现两个有序链表的合并。 &#x1f3e0;个人主页&#xff1a;尘觉主页 文章目录 &#x1f600;合并…...

《虚拟之旅:开启无限可能的机器世界》简介:

1.Ubonto的介绍&#xff1a; Ubuntu 是一个流行的开源操作系统&#xff0c;基于 Linux 内核。 它具有以下一些特点和优势&#xff1a; 开源免费&#xff1a;任何人都可以免费使用、修改和分发。丰富的软件库&#xff1a;通过软件包管理器可以方便地安装各种应用程序。良好的…...

centos7 服务器搭建

1. 查看 centos 版本 cat /etc/redhat-release CentOS Linux release 7.9.2009 (Core)2 .查看 ip地址 ip addr sudo yum install net-tools -y 3. 是否能够上网 ping www.baidu.com ping 114.114.114.114 sudo systemctl restart network 4. DNS 更新DNS配置 编辑/etc/r…...

【Godot4自学手册】第四十五节用着色器(shader)制作水中效果

本节内容&#xff0c;主要学习利用着色器制作水波纹效果&#xff0c;效果如下&#xff1a; 一、搭建新的场景 首先我们新建场景&#xff0c;根节点选择Node2D&#xff0c;命名为Water&#xff0c;给根节点添加两个Tilemap节点&#xff0c;一个命名为Background主要用于绘制地…...

VMware Workstation Pro 安装 Ubuntu Server

这里写目录标题 VMware Workstation Pro 安装 Ubuntu Server1. 启动选项2. 系统语言3. 安装程序升级4. 键盘配置5. 安装类型6. 网卡配置7. 代理配置8. 系统镜像配置9. 硬盘配置10. 账户配置11. Ubuntu Pro 版本12. SSH 服务13. 推荐软件14. 安装成功15. 第一次重启报错16. 登录…...