Linux 网络基础(1)

1.计算机网络背景

早期计算机的设计初衷,主要服务于军事领域,专门处理弹道轨迹等大规模复杂计算。在最初的设计中,计算机之间相互独立,并没有内置直接传输数据的功能,每台设备只能单独完成计算任务

在这样的背景下,如果多个人需要协作处理数据,并且彼此的工作存在依赖关系,就会面临数据传递的难题。例如,一方的计算结果,是另一方继续处理的基础,而早期计算机无法直接传输数据,只能依靠软盘这类存储介质进行人工传递。使用软盘不仅速度慢、容量小,还容易丢失数据,整体效率极低,无法满足高效协作的需求。

为了解决这一问题,人们开始尝试搭建集中式的共享服务器,将多台计算机通过线路与服务器相连,实现数据集中上传与获取,大幅提升了传输效率。随着需要联网的设备越来越多,仅靠单一服务器无法满足需求,于是人们开始探索设备之间的直连通信方式。

在这样的需求推动下,交换机与路由器相继出现,成为连接多台计算机的核心设备。通过网线、交换机与路由器的组合,可在一定范围内将多台设备互联,实现定向数据传输,这样覆盖小范围区域的网络,就是局域网。日常生活中,家庭路由器构建的网络,就是典型的局域网

当大量局域网形成后,不同地域的局域网之间也产生了通信需求。例如,相隔万里的两个机构,各自拥有独立局域网,却需要完成跨区域数据传输。为了实现远距离局域网互联,人们通过大规模部署交换机、路由器,将分散在各地的局域网相互连接,最终形成覆盖广阔范围的网络体系,这就是广域网。依靠广域网,即使距离遥远的网络节点,也能稳定完成数据通信与信息交互。

2.数据远距离传输带来的问题

广域网建成之后,上海便可以向北京传输数据了。但跨过上万公里的远距离传输,并不是一件简单的事,过程中会出现一系列问题,需要解决四个层层递进的关键问题:

首先,广域网由多个局域网通过交换机、路由器相互连接而成,必须先保证数据能够从一个设备顺利传递到下一个设备,也就是一台计算机能够通过网络设备,把信息发给局域网内的目标设备,这是整个通信的基础。

当数据可以逐段传递后,从上海到北京,中间要经过大量网络设备,如何在海量设备中精准找到清华大学的目标主机,就成了必须解决的定位问题。

成功定位目标主机后,由于传输距离极远,数据在传输过程中很容易出现丢失、损坏的情况,因此还需要解决远距离传输下的数据可靠性问题,保证数据完整到达。

最后,当数据完整无误地送达北京的主机后,接收方还需要知道如何解析、处理这些收到的数据,让信息真正发挥作用。

简单总结,这四个依次递进的核心问题分别是:

(1)如何让数据可靠地传递到下一个网络设备

(2)如何在网络中精准定位目标主机

(3)如何避免远距离传输过程中的数据丢失

(4)主机收到数据后如何进行处理

3.解决问题(引出协议)

生活中都存在寄快递的例子吧,例如我们将一个篮球从北京寄到上海。

你要从北京给上海的朋友寄一个篮球,这个过程完美对应了网络通信的四个核心问题,而每一步都离不开"协议"。

  1. 快递单(协议的具象化)

快递公司提供的快递单,就是一份标准协议。它规定了必须填写的信息:

寄件人:姓名、电话、地址

收件人:姓名、电话、地址

物品信息、保价金额等

你(寄件人)按格式填写,快递员(传输者)才能分拣派送,你的朋友(收件人)才能确认这是自己的包裹。

  1. 对应到网络四层问题

这个寄快递的过程,完美对应了我们之前提到的四个网络问题:

(1)如何保证数据准确到达下一个设备?

就像快递从你家到小区驿站,再到北京分拣中心,再到上海分拣中心。每一步,快递员都知道如何把包裹交给下一个环节,这对应数据链路层的协议。

(2)如何定位主机?

快递单上的收件人地址和电话,就是"定位信息"。快递公司根据这个地址,把包裹准确送到上海的某条街道、某栋楼,这对应IP协议。

(3)如何解决长距离传输数据丢失的问题?

如果是贵重物品,你会选择保价和物流追踪。快递公司会提供单号,实时更新位置,一旦丢失会进行赔付或补发,这对应TCP协议。

(4)如何处理收到的数据?

你的朋友收到包裹后,知道这是一个篮球,需要签收、验货。如果里面是发票,他就知道要入账;如果是合同,他就知道要签字。这对应应用层协议(如HTTP、FTP等)。

  1. 协议在计算机中的表示

就像快递单上的信息是有限的(地址、电话、物品名),网络协议中的属性也是有限的。在计算机里,这些固定格式的信息,就是用结构体(struct)来定义的。比如,一个TCP数据包的头部,就可以用一个结构体来表示,包含源端口、目的端口、序列号等字段。

4.认识协议

协议是一种约定,在计算机中表征为struct结构体

计算机之间的传输媒介是光信号和电信号,即光电信号,通过频率和强弱来表示0和1这样的信息,想要传递各种不同的信息,就需要双方制定好协议,即约定好数据格式

可是只要通信的双方约定好协议就可以了吗?不是的

计算机生产厂商很多,计算机的操作系统有很多,计算机的网络硬件设备也有很多。那么不同的厂商定制的协议,使用的数据格式大多不相同,那儿如何让这些计算机厂商生产出来的计算机可以顺利的进行通信?那么就需要有人跳出来,定制一个共同的标准,让这些计算机厂商都遵守这个标准,所以网络协议就应运而生

5.网络协议

在上面的寄快递的例子中,我们已经简单的提到了几种协议,同时提到了它们各种的作用。

那么网络协议是由很多层的,为什么呢?

(1)数据通过网络进行长距离通信,导致的问题本身就是分层的,所以针对各个分层的问题,会有各个网络协议去分层的各个解决问题

(2)计算机网络太大了,所以要通过分层将网络进行拆分为各个模块,一方面是可以模块化的编写各个功能,另一方面可以降低维护成本

OSI七层网络模型

计算机的网络通信要进行分层,所以需要一个权威的组织来进行制定标准,这个组织叫做国际化标准组织ISO,所以它们就定制了OSI(Open System Interconnection,叫做开放系统互连)七层网络模型,是一个逻辑上的定义和规范

OSI七层网络模型,将网络从逻辑上分为七层,每一层都有对应的物理设备,比如路由器,交换机等

但是在实际实现的过程中,那些顶尖的程序员发现完完全全的按照这7层网络模型来设计并不好,linux中有关于网络模块的实现,而实际实现的时候,在linux中没有关于应用层,表示层,会话层的实现,通常是将表示层,会话层归纳到应用层中实现,而是仅仅在linux中实现了传输层,网络层,在底层网卡的驱动程序中实现了数据链路层,而在物理层,即需要支持网卡这个硬件

而传输层中又以tcp协议为代表,网络层中又以ip协议为代表,tcp协议和ip协议可是已经写到linux内核中了,所以tcp/ip协议的重要性不言而喻,所以我们将上述模型简化为TCP/IP网络协议栈

6.TCP/IP网络协议栈

TCP/IP是一组协议的代名词,它还包括许多协议,组成了TCP/IP协议簇.

TCP/IP通讯协议采用了5层的层级结构,每一层都呼叫它的下一层所提供的网络来完成自己的需求.

物理层: 负责光/电信号的传递方式. 比如现在以太网通用的网线(双绞 线)、早期以太网采用的的同轴电缆(现在主要用于有线电视)、光纤, 现在的wifi无线网使用电磁波等都属于物理层的概念。物理层的能力决定了最大传输速率、传输距离、抗干扰性等. 集线器(Hub)工作在物理层.

数据链路层: 负责设备之间的数据帧的传送和识别. 例如网卡设备的驱动、帧同步(就是说从网线上检测到什么信号算作新帧的开始)、冲突检测(如果检测到冲突就自动重发)、数据差错校验等工作. 有以太网、令牌环网, 无线LAN等标准. 交换机(Switch)工作在数据链路层.

网络层: 负责地址管理和路由选择. 例如在IP协议中, 通过IP地址来标识一台主机, 并通过路由表的方式规划出两台主机之间的数据传输的线路(路由). 路由器(Router)工作在网路层.

传输层: 负责两台主机之间的数据传输. 如传输控制协议 (TCP), 能够确保数据可靠的从源主机发送到目标主机.

应用层: 负责应用程序间沟通,如简单电子邮件传输(SMTP)、文件传输协议(FTP)、网络远程访问协议(Telnet)等. 我们的网络编程主要就是针对应用层.

物理层我们考虑的比较少. 因此很多时候也可以称为 TCP/IP四层模型.

一般而言

对于一台主机, 它的操作系统内核实现了从传输层到物理层的内容;

对于一台路由器, 它实现了从网络层到物理层;

对于一台交换机, 它实现了从数据链路层到物理层;

对于集线器, 它只实现了物理层;

7.网络传输基本流程

安卓手机的底层基于Linux内核,而电脑多采用Windows系统,看似不同的设备却能顺畅通信,核心原因在于网络模块的标准化实现。操作系统的网络通信功能并非随意开发,而是严格遵循统一的网络协议标准(如OSI模型或TCP/IP模型)。无论是Linux还是Windows,其网络协议栈中都实现了IP、TCP等核心协议,且协议的数据结构、字段定义完全一致,这就像不同快递公司都使用统一格式的快递单,收发双方才能准确识别信息,从而实现跨设备通信。

当手机向电脑发送数据时,数据会从应用层开始,逐层向下封装:

应用层:在"你好"这个原始数据前,添加应用版本号等报头,形成应用层报文。

传输层:为报文添加序号等报头,确保数据可靠有序传输。

网络层:添加源IP和目标IP地址,定位通信双方的主机。

数据链路层:添加网卡MAC地址,确保数据能在局域网中准确传递到下一跳设备。

物理层:将封装好的报文转换为电信号,通过网卡发送到网络中。

电脑接收到数据后,会从物理层开始逐层向上解包:

  1. 网卡将电信号转换为数据报文,拷贝到内存中。

  2. 数据链路层根据报头信息,分离出有效载荷并确定交付给网络层的哪个协议。

  3. 网络层解包后,将有效载荷交付给传输层的对应协议。

  4. 传输层解包后,将有效载荷交付给应用层的对应协议。

  5. 应用层最终解包,提取出"你好"这个原始数据,交付给用户。

这个过程本质上就是封装与解包的循环。几乎所有网络协议都具备两个核心特性:

  1. 能够分离报头和有效载荷,完成解包操作。

  2. 报头中包含分用信息,能决定将有效载荷交付给上层的哪个协议,确保数据准确递达。

不同的协议层对数据包有不同的称谓,在传输层叫做段(segment),在网络层叫做数据报 (datagram),在链路层叫做帧(frame).

应用层数据通过协议栈发到网络上时,每层协议都要加上一个数据首部(header),称为封装(Encapsulation).

首部信息中包含了一些类似于首部有多长, 载荷(payload)有多长, 上层协议是什么等信息.

数据封装成帧后发到传输介质上,到达目的主机后每层协议再剥掉相应的首部, 根据首部中的 "上层协议字段" 将数据交给对应的上层协议处理.
不同网络设备的功能也与其协议栈层级对应:

主机(如手机、电脑)的操作系统内核,实现了从传输层到物理层的全部协议栈。

路由器主要工作在网络层,实现了从网络层到物理层的功能。

交换机主要工作在数据链路层,实现了从数据链路层到物理层的功能。

集线器仅工作在物理层,负责信号的物理传输。

8.以太网通信

局域网的类型有很多,以太网就是其中应用最普遍、最具代表性的一种。

和所有网络一样,以太网上的每台主机也需要一个唯一标识,这个标识就是 MAC 地址。、

每台计算机都必须配备网卡硬件,每张网卡在出厂时就被固化了一个全球唯一的 MAC 地址,且无法随意更改。操作系统通过网卡驱动管理网卡,因此可以直接获取到本机的 MAC 地址,让每台主机在局域网中都有独一无二的身份。

假设一个局域网内有 H1~H10 共十台主机,各自对应网卡 M1~M10,并拥有独立 MAC 地址。

当 H1 想和 H10 通信时,数据会经过网络协议栈逐层封装,最终到达 H1 的网卡。其中数据链路层会填入本机 MAC 地址和目标主机 MAC 地址,这组地址只在当前以太网内有效。

当 M1 将报文发到局域网中时,同一以太网内所有主机的网卡都会收到这份报文。

每台主机都会把报文向上递交到数据链路层,解包后取出目标 MAC 地址,和本机 MAC 对比:

H2~H9 发现地址不匹配,就直接丢弃报文,不再向上处理;

只有 H10 匹配成功,才会继续向上分用、解包,最终拿到 H1 发来的数据。

但如果同一时刻有多台主机同时发送数据,比如 H1 发给 H10、H2 发给 H4、H6 发给 H3,就会出现问题。

以太网本质是一个共享信道,多组光电信号同时传输会发生碰撞,导致波形紊乱、数据出错。

也就是说,同一时间内,以太网只允许一组设备进行数据传输。

一旦发生碰撞,发送数据的主机网卡会检测到冲突。

这时所有发送方都会执行碰撞避免算法,算法的核心是:

碰撞后不立即重发,而是随机等待一段时间再尝试发送。

由于等待时间是随机的,原本同时发送的设备会被错开,极大降低再次碰撞的概率。

这也是为什么网络中设备一多,偶尔会出现卡顿、延迟,本质就是以太网发生了数据碰撞。

我们把以太网中可能发生数据碰撞的范围,称为碰撞域。

另外,由于以太网中所有主机都能收到广播报文,因此存在被监听的可能。

网卡默认工作在正常模式:

收到报文 → 比对目标 MAC → 不匹配则直接丢弃。

但如果把网卡设为混杂模式,即使 MAC 不匹配,也不会丢弃报文,而是继续解包向上递交。这意味着:局域网内未加密的数据,很容易被其他主机抓取。因此重要数据必须在传输前加密,只有目标主机才能解密读取。

最后说交换机,它是工作在数据链路层的设备,专门用于优化以太网传输。

交换机最核心的作用就是划分碰撞域。

当交换机收到一个数据帧时,会读取目标 MAC 地址,判断目标主机在交换机的左侧还是右侧,只向对应方向转发数据,而不是向所有端口广播。

这样一来,数据不会在整个网络内泛滥,碰撞概率大幅降低。

如果交换机左侧发生数据碰撞,收到损坏的帧,交换机会直接丢弃,不会转发到另一侧,进一步减少了全网的碰撞影响。

这也决定了:

交换机必须实现物理层 + 数据链路层的协议功能。

物理层负责接收、转发电信号;

数据链路层负责解析 MAC 地址、决定转发方向。

9.跨网络的数据传输

在前面我们已经详细了解了局域网内部的数据传输机制,现在我们来深入学习一下,当两台主机分属两个不同的局域网(即两个不同的子网)时,数据是如何实现跨网络传输的。

首先,我们假设有两个独立的局域网,以及分别处于这两个网络中的两台主机:左侧局域网中的客户端主机 C,和右侧局域网中的服务端主机 S。要实现 C 和 S 之间的通信,必须在这两个局域网的交界处部署一台核心设备------路由器。

为什么必须要有路由器?

路由器的特殊之处在于,它同时属于两个(或多个)局域网。它就像一个"网络翻译官"和"中转站"。

左侧局域网内的主机 C,首先将数据在本局域网内传输给路由器。

然后,路由器再将数据在右侧局域网内转发给最终目标主机 S。

正是路由器的存在,才打通了不同局域网之间的壁垒,实现了跨网通信。

我们知道,路由器是工作在网络层的设备,这意味着它的协议栈实现了从网络层、数据链路层到物理层的全部功能。这也决定了路由器有两个关键特性:

  1. 拥有IP地址:在网络层,路由器有自己的IP地址,用于在全网范围内被识别和寻址。

  2. 拥有多个网卡:在数据链路层,路由器需要管理多个不同类型的网卡,并安装对应的驱动程序。
    为什么路由器需要多个不同类型的网卡?

这是因为,局域网的种类天然就是多样的。它可以是以太网(Ethernet),也可以是无线局域网(WLAN/WiFi),还可以是已经逐渐淘汰的令牌环网(Token Ring)。

要在以太网中收发数据,主机或设备必须配备以太网网卡。

要在令牌环网中收发数据,就必须配备令牌环网网卡。

同理,无线局域网则需要无线网卡。

在我们的例子中,左侧的局域网是以太网,右侧的局域网是令牌环网。路由器处于两者交界,既要在以太网中收发数据,又要在令牌环网中收发数据,因此它必须同时支持这两种网卡及驱动程序,才能在两个不同的网络中"畅行无阻"。

令牌环网的原理(与以太网的对比)

我们已经详细讲解过以太网的工作机制,这里简要介绍一下令牌环网。虽然它现在已被淘汰,但其设计思想很有代表性。

令牌环网的核心是通过一个叫做"令牌"(Token)的特殊数据帧来协调网络访问,避免数据碰撞:

  1. 令牌的唯一性:在整个令牌环网中,始终只有一个"令牌"在网络中循环。

  2. 发送权的获取:任何主机想要发送数据,必须先"捕获"到这个空闲的令牌。

  3. 独占发送:只有持有令牌的主机,才有权限向网络中发送数据。未持有令牌的主机只能被动接收数据,不能主动发送。

  4. 令牌的释放:当持有令牌的主机完成数据发送后,会将令牌释放,让它继续在网络中循环,供其他主机申请使用。

这种机制保证了同一时间内,网络中只有一台主机能够发送数据,从根本上杜绝了数据碰撞的问题。

与以太网和操作系统的联系:

令牌环网的"令牌"机制,非常像我们在操作系统中学到的互斥锁(Mutex)。它保证了"共享资源"(网络传输介质)在同一时间只被一个"执行流"(主机)访问。

以太网虽然没有使用"令牌",但它通过碰撞检测(CSMA/CD)和碰撞避免算法,最终也达到了类似的效果------保证同一时间内网络中尽量只有一台主机在发送数据。

由此可见,计算机网络和操作系统的底层设计思想是相通的,都是通过不同的策略来解决共享资源的并发访问问题。

跨网传输的完整流程详解

现在,我们来详细拆解左侧主机 C 向右侧主机 S 发送"你好"这个数据的全过程。

1. 主机 C:封装数据并发送到路由器

主机 C 首先将"你好"这个数据,通过自己的网络协议栈逐层向下封装:

  1. 应用层到传输层:数据被逐层封装,形成传输层的数据段。

  2. 网络层(IP协议):

  3. 这是跨网传输的关键一步。IP地址的作用是在全网范围内定位目标主机。

  4. 网络层会封装一个IP报头,其中包含:

  5. 源IP地址:主机 C 的IP地址。

  6. 目的IP地址:主机 S 的IP地址。

  7. 这个IP报头一旦封装好,在整个跨网传输过程中都不会改变,它始终指向最终的目的地。

  8. 数据链路层:

  9. 数据链路层的作用是在局域网范围内传输数据,所以它封装的MAC地址只负责指引"下一跳"的设备。

  10. 此时,主机 C 知道要把数据先发给路由器,所以它会封装一个新的MAC报头:

  11. 源MAC地址:主机 C 网卡的MAC地址。

  12. 目的MAC地址:路由器在左侧以太网接口的MAC地址。

  13. 封装完成后,形成一个数据帧,向下传递给物理层的网卡。

  14. 物理层:主机 C 的以太网网卡将数据帧转换为电信号,发送到以太网中。

以太网内的所有主机(包括路由器)都会收到这个广播的数据帧。它们在数据链路层解包,比对目的MAC地址。只有路由器发现这个地址与自己的MAC地址匹配,因此会接收并处理这个数据帧,将有效载荷(即IP数据报)向上递达给网络层的IP协议。

2. 路由器:转发数据到目标局域

路由器在网络层接收到IP数据报后,开始进行转发决策:

  1. 解包与判断:

路由器解包IP报头,发现其中的"目的IP地址"是主机 S 的IP,而不是自己的IP。

这意味着,这个数据包只是"路过"路由器,需要被转发出去,而不是递达给路由器本身。因此,路由器不会继续向上层递交这个数据包。

  1. 查询路由表:

  2. 路由器内部维护着一张路由表,它记录了所有可达的网络地址段,以及通往这些网络的"下一跳"信息和对应的网络接口。

  3. 通过查询路由表,路由器判断出主机 S 的IP地址位于右侧的令牌环网,因此决定将数据包从令牌环网的接口转发出去。

  4. 重新封装:

  5. 路由器不会重新封装IP报头,而是将原有的IP数据报作为有效载荷,交给数据链路层。

  6. 数据链路层使用令牌环网的驱动程序,封装一个新的MAC报头:

  7. 源MAC地址:路由器在右侧令牌环网接口的MAC地址。

  8. 目的MAC地址:主机 S 网卡的MAC地址。

  9. 封装完成后,形成一个新的数据帧,交给物理层的令牌环网网卡。

  10. 发送:路由器的令牌环网网卡将数据帧发送到右侧的令牌环网中。

3. 主机 S:接收并解包数据

右侧令牌环网内的所有主机都会收到这个数据帧。它们在数据链路层解包,比对目的MAC地址。只有主机 S 发现地址匹配,因此会接收并处理这个数据帧:

  1. 主机 S 将数据帧的有效载荷(IP数据报)向上递达给网络层的IP协议。 IP协议解包后,发现目的IP地址正是自己,于是继续将有效载荷向上递达。
  2. 经过传输层、会话层、表示层,最终到达应用层。
  3. 应用层解包,最终提取出"你好"这个原始数据,交付给用户进程。

这样子就完成了一条数据从以太网到令牌环网的传递,要注意一台主机数据传递要另一台主机上面,也能会结果多个路由器的转发。

核心结论:IP层的伟大之处------屏蔽底层差异

在整个跨网传输的过程中,网络层的IP协议扮演了至关重要的角色。

主机 C 在网络层看到的是一个IP报文。

路由器在网络层看到的,还是同一个IP报文。

主机 S 在网络层看到的,依然是同一个IP报文。

无论底层的局域网是以太网、令牌环网还是无线局域网,当数据报文递达到网络层时,所有设备看到的都是统一格式的IP数据报。IP协议完美地屏蔽了底层网络硬件和技术的差异,在逻辑上构建了一个统一的、虚拟的"互联网"。

这就是为什么我们说:一切都是IP报文。

10.IP地址vsMAC地址

对于IP地址和MAC地址,我们可以使用旅游的例子过来搞清楚区别。

想象一下:你现在在浙江,打算坐大巴去贵州旅游,沿途想顺路逛各个省份,而且没有地图,全靠每到一个地方就问当地人"去贵州下一站该往哪走"。

从浙江出发,你问当地人去贵州怎么走,对方告诉你先去江西;到了江西玩完再问路,当地人知道你从浙江来、要去贵州,让你接着去湖南;到了湖南继续问路,当地人告诉你再往西走就到贵州了。最后你顺利抵达贵州,玩完景点,整个旅程完成。

一、IP地址

在我一路上心里一直明确:起点是浙江,终点是贵州,这两个信息从头到尾都没变。

这就对应网络里的 IP地址:

源IP、目的IP 全程固定不变;

作用就是确定通信的起点和终点,帮数据规划整条路径。
IPv4是我们最常用的:

32位(4字节),格式类似 192.168.1.1 ;

用点分十进制,每段范围 0~255;

用来在网络里唯一标识一台主机,靠它选路。
IPv6则是为了解决地址不够用:

128位(16字节),用冒号分隔8组十六进制数;

地址空间更大,能满足海量设备联网。

IP地址是会根据你处的局域网的变化而改变的,IP地址是由当前局域网内的路由器分配的。

二、MAC地址

你每到一个省份,当前所在省份、下一个要去的省份都会不断更换。

这就对应 MAC地址:

  1. 48位(6字节),格式类似 52:54:00:6b:82:56 ;
  2. 源MAC、目的MAC 每经过一个路由节点就会重新封装、不断变化;
  3. 工作在数据链路层,用来标识直连的下一个设备,实现局域网内的精准投递。
    MAC地址的关键特点:

数据包一出局域网,原来的MAC地址就会被路由器替换掉,换成当前网段新的源MAC和目的MAC,继续往下一跳传输。

MAC地址是板变化的,就相当于身份证一样,出产就有了。

相关推荐
czxyvX2 小时前
008-网络层
网络·ip
Kiyra2 小时前
突破实时瓶颈:从零构建高性能 WebSocket 实时通讯架构
网络·人工智能·websocket·网络协议·架构·ai-native
Stestack2 小时前
华三网络模拟器HCL下载安装详解
网络
@atweiwei2 小时前
Tokio 深度解析:Rust 异步运行时与 Go 协程对比指南
服务器·网络·后端·golang·rust·内存·所有权
white-persist2 小时前
【红队渗透】Cobalt Strike(CS)红队详细用法实战手册
java·网络·数据结构·python·算法·安全·web安全
野生工程师3 小时前
【Linux基础】CentOS Stream10详细安装教程
linux·运维·centos
爱装代码的小瓶子3 小时前
【c++与Linux进阶】轻量化进程与虚拟地址和页表
linux·开发语言·c++
liurunlin8883 小时前
Linux系统安装部署Tomcat
linux·运维·tomcat
tingting01193 小时前
linux系统-统计连接数-钉钉告警
linux·数据库·钉钉