[计算机网络]--MAC/ARP/DNS协议

前言

作者:小蜗牛向前冲

名言:我可以接受失败,但我不能接受放弃

  如果觉的博主的文章还不错的话,还请点赞,收藏,关注👀支持博主。如果发现有问题的地方欢迎❀大家在评论区指正 

目录

一、认识以太网

1、局域网中主机的通信

2、认识以太网

3、基于MAC协议在谈局域网中主机的通信 

二、ARP协议 

1、什么是ARP协议

 2、ARP数据报的格式

3、ARP欺骗 

三、DNS协议

1、DNS产生的背景

2、ICMP协议 

四、NAT技术

1、NAT技术背景

 2、NAT和代理服务器


本期学习:认识以太网,了解APR协议,DNS协议,ICMP协议,理解NAT技术和代理服务器

在前面博客中我们学习了,应用层,传输层,网络层的相关协议,我们知道报文的传递是自顶向下的,报文要想发送的网络中要经过最底层数据链路层的转发,下面我们继续学习在数据链路层中的相关知识。

一、认识以太网

在认识以太网前,我们先重新在了解一下在局域网主机是如何进行通信的

1、局域网中主机的通信

 局域网(LAN)是指在相对较小的地理范围内建立的计算机网络,通常是在单个建筑物、办公室、校园或家庭中。局域网允许多台计算机和其他网络设备(如打印机、路由器等)之间进行数据通信和资源共享,而无需依赖互联网或广域网。

那怎么理解局域网中的主机的通信

感性理解:

假设我们现在在一间教室中,老师对全班同学说,张三你作业为什么没做?这个信息全班同学都听到了,但是只会有一个叫张三的同学去向老师解释,其他同学都会忽略这个信息,因为他们知道老师并不是对他们说的。

在上面小故事中,教室相当于局域网,同学们相对于众多主机,老师向班同学说的话就相当于报文。老师是通过向全班同学广播信息,向张三传递信息,但是信息是有对象的,所有其他同学(其他的主机)会自动忽略这条广播信息,相对当于老师是在对张三通信。

所以在局域网中通信的方式是通过广播信息进行的

我们知道每台主机都有他自己的标识,那标识从哪里来,这就来谈谈下面的以太网

2、认识以太网

概念理解

  • "以太网" 不是一种具体的网络, 而是一种技术标准;
  • 既包含了数据链路层的内容, 也包含了一些物理层的 内容. 例如: 规定了网络拓扑结构, 访问控制方式, 传输速率等;
  • 例如以太网中的网线必须使用双绞线; 传输速率有10M, 100M, 1000M等; 以太网是当前应用最广泛的局域网技术; 和以太网并列的还有令牌环网, 无线LAN等;

 以太网帧格式

 以太网的帧格式如下所示:

  • 源地址和目的地址是指网卡的硬件地址(也叫MAC地址), 长度是48位,是在网卡出厂时固化的;
  • 帧协议类型字段有三种值,分别对应IP、ARP、RARP;
  • 帧末尾是CRC校验码 

对比理解MAC地址和IP地址 

  • IP地址描述的是路途总体的 起点 和 终点;
  • MAC地址描述的是路途上的每一个区间的起点和终点

在用MAC帧(以太网帧)传输数据会有一个叫MTU{以太网的最大传输单元}在前面博文中解释过)来限制了传输速度,我们可以通过ifconfig命令查MTU

ifconfig
//命令查MTU

在Unix、Linux和类Unix系统中,ifconfig 命令用于查看和配置计算机上的网络接口的状态和参数。

  1. 显示网络接口信息: 使用 ifconfig 可以显示当前计算机上所有网络接口的配置信息,包括接口名称、IP地址、子网掩码、MAC地址、数据包统计信息等。

  2. 配置网络接口: ifconfig 可以用于配置网络接口的各种参数,例如设置IP地址、子网掩码、广播地址、MTU(最大传输单元)等。

  3. 激活/停用网络接口: 可以使用 ifconfig 命令来激活或停用特定的网络接口。

  4. 修改MAC地址: 在某些情况下,可以使用 ifconfig 命令来修改网络接口的MAC地址。

  5. 显示网络接口统计信息: ifconfig 还可以显示有关网络接口的数据包传输统计信息,例如接收的数据包数量、发送的数据包数量、错误数量等。

3、基于MAC协议在谈局域网中主机的通信 

假设我们现在一个局域网中有8台主机,现在M1想M8发送信息,是如何通过MAC帧协议做到的?

M1会以 广播的形式将报文发送到局域中,所有主机都收到了,但是他们查看目的IP不是自己就将报文丢弃。只有M8是目标主机,他收到报文,会到报文做报头和有效载荷的分离,拿到信息后,在对M1进行应答。

但是我们在细细想一下,在网络发送信息是非常频繁的,可能所有主机的都在做接收报文,对接收报文做出应答的工作。

但在如果众多主机都同时发送消息,他们在传输的时候,本质上就是网线上光电信号的传输,那么就会造成干扰。

在局域网中我们将这种现象称为数据碰撞。

为了防止出现这种现象就有令牌环网,以太网这样的技术。

简单的说一下,令牌环网其实就是给每一个要通信的主机一块令牌,主机通完信息后就将令牌传输给另外的主机,达到局域网中始终只有一个主机进行发送信息。

而以太网就更加的简单了,有一个碰撞检测和碰撞避免算法,达到局域网中始终只有一个主机进行发送信息。

其实局域网就相当于一份临界资源,以太网根据碰撞检测和碰撞避免算法,就可以达到在任何时刻只有一台主机能够向临界资源区中写入信息。

了解完上面的知识,来思考一下问题?

问题1因为碰撞域的存在,一台主机发送信息,一次信息的字节数是越大越大,还是越小越好?

肯定是越小越好,虽然信息的发送是光速,但是我们极端的想要是数据无尽大,那么在传输的时候,肯定会发送碰撞。所以为了保证传输效率才会有TUM来限制报文在数据链路层传输大小

问题2交换机在碰撞域中的作用是什么?

  • 识别局部碰撞,对于发生碰撞的数据不进行转发。
  • 那假设M1和M6的数据发生了碰撞 ,交换机对左侧的碰撞不进行转发,那么右侧发生碰撞的概率就降低了。

二、ARP协议 

我们知道在数据链路层的报文会被封装为MAC帧,发生给目标主机的,这就告诉我们必须清楚目标目标主机的MAC地址。

那我们是怎么得到的,就要通过在网络中经过路由器一跳获取到,具体是怎么实现的呢?

这和ARP协议有关

1、什么是ARP协议

ARP不是一个单纯的数据链路层的协议, 而是一个介于数据链路层和网 络层之间的协议;

ARP协议建立了主机 IP地址 和 MAC地址 的映射关系.

  • 在网络通讯时,源主机的应用程序知道目的主机的IP地址和端口号,却不知道目的主机的硬件地址;
  • 数据包首先是被网卡接收到再去处理上层协议的,如果接收到的数据包的硬件地址与本机不符,则直接丢 弃;
  • 因此在通讯前必须获得目的主机的硬件地址;

那主机A是如何在网络中要到向主机BMAC地址的?

  • 首先当主机A的报文被封装为MAC帧发到连接主机B的路由器时候,(这里假设路由器没有缓存存主机B的MAC地址)。
  • 路由器就在他所连接的局域网网中广播ARP请求,就如上图那样询问目标主机的硬件地址
  • 其中主机收到后,通过ARP协议的规定就会自动丢弃掉报文。
  • 当主机B收到后,就会进行ARP应答,将自己的硬件地址发生给目标地址

上面我们说了那么多ARP协议,还不知道他长什么样子,一起去见见他吧! 

 2、ARP数据报的格式

 

 

有效载荷部分 

  • 硬件类型指链路层网络类型,1为以太网; 
  • 协议类型指要转换的地址类型,0x0800为IP地址;
  • 硬件地址长度对于以太网地址为6字节
  • 协议地址长度对于和IP地址为4字节;
  • op字段为1表示ARP请求,op字段为2表示ARP应答。

注意:

  • 每台主机都维护一个ARP缓存表,可以用arp -a命令查看。缓存表中的表项有过期时间(一般为20分钟),如 果20分钟内没有再次使用某个表项,则该表项失效,下次还要发ARP请求来获得目的主机的硬件地址 

 ARP协议的存在就是为获取目的主机的MAC地址,得到后并不是由他进行发生报文的,而是在将目标主机MAC地址封装为MAC帧在进行发送

3、ARP欺骗 

 ARP欺骗(ARP spoofing)是一种网络攻击技术,利用ARP(地址解析协议)的工作原理来欺骗网络中的其他设备,以获取数据流量或进行中间人攻击。ARP协议用于将IP地址映射到物理MAC地址,以便在局域网中进行通信。ARP欺骗攻击通常由恶意主机执行,它会发送虚假的ARP响应来欺骗网络中的其他设备,告诉它们欺骗者拥有目标IP地址对应的MAC地址。

 

ARP欺骗攻击的步骤如下:

  1. 监听网络流量: 攻击者首先在局域网中监听网络流量,以了解目标设备的IP地址和MAC地址。

  2. 发送虚假ARP响应: 攻击者向目标设备发送虚假的ARP响应,宣称自己拥有目标设备的IP地址,并提供自己的MAC地址。

  3. ARP缓存污染: 目标设备接收到虚假的ARP响应后,会更新自己的ARP缓存表,将目标IP地址对应的MAC地址设置为攻击者的MAC地址。

  4. 中间人攻击: 一旦ARP缓存被修改,攻击者就可以接收到目标设备发送的所有数据流量,并且可以对数据进行窃听、篡改或重定向,实施中间人攻击

ARP欺骗攻击可能会导致网络中的数据泄露、信息窃取、会话劫持等安全问题。为了防止ARP欺骗攻击,可以采取一些防御措施,如使用静态ARP条目、ARP监控工具、网络入侵检测系统(IDS)、网络流量加密等。 

三、DNS协议

DNS是一整套从域名映射到IP的系统

1、DNS产生的背景

TCP/IP中使用IP地址和端口号来确定网络上的一台主机的一个程序. 但是IP地址不方便记忆. 于是人们发明了一种叫主机名的东西, 是一个字符串, 并且使用hosts文件来描述主机名和IP地址的关系

最初, 通过互连网信息中心(SRI-NIC)来管理这个hosts文件的

  • 如果一个新计算机要接入网络, 或者某个计算机IP变更, 都需要到信息中心申请变更hosts文件.
  • 载更新新版本的hosts文件才能正确上网.其他计算机也需要定期下

 这样就太麻烦了, 于是产生了DNS系统.

  • 个组织的系统管理机构,维护系统内的每个主机的IP和主机名的对应关系。
  • 如果新计算机接入网络, 将这个信息注册到数据库中;
  • 用户输入域名的时候, 会自动查询DNS服务器, 由DNS服务器检索数据库, 得到对应的IP地址.

 至今, 我们的计算机上仍然保留了hosts文件. 在域名解析的过程中仍然会优先查找hosts文件的内容

cat /etc/hosts 
//查看hosts文件

域名简介

主域名是用来识别主机名称和主机所属的组织机构的一种分层结构的名称.

www.baidu.com
//百度的域名

域名使用 . 连接

  •  com: 一级域名. 表示这是一个企业域名.
  • 同级的还有 "net"(网络提供商), "org"(非盈利组织) 等.
  • baidu: 二级域名, 公司名. www: 只是一种习惯用法. 之前人们在使用域名时, 往往命名成类似于ftp.xxx.xxx/www.xxx.xxx这样的格 式, 来表示主机支持的协议

2、ICMP协议 

 ICMP协议是一个 网络层协议 一个新搭建好的网络, 往往需要先进行一个简单的测试, 来验证网络是否畅通; 但是IP协议并不提供可靠传输. 如果丢 包了, IP协议并不能通知传输层是否丢包以及丢包的原因

 ICMP主要功能包括:

  • 确认IP包是否成功到达目标地址.
  • 通知在发送过程中IP包被丢弃的原因.
  • ICMP也是基于IP协议工作的. 但是它并不是传输层的功能, 因此人们仍然把它归结为网络层协议;
  • ICMP只能搭配IPv4使用. 如果是IPv6的情况下, 需要是用ICMPv6

 

ping命令

ping 是一个常用于测试网络连接的命令行工具。它可用于检测主机之间是否能够互相通信,以及测量网络的延迟和丢包率。

要 ping Google 的公共 DNS 服务器(8.8.8.8),可以使用以下命令:

ping 8.8.8.8

一个值得注意的坑 :

有些面试官可能会问: telnet是23端口, ssh是22端口, 那么ping是什么端口? 千万注意!!! 这是面试官的圈套

 ping命令基于ICMP, 是在网络层. 而端口号, 是传输层的内容. 在ICMP中根本就不关注端口号这样的信息

traceroute命令

traceroute 是一个用于跟踪数据包从本地主机到目标主机之间的路径的网络诊断工具。它通过向目标主机发送一系列的数据包,并记录它们经过的路由器(或者说是跳点)来实现这一功能。在每一跳,traceroute 都会显示相应的延迟信息,以及该跳点的 IP 地址和域名(如果有)。

例如,要跟踪到 Google 的公共 DNS 服务器(8.8.8.8),可以使用以下命令:

traceroute 8.8.8.8

 

traceroute 会发送一系列的 UDP 数据包(在大多数情况下)或 ICMP 数据包到目标主机,每个数据包在 TTL(Time to Live)字段上设置不同的值。当一个数据包到达某一路由器时,它的 TTL 值会减少,当 TTL 达到零时,路由器会将该数据包丢弃,并向源主机发送一个 ICMP 错误报文,报告 TTL 过期。

通过观察返回的信息,可以了解数据包经过的路由器,以及从本地主机到目标主机的路径上的网络延迟情况。这对于排除网络连接问题和优化网络路径非常有用。

一些常用的 traceroute 选项包括:

  • -m max_ttl:设置最大跃点数,即数据包允许经过的最大路由器数量。
  • -q nqueries:设置每个跃点上发送的数据包数量。
  • -w waittime:设置等待每个跃点的响应的超时时间。

 注意,traceroute 可能会受到防火墙或网络策略的限制,而且不保证在所有网络环境中都能够正常工作。

四、NAT技术

1、NAT技术背景

之前我们讨论了, IPv4协议中, IP地址数量不充足的问题 NAT技术当前解决IP地址不够用的主要手段, 是路由器的一个重要功能

  • NAT能够将私有IP对外通信时转为全局IP.
  • 也就是就是一种将私有IP和全局IP相互转化的技术方法: 很多学校, 家庭, 公司内部采用每个终端设置私有IP, 而在路由器或必要的服务器上设置全局IP;
  • 全局IP要求唯一, 但是私有IP不需要; 在不同的局域网中出现相同的私有IP是完全不影响的;

 NAT IP转换过程

  •  NAT路由器将源地址从10.0.0.10替换成全局的IP 202.244.174.37;
  • NAT路由器收到外部的数据时, 又会把目标IP从202.244.174.37替换回10.0.0.10;
  • 在NAT路由器内部, 有一张自动生成的, 用于地址转换的表;
  • 当 10.0.0.10 第一次向 163.221.120.9 发送数据时就会生成表中的映射关系

那么问题来了, 如果局域网内, 有多个主机都访问同一个外网服务器, 那么对于服务器返回的数据中, 目的IP都是相同 的. 那么NAT路由器如何判定将这个数据包转发给哪个局域网的主机? 这时候NAPT来解决这个问题了. 使用IP+port来建立这个关联关系 

这种关联关系也是由NAT路由器自动维护的. 例如在TCP的情况下, 建立连接时, 就会生成这个表项; 在断开连接后, 就会删除这个表项 

NAT技术的缺陷

由于NAT依赖这个转换表, 所以有诸多限制

  • 无法从NAT外部向内部服务器建立连接;
  • 装换表的生成和销毁都需要额外开销;
  • 通信过程中一旦NAT设备异常, 即使存在热备, 所有的TCP连接也都会断开

 2、NAT和代理服务器

路由器往往都具备NAT设备的功能, 通过NAT设备进行中转, 完成子网设备和其他子网设备的通信过程.

代理服务器看起来和NAT设备有一点像. 客户端像代理服务器发送请求, 代理服务器将请求转发给真正要请求的服务 器; 服务器返回结果后, 代理服务器又把结果回传给客户端.

么NAT和代理服务器的区别

  • 从应用上讲, NAT设备是网络基础设备之一, 解决的是IP不足的问题. 代理服务器则是更贴近具体应用, 比 如通过代理服务器进行翻墙, 另外像迅游这样的加速器, 也是使用代理服务器.
  • 从底层实现上讲, NAT是工作在网络层, 直接对IP地址进行替换. 代理服务器往往工作在应用层.
  • 从使用范围上讲, NAT一般在局域网的出口部署, 代理服务器可以在局域网做, 也可以在广域网做, 也可以跨网

代理服务器是一种应用比较广的技术. 

  • 翻墙: 广域网中的代理.
  • 负载均衡: 局域网中的代理.

代理服务器中的翻墙就不多说了,那什么是负载均衡呢?

在客户端本来是直接向服务器进行请求的,但是对于大公司的说,服务器肯定是有很多台的,但是用户不知道服务器那台工作已经负载了,可能存在一种情况,就用户一直请求公司的一台服务器吗,其他的服务器就闲着。这就导致了资源的分配不均衡,所有,现在我们在客户端到公司的服务器间在连接一台服务器(代理),专门用了合理的分配公司服务器的使用,这就是负载均衡。

 

 代理服务器又分为正向代理和反向代理

正向代理

  • 正向代理是代理服务器位于客户端和目标服务器之间的一种代理方式
  • 客户端向正向代理服务器发送请求,然后正向代理服务器将请求转发给目标服务器,最终将目标服务器的响应返回给客户端。
  • 对客户端来说,目标服务器是不可见的,所有的请求和响应都经过正向代理服务器。
  • 正向代理常用于增加访问控制和安全性,也可用于绕过防火墙、提供匿名性等。

 反向代理

  • 反向代理是代理服务器位于目标服务器和客户端之间的一种代理方式
  • 客户端向反向代理服务器发送请求,然后反向代理服务器将请求转发给一个或多个目标服务器,最终将其中一个目标服务器的响应返回给客户端。
  • 对目标服务器来说,客户端是不可见的,所有的请求和响应都经过反向代理服务器。
  • 反向代理常用于负载均衡、提供高可用性、安全性、缓存等。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

UnityWebGL UGUI中文不显示问题

这是Unity编辑中效果 打包成webgl后的效果(中文没有显示出来) 解决方法 将Unity默认使用的Arial替换成中文字体。 1.找到电脑字体库(win电脑字体库路径:C:\Windows\Fonts ;Mac电脑搜索“字体册”)。 2.将…

TC3xx SMU、PMIC和Tranceiver的功能安全闭环

目录 1.TLF35584安全状态输出响应对象 1.1 响应ERR 收集到的错误信号 1.2 响应监控功能引发的ROT 1.3 响应看门狗引发的错误 1.4 环境过温引发的错误状态 1.5 为什么设计SSx? 2. 安全状态输出给谁 3.小结 在之前文章里,我们简述了TC3xx SMU如何…

js 面试题--事件循环event loop--宏任务和微任务

1 事件循环event loop概念: js 是非阻塞单线程语言,js在执行过程中会产生执行环境,执行环境会按顺序添加到执行栈中,先执行同步栈中的任务,当遇到异步任务时会添加到task队列中,同步栈执行完后&#xff0c…

Python学习系列 -初探标准库之logging库

系列文章目录 第一章 初始 Python 第二章 认识 Python 变量、类型、运算符 第三章 认识 条件分支、循环结构 第四章 认识 Python的五种数据结构 第五章 认识 Python 函数、模块 第六章 认识面向对象三大特性 第七章 初探标准库之os库 第八章 初探标准库之pathlib库 第九章 初探…

【数据结构(C语言)】排序详解

目录 文章目录 前言 一、排序的概念 1.1 排序的概念 1.2 常见的排序算法 二、插入排序 2.1 直接插入排序 2.1.1 基本思想 2.1.2 特性总结 2.1.3 代码实现 2.2 希尔排序 2.2.1 基本思想 2.2.2 特性总结 2.2.3 代码实现 三、选择排序 3.1 直接选择排序 3.1.1…

【数据结构和算法初阶(C语言)】空间复杂度(例题剖析一起探究空间如何评价算法)

目录 1.衔接前言-时间复杂度的回顾 2.关于算法复杂度 3.本文主角-空间复杂度 3.1大O的渐进表示方法 4.空间复杂度例题----实际感受空间复杂度 4.1冒泡排序的空间复杂度 4.2计算递归函数的空间复杂度 4.3动态开辟内存版本求斐波那契数列的空间复杂度 4.4(…

蓝桥杯_定时器的基本原理与应用

一 什么是定时器 定时器/计数器是一种能够对内部时钟信号或外部输入信号进行计数,当计数值达到设定要求时,向cpu提出中断处理请求,从而实现,定时或者计数功能的外设。 二 51单片机的定时/计数器 单片机外部晶振12MHZ,…

如何实现双向循环链表

博主主页:17_Kevin-CSDN博客 收录专栏:《数据结构》 引言 双向带头循环链表是一种常见的数据结构,它具有双向遍历的特性,并且在表头和表尾之间形成一个循环。本文将深入探讨双向带头循环链表的结构、操作和应用场景,帮…

el-table通过这样封装可以实现校验-表格校验的原理

我们一般在后台系统中&#xff0c;很常见的操作时表格里面嵌套表单&#xff0c;之前我的网上找到了一些封装的用法&#xff1a; <el-form :model"formData" :rules"ruleData" ref"formDom"><el-table :data"formData.tableData&q…

Vue.js入门指南:简介、环境配置与Yarn创建项目

一、Vue.js简介 Vue.js&#xff0c;一个流行的JavaScript框架&#xff0c;以其直观、灵活和高效的特点&#xff0c;在前端开发者中赢得了广泛的赞誉。Vue.js的核心库专注于视图层&#xff0c;使得开发者能够构建出响应式的数据绑定和组合的视图组件。Vue.js的目标是通过尽可能简…

CPU、GPU 混合推理,非常见大模型量化方案:“二三五六” 位量化,模型量化详细实现方案

CPU、GPU 混合推理&#xff0c;非常见大模型量化方案&#xff1a;“二三五六” 位量化&#xff0c;模型量化详细实现方案。 非常见整型位数的量化&#xff0c;来自让各种开源模型能够在 CPU 环境、CPU & GPU 环境混合推理的技术方案&#xff1a;llama.cpp 。为了能够在低配…

iOS群控软件功能分析与代码分享!

随着移动互联网的迅猛发展&#xff0c;iOS设备作为市场上一大主流平台&#xff0c;其应用开发和管理越来越受到开发者和企业的重视&#xff0c;iOS群控软件&#xff0c;作为一种能够批量控制、管理和监控iOS设备的工具&#xff0c;逐渐展现出其强大的实用价值。 本文将详细分析…

React回顾

一、基础 1、使用babel解析 2、不直接使用jsx&#xff0c;jsx写起来很繁琐 3、jsx语法规则 4、函数式组件的使用 5、函数式组件渲染 6、类组件渲染 7、类组件中事件调用this指向问题 8、类组件不能直接改变状态 9、props接收数据类型限制 类型限制放到类组件内部&#xff0c;用…

StarRocks实战——滴滴OLAP的技术实践与发展方向

原文大佬的这篇StarRocks实践文章整体写的很深入&#xff0c;介绍了StarRocks数仓架构设计、物化视图加速实时看板、全局字典精确去重等内容&#xff0c;这里直接摘抄下来用作学习和知识沉淀。 目录 一、背景介绍 1.1 滴滴OLAP的发展历程 1.2 OLAP引擎存在的痛点 1.2.1 运维…

IOC 和 AOP

IOC 所谓的IOC&#xff08;inversion of control&#xff09;&#xff0c;就是控制反转的意思。何为控制反转&#xff1f; 在传统的程序设计中&#xff0c;应用程序代码通常控制着对象的创建和管理。例如&#xff0c;一个对象需要依赖其他对象&#xff0c;那么它会直接new出来…

express+mysql+vue,从零搭建一个商城管理系统6--数据校验和登录

提示&#xff1a;学习express&#xff0c;搭建管理系统 文章目录 前言一、修改models/user.js二、修改routes下的user.js三、Api新建user/login接口四、删除数据库原有数据&#xff0c;添加新验证规则的用户四、用户登录总结 前言 需求&#xff1a;主要学习express&#xff0c;…

【Linux】基础篇-Linux四种环境搭建的方式(详细安装说明步骤,搭载下载安装地址)

目录 1. 使用虚拟机&#xff08;推荐VMware&#xff09;centos 7版本 1.1VMware虚拟机下载 1.2VMware 安装 1.3centos-7 清华大学镜像下载 1.4 centos-7 清华大学镜像导入虚拟机VMware 2.使用虚拟机ubuntu 20.04版本 2.1虚拟机下载同上 2.2虚拟机安装同上 2.3ubunt…

ROS-Ubuntu 版本相关

ROS-Ubuntu 版本相关&#xff1a;安装指引 年代ROS1版本Ubuntu 版本2014Indigo14.042016Kinetic16.042018Melodic18.042020Noetic20.04 & 22.04 ROS2兼顾了工业使用上的问题。 年代ROS2版本Ubuntu 版本2022Humble20.04 & 22.042023Iron16.04 相关参考&#xff1a; […

【Qt 学习之路】使用 cmake 在Windows上 编译 ZeroMQ

文章目录 1、概述2、编译2.1、用 Visual Studio 的解决方案方式2.1.1、找到 Builds 文件夹2.1.2、查看 deprecated-msvc 下的 libzmq.sln 文件2.1.3、使用 Visual Studio 打开 libzmq.sln 解决方案2.1.4、修改 libzmq.import.props 文件2.1.5、编译生成 2.2、用 C 的cmake方式2…

【前端入门】设计模式+单多页+React

设计模式是一种解决特定问题的经验总结&#xff0c;它提供了经过验证的解决方案&#xff0c;可以在软件开发过程中使用。设计模式可以帮助前端开发人员更有效地组织和管理代码&#xff0c;并提供一种共享的语言和框架&#xff0c;以便与其他开发人员进行交流。 以下是一些常见…