[线程与网络] 网络编程与通信原理(五): 深入理解网络层IP协议与数据链路层以太网协议

news2024/11/24 4:52:50

🌸个人主页:https://blog.csdn.net/2301_80050796?spm=1000.2115.3001.5343
🏵️热门专栏:🍕 Collection与数据结构 (92平均质量分)https://blog.csdn.net/2301_80050796/category_12621348.html?spm=1001.2014.3001.5482
🧀Java EE(96平均质量分) https://blog.csdn.net/2301_80050796/category_12643370.html?spm=1001.2014.3001.5482
🍭MySql数据库(93平均质量分)https://blog.csdn.net/2301_80050796/category_12629890.html?spm=1001.2014.3001.5482
🍬算法(97平均质量分)https://blog.csdn.net/2301_80050796/category_12676091.html?spm=1001.2014.3001.5482
感谢点赞与关注~~~
在这里插入图片描述

目录

  • 1. 网络层IP协议
    • 1.1 IP协议的作用
    • 1.2 协议头格式
    • 1.3 解决IP数量限制的3种方式
      • 1.3.1 动态分配IP地址
      • 1.3.2 NAT机制
      • 1.3.3 IPv6协议版本
    • 1.4 地址管理
      • 1.4.1 网段划分
      • 1.4.2 特殊IP地址
    • 1.5 路由选择
  • 2. 数据链路层以太网协议
    • 2.1 以太网帧格式
    • 2.2 IP地址与mac地址对比
    • 2.3 MTU
  • 3. DNS应用层协议

1. 网络层IP协议

1.1 IP协议的作用

IP协议最大的两大作用有两个,一个是路径规,也就是路由选择,第二个是地址管理.他用来帮助数据在如此复杂的网络环境中确定一个合适的路径.
在这里插入图片描述

1.2 协议头格式

在这里插入图片描述

  • 4位版本号:指定IP协议的版本,对于IPv4来说,就是4.对于IPv6,就是6.至于其他的版本,目前值存在于实验室,并没有大面积推广使用.
  • 4位头部长度:IP头部的长度是多少.注意,这里的4位头部长度中的位是16进制的,一位表示0~15,一共4位,即最大是15x4=60.
  • 8位服务类型:虽然这里是8位,但是这里只有4位是有效的.4位TOS分别表示:最小延时,最大吞吐量,最高可靠性,最小成本.这四者相互冲突,只能选择一个.这四者可以相互切换.

类似与奥特曼变身的过程.当变身到均衡模式的时候,各项指标都比较均等,当变身到力量模式的时候,攻击力大大提升,防御力相对较弱,当变身为迅捷模式的时候,移速叫快,但其他指标中等.
在这里插入图片描述

  • 16位总长度:IP数据报的总长度(头部+载荷)

问题:IP协议是否也像UDP协议那样最大64KB?
不是的,IP数据报可以自己实现拆包和组包,这样的功能如果携带的数据载荷超出长度上限,IP就会自动拆分为多个数据报,每个数据报携带一部分数据,最终发送到对方之后再拼接好.但是这种办法只使用与载荷是TCP协议类型的载荷,UDP协议不适用.
在这里插入图片描述
那么问题又来了,UDP协议为什么不适用呢?
如果把一个很长的UDP数据报拆分之后,发送给对方接收之后.开始合并还原.还原出的数据,要交给UDP协议进一步解析,取出8个字节为报头,身下的作为载荷,但是剩下的到底有多长?就会从报文的长度字段中读取,最多64KB,剩余的就会被视为无效数据.

下面我们提到的3个报头字段都和IP数据报的拆分有关系.

  • 16位标识:如果一个IP报文被分片了,那么每一个分片中的这个标识都是相同的,表示他们是同一个数据报中分片出来的.也表示最后合拼的时候,哪些数据报要进行合并.
  • 3位标志位: 这其中,只有两位是有效的,第一位保留,第二位表示该数据报是否触发了拆包操作,第三位表示当前的数据报是否是最后一个要组包的部分.类似于结束标记.
  • 13为片偏移:在拼接一个数据报的时候,拆开的包之间要有拼接的先后顺序.这个字段其实就表示的是当前分片在原报文中处于那个位置.
  • 8位生存空间:IP数据报要在网络中转发.我们要限制一个数据报在网络中最大的转发次数.一般是64(但是也不一定,可以配置),每经过一次转发,TTL-=1,一直减到0,还没有到达目的地,这个数据报就要丢弃.

问题:64次转发够用吗?经过64次一下的转发,应该到达目的地的数据报会到达目的地吗?
当然够用,路由器转发IP的时候,每个路由器不了解网络的全貌,但是知道相邻的设备有哪些,即使通过少数几次转发,也可以涵盖大量的设备.
这个设计到一个社会科学的理论,叫做"六度空间"理论.
https://baike.baidu.com/item/%E5%B0%8F%E4%B8%96%E7%95%8C%E7%8E%B0%E8%B1%A1/56374295?fr=ge_ala

  • 8位协议:表示上层协议的类型.即载荷部分是那种类型的数据报.一个数据报在分用时,要给上层那个协议,有明确的声明.
  • 16位头部校验和:使用CRC算法对IP头部进行校验,这里需要注意的是,只对报头进行校验,不管载荷部分.
  • 32位源地址和32位目标地址:表示发送端和接收端.这里虽然是比特位,但是我们平时看到的一般是点分十进制,一共分为4个部分,每部分是1字节.(0~255).
    数据报的四个核心信息:源端口,目的端口,源IP,目的IP.
  • 选项:最大40字节.

1.3 解决IP数量限制的3种方式

IP地址是有限的,如果有一天,IP不够用了怎么办?下面是解决IP数量问题的三种方式.

1.3.1 动态分配IP地址

也就是在一个用户不用网络的时候,他的网络IP就会被回收,分配给需要使用网络的用户,这样做确实可以缓解一定的数量问题,但是却没有从根本上解决问题,并没有是使得IP地址的数量增加.

1.3.2 NAT机制

这种机制也叫做网络地址映射.这种机制把IP地址分为了两种,私网IP和公网IP.也叫内网IP和外网IP.

  • 私网IP格式
    • 10.*,前八位是网络号,一共1677216个地址.
    • 172.16到172.31,前12位是网络号,一共1048576个地址.
    • 192.168.*,前16位是网络号,共65535个地址
      包含在这个范围中的,都是私网IP.
  • 公网IP
    除了上述格式是私网IP,其他的格式都可以是公网IP.

公网IP是唯一的,但是私网IP允许在不同的局域网中重复但不允许在同一个局域网下重复.

  • 引入私网IP和公网IP之后,又是如何进行通信的
    • 同一个局域网内部设备之间通信,由于一个局域网内部之间的IP不可重复,此时设备之间可以正常交互.
    • 广域网设备和广域网设备之间进行通行的时候,由于公网设备之间的IP是唯一的 ,也可以正常交互.
    • 局域网1中的A访问局域网2中的B,直接访问是不允许的,这是因为如果有其他局域网中的IP和局域网2中的B重复,就不知道要访问哪个局域网中的设备了,如果需要,就要使用广域网中的服务器进行数据转发.
    • 局域网设备主动访问广域网设备,这时候就需要使用到NAT机制.
    • 广域网设备主动访问局域网设备,不允许.也是因为不同局域网中的私网IP是可以重复的,这时候广域网下面有好多局域网,如果有两个局域网中的IP是重复的,就不知道具体要访问哪个局域网中的设备了.
  • NAT机制
    在这里插入图片描述
    在NAT机制中,运营商路由器起到了关键性的作用,可以把运营商路由器看做一个NAT设备.在发送方主机发送的数据报经过运营商路由器的时候,运营商路由器会对中间经过的数据报进行网络地址转换,把IP数据报的源IP替换成自己的公网IP,也就是WAN口IP.所以一个运营商路由器的公网IP就可以代表成千上万的私网设备.其中新的端口号由运营商服务器随机分配一个没有重复的.
    但是有一个问题,就是来的时候好好的,回不去了,这时候该怎么办?
    这时候在运营商路由器的内部生成一个"映射关系",它会记录当前这个对应的请求从哪个内网中的设备发送过来的,从而在回去的时候,把目的IP切换为原来的IP.
    那么返回的时候由是怎么返回的呢?(绿线表示返回过程)
    在这里插入图片描述

1.3.3 IPv6协议版本

NAT确实从很大程度上缓解了IP地址缺乏的问题,但是任然没有解决使得IP地址增多的目的.这时候我们就引入了IPv6版本的协议.
IPv6并不是IPv4的升级版,这两个版本的协议并不兼容,这也是如今IPv6没有在世界上大面积普及起来的原因.IPv6使用16字节,也就是128位来表示一个IP地址.它是8个由冒号隔开的16位字段,每个字段由4个十六进制数构成,比如AA22:BB11:1122:CDEF:1234 :AA99:7654:7410.
如果计算出IPv6地址的数量的话,这个数量将非常庞大,足以给地球上每一粒沙子分配一个IP地址.

1.4 地址管理

1.4.1 网段划分

IP地址分为两个部分,网络号和主机号.一共32位.

  • 网络号:**用来标识局域网,在同一个局域网中,网络号相同.**但是不可以说,网络号相同,就一定在一个局域网中,它们两个是一个充分不必要的关系.
    [注意] 局域网之间,网络号可以相同,但是,两个相邻的局域网之间的网络号不可以相同(同一个路由器上的WAN口和LAN口).
  • 主机号:区分同一个局域网中的不同主机.同一个局域网中,网络号相同,但是必须有不同的主机号.
    在这里插入图片描述

那么,在32位的IP地址中,如何区分那几位是网络号,那几位是主机号呢?我们有两种方法来区分.

  • 子网掩码
    子网掩码和IP地址一样,也是32位的二进制整数,其中左半部分全是1,右半部分全是0,不可以有01交错的情况.其中,全部为1的位置标志的是网络号,全部为0的位置标志的是主机号.
    在这里插入图片描述
  • 指定固定前缀
    这是一种上古时期的方法,现在已经很少使用了.具体是多少位网络号,多少位主机号,都是写死的,但是会浪费大量的IP地址.
    在这里插入图片描述
    • A类 0.0.0.0到127.255.255.255
    • B类 128.0.0.0到191.255.255.255
    • C类 192.0.0.0到223.255.255.255
    • D类 224.0.0.0到239.255.255.255
    • E类 240.0.0.0到247.255.255.255

1.4.2 特殊IP地址

  • 将IP地址中的主机地址全部设置为0,就成为了网络号,代表这个局域网.但是这样的IP地址不可以设置到主机上.
  • 将IP地址的主机地址全部设置为1,就成为了广播地址,用于给同一个链路中相互连接的所有主机发送数据报.即给局域网中的所有设备发送数据报.
    [注意] TCP不支持,只有UDP支持
  • 127.*的IP地址用于本机环回,通常是127.0.0.1.往这个IP上发送数据的时候,就由自己来接收.

1.5 路由选择

路由选择通俗一点来讲,就是数据报在网络中找路的过程.
IP数据报在传输的过程中,是一跳一跳"问路"的过程.
• 当IP数据包,到达路由器时,路由器会先查看⽬的IP;
• 路由器决定这个数据包是能直接发送给⽬标主机,还是需要发送给下⼀个路由器;直接发送给主就是直接到达了目的地,而发送给下一个路由器就是让数据找到下一个问路的人.

那么路由器如何决定是否是直接发送到目标主机的呢?
当路由器收到数据的时候,会根据目的IP查询路由表,看在目的地在路由表中是否存在,如果存在,直接发送过去,如果不存在,路由器就会在他的路由表中共挑选一个最"神通广大"的朋友,把数据交给他,让他再去转发.
在这里插入图片描述

• 依次反复,⼀直到达⽬标IP地址;
在这里插入图片描述

[注意]

  • 对于路由器在进行数据转发的时候,无法一下子知道目的地的IP对应的设备如何到达,只能通过启发式的方式,通过一步一步问路的方式,来找到目的地.
  • 所以网络中的路由器寻路的时候,无法做到最优解,只能做到较优解.

举例说明:问路
假如现在没有导航和地图,只能靠问路的方式从北京的天安门东到达西二旗.

  • 从北京地铁的天安门东站出发,在天安门东站,开始问路人A:你知道西二旗怎么做地铁吗?路人A回答道:我不知道,但是我只知道,你需要坐福寿岭站方向的地铁,做到复兴门之后再看看,于是你便坐到了那里.
  • 到达复兴门之后,你又开始问路人B:你知道西二旗怎么坐地铁吗?路人B回答到:我不知道,但我知道你需要换乘2号线,坐到西直门站再看看.
  • 到达西直门后,你又开始问路人C:你知道西二旗怎么坐地铁吗?路人C回答到:你需要换乘13号线,坐那么4,5站地就可以到达西二旗.
    这其中,你问路的路人就像一个个路由器,给你指路,而你就是一个数据报,需要从起点到达目的地.
    在这里插入图片描述

2. 数据链路层以太网协议

在以太网中,既包含数据链层的内容,也包含一些物理层的内容.以太网不是一种具体的网络,而是一种技术标准.

2.1 以太网帧格式

在这里插入图片描述

  • 目的地址与源地址: 这里的地址类型是mac地址,或者说是物理地址,每个地址是6个字节,48个比特位.

什么是mac地址.
在前面的IP地址中,IP地址进行选择时候,IP层决定下一个路由器要找谁,到了数据链路层,就要决定具体要怎么找到下一个路由器.即数据报要从路由器中的哪个接口发送出去.
路由器在数据链路层也维护了一张表,这个表中就记录的是每个网口以及网口对端设备mac地址的关联关系.

  • 类型: 描述后面载荷的数据类型.
  • CRC: 是以太网帧的帧尾,其中也使用CRC校验和来验证数据报的正确性.
  • 0800类型数据载荷:这个数据载荷就是真真实实携带数据的载荷,最大占1500个字节.
  • 0806类型与8035类型:这两种数据类型都不会携带任何业务上的载荷,只是针对转发数据过程中起到辅助的作用.
  • ARP请求/应答:ARP协议给每个路由器或者交换机建立转发表(注意不是路由表),这张表是由硬件层面来维护的,直接通过转发芯片来记录.这张表中记录的是IP地址与mac地址的映射关系.数据转发过程中的每一跳,先查路由表,知道下一跳的IP地址,之后再查转发表,知道IP地址对应的mac地址,之后再转发.

2.2 IP地址与mac地址对比

  • IP地址描述的是路途总体的起点与终点.
  • mac地址描述的是路途中每一个区间的起点和终点.

举例说明:从太原到哈尔滨
从太原到哈尔滨的路线假设是: 太原—>北京—>沈阳—>哈尔滨
假如我们取出北京—>沈阳这一段:

  • 源IP: 太原
  • 目的IP:哈尔滨
  • 源mac:北京
  • 目的mac:沈阳

它们之间的传输作用其实就对应的是我们之前在网络初步的时候提到的TCP/IP五层模型中网络层与数据链层的传输作用.当时我们使用送快递的例子来说明了.这里我们再重复一次.
https://blog.csdn.net/2301_80050796/article/details/138972120?spm=1001.2014.3001.5501

  • 应用层: 和具体的应用程序相关,传输的数据干啥用,如何使用,有何意义.
  • 传输层: 关注的是通信双方的"起点"和"终点",终端到终端的传输.
  • 网络层: 关注的是通信中通信路径的规划,规划出的路径确定了数据要经过哪些"点到点的传输".
  • 数据链层: 关注的是通信过程中,相邻两个点之间的通信.
  • 物理层: 物理层就是网线和网口等硬件方面的东西.

举例说明: 网上购物
某人在淘宝上买了一箱面包.商家接到订单.

  • 应用层: 他买来这箱面包是用来吃的,绝对不是其他的什么用途~~.就像我们通过网络拿到数据之后,来干嘛用.
  • 传输层: 商家从仓库出库商品之后,寄到快递驿站,驿站揽收之后,快递单就会打印收货的地址.这时候就是只关注寄件地址和收件地址.也就是通信双方的"起点"的"终点".
  • 网络层: 揽收之后,商家就要对运输的路径进行规划,比如要从深圳市寄到北京市.可以是在深圳发件之后,在保定中转,之后到达北京,也可以在天津中转,最后到达北京.
  • 数据链层: 运输途中,两个结点之间该用什么样的交通方式,比如从深圳到北京比较远,可以采用铁路运输,从天津到北京比较近,可以采用大卡车运输.
    在这里插入图片描述

2.3 MTU

MTU相当于发快递时对包裹尺寸的限制.这个限制是不同的数据链路对应的物理层,产生的限制.
• 以太网帧中的数据长度规定最小46字节,最大1500字节,ARP数据包的长度不够46字节,要在后面补填
充位;
• 最大值1500称为以太网的最大传输单元(MTU),不同的网络类型有不同的MTU;
• 如果⼀个数据包从以太网路由到拨号链路上,数据包长度大于拨号链路的MTU了,则需要对数据包进
行分片(fragmentation);
• 不同的数据链路层标准的MTU是不同的;

3. DNS应用层协议

DNS,全称Domain Name System,叫做域名解析系统.
当我们在使用IP地址查找一个主机的时候,IP地址过于复杂,没有任何规律,很不好记,这时候我们便引入了域名解析系统.通过DNS系统把一个IP地址转换成一个域名,这个域名是一个字符串.

举例说明:比如百度,www.baidu.com,这是百度的域名,但是百度广域服务器的IP地址不是这个东西,它的IP地址依然是一个点分十进制数字:202.108.22.5,只不过为了方便用户访问到百度,把这个点分十进制的数字用一个带有汉语拼音的域名代替掉了.

在这里插入图片描述

  • 那么这些字符串与IP的对应关系在哪里呢?
    在过去,会使用hosts文件来描述域名和IP地址的关系.但是随着互联网的日益扩张,这个文件就必须不停更新,用户的电脑可能会存不下.于是DNS服务器便诞生了.把这样的对应关系,使用服务器来保存.

DNS服务器在查询域名对应的IP地址的时候,是按照一级一级的查询的.
比如www.baidu.com,其中com是一级域名.baidu是二级域名,在DNS服务器查询的时候,首先查询一级域名,再查询二级域名,以此类推
在我们前面的语法部分讲到包的时候,我们通常也使用公司域名的反向域名对包进行命名.

  • 访问DNS服务器的机制
    • 客户端缓存: 电脑在尝试访问某个域名的时候,得到的IP会保存起来,下次再访问的时候,就不会重新查询DNS.
    • 分布式系统: 全世界各个地方,建设了很多DNS镜像服务器,此时请求DNS服务器只需要就近访问附近的镜像服务器即可.

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

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

相关文章

1-Maven-settings配置

1-Maven-settings配置 整理下Maven工具的使用。 【本地仓库、私服、镜像仓库、远程仓库、中央仓库】 本文基于阅读其他博客和对公司Maven配置的学习整理出来的。希望通过本此学习能对Maven有个整体性的掌控。 顺序:profile.repository > pom文件中的repository &…

小程序 UI 风格,独具匠心

小程序 UI 风格,独具匠心

iOS 之homebrew ruby cocoapods 安装

cocoapods安装需要ruby,更新ruby需要rvm,下载rvm需要gpg,下载gpg需要homebrew,所以安装顺序是homebrew->gpg->rvm->ruby-cocoapods Rvm 官网: RVM: Ruby Version Manager - RVM Ruby Version Manager - Docum…

04-240606Spark笔记

04-240606Spark笔记 1.行动算子-2 save相关算子: 格式: def saveAsTextFile(path: String): Unit def saveAsObjectFile(path: String): Unit def saveAsSequenceFile(path: String,codec: Option[Class[_ <: CompressionCodec]] None): Unit 例子: val rdd sc.makeR…

Next.js Tailwind CSS UI组件

摘要&#xff1a; 官网 今天公司使用到一个前端ui框架——Next.js Tailwind CSS UI组件&#xff01;这从头构建一个AI驱动的前端UI组件生成器&#xff0c;生成Next.js Tailwind CSS UI组件&#xff1a; 1、用Next.js、ts和Tailwind CSS构建UI组件生成器Web应用程序。 2、用Copi…

【MySQL】聊聊order by 是如何排序的

CREATE TABLE t (id int(11) NOT NULL,city varchar(16) NOT NULL,name varchar(16) NOT NULL,age int(11) NOT NULL,addr varchar(128) DEFAULT NULL,PRIMARY KEY (id),KEY city (city) ) ENGINEInnoDB;构建一个表结构&#xff0c;以及数据。 本篇主要来分析下order by是如何进…

前端 JS 经典:图片裁剪上传原理

前言&#xff1a;图片裁剪一般都是用户选择头像时用到&#xff0c;现在很多插件都可以满足这个功能&#xff0c;但是我们不仅要会用插件&#xff0c;还要自己懂的裁剪原理。 1. 流程 流程分为&#xff1a;1. 预览本地图片 2. 选择裁剪区域 3. 上传裁剪图像 2. 如何预览图片 …

作业06 递推算法1

作业&#xff1a; #include <iostream> using namespace std; int main(){long long a[110];short n;cin>>n;a[0]1;a[1]1;for(int i2;i<n;i){a[i]a[i-1]a[i-2];}cout<<a[n-1];return 0; } #include <iostream> using namespace std; int main(){lon…

【机器学习】机器学习与大模型在人工智能领域的融合应用与性能优化新探索

文章目录 引言机器学习与大模型的基本概念机器学习概述监督学习无监督学习强化学习 大模型概述GPT-3BERTResNetTransformer 机器学习与大模型的融合应用自然语言处理文本生成文本分类机器翻译 图像识别自动驾驶医学影像分析 语音识别智能助手语音转文字 大模型性能优化的新探索…

41【Aseprite 作图】粉红宫灯——拆解

1 宫灯轮廓 上面三角&#xff0c;下面3 3 3 &#xff08;粉色在后面&#xff0c;做轮廓&#xff09;&#xff0c;棕色在外面&#xff0c;看做是灯骨&#xff08;竖着更长&#xff09;&#xff1b;中间是横着做灯骨 尾部的彩带&#xff0c;下面粉色更浅&#xff0c;上面绿色更浅…

Eclipse添加C和C++编译成汇编文件的选项

在miscellaneous中添加assemble listing选项就可以生成汇编文件了

12_JavaWebAjax

文章目录 Ajax1. 同步请求异步请求2. Ajax实现方式3. 日程管理第四期4. 响应JSON串4.1 响应JSON串格式的一般格式 Appendix Ajax 发送请求的一些方式 1.输入浏览器回车 2.html>head>script/link ​ img标签 3.a标签form表单标签等 用户手动控制提交产生&#xff1b…

【MyBatis】MyBatis操作数据库(二):动态SQL、#{}与${}的区别

目录 一、 动态SQL1.1 \<if>标签1.2 \<trim>标签1.3 \<where>标签1.4 \<set>标签1.5 \<foreach>标签1.6 \<include>标签 二、 #{}与${}的区别2.1 #{}是预编译sql&#xff0c;${}是即时sql2.2 SQL注入2.3 #{}性能高于${}2.4 ${}用于排序功能…

MATLAB基础应用精讲-【数模应用】二元Logit分析(最终篇)(附python、MATLAB和R语言代码实现)

目录 算法原理 SPSSAU 1、二元logistic分析思路说明 2、如何使用SPSSAU进行二元logistic操作 3、二元logistic相关问题 算法流程 一、分析前准备 1、确定分析项 2.多重共线性判断 3.数据预处理 二、回归基本情况分析 三、模型拟合评价 1、似然比检验 2、拟合优…

C语言(数据存储)

Hi~&#xff01;这里是奋斗的小羊&#xff0c;很荣幸各位能阅读我的文章&#xff0c;诚请评论指点&#xff0c;欢迎欢迎~~ &#x1f4a5;个人主页&#xff1a;小羊在奋斗 &#x1f4a5;所属专栏&#xff1a;C语言 本系列文章为个人学习笔记&#xff0c;在这里撰写成文一…

htb_Mailing

端口扫描 主页有一个download按键 点击后下载了一个pdf 大致看了一下&#xff0c;就是一个使用邮件服务器的说明书 不过最后有一个用户名Maya 目录扫描 /assests/ 一个存图片的地方 /download.php 需要指定下载文件&#xff0c;大概就是刚刚那个pdf 返回主页再次下…

编译等底层知识

目录 一. GCC命令语句大全 二. GCC编译4个阶段 三. makefile的使用 四. CMake 五. GNU工具链开发流程图 六. Keil中的地址段 七. 静态库和动态库 一. GCC命令语句大全 -c只编译源文件&#xff0c;生成目标文件&#xff08;.o 文件&#xff09;&#xff0c;不进行链接。…

学习使用Opentelemetry python SDK

前言 &#x1f4e2;博客主页&#xff1a;程序源⠀-CSDN博客 &#x1f4e2;欢迎点赞&#x1f44d;收藏⭐留言&#x1f4dd;如有错误敬请指正&#xff01; 一、什么是 OpenTelemetry OpenTelemetry 由 OpenTracing 和 OpenCensus 项目合并而成&#xff0c;是一组规范、工具、API…

DxO ViewPoint v4.8 解锁版安装教程 (校正几何和透视的图像处理)

前言 DxO ViewPoint中文版是一款能够校正几何和透视的图像处理软件,摄影师通过ViewPoint破解版修复构图和光学缺陷并恢复拍摄对象平衡,重新调整如弯曲架构和扭曲图案等细节,让图像具备更强冲击力和更优平衡性。 一、下载地址 下载链接&#xff1a;http://dygod/source 点击搜…

VMware Workstation虚拟机固定IP配置(主机互通、外网可访问)

VMware Workstation虚拟机固定IP配置 环境问题配置过程配置虚拟机网络适配器配置虚拟机网络配置虚拟网卡网络适配器配置虚拟机固定IP 结果验证结束语参考 环境 主机&#xff1a;Windows 11 VMware Workstation: 17.5.2 虚拟机&#xff1a;Ubuntu 24.02 LTS 注&#xff1a; 主…