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

Linux网络基础全面解析:从协议分层到局域网通信原理

Linux系列


文章目录

  • Linux系列
  • 前言
  • 一、计算机网络背景
    • 1.1 认识网络
    • 1.2 认识协议
  • 二、网络协议初识
    • 2.1 协议分层
    • 2.2 OSI七层模型
    • 2.3 TCP/IP协议栈
    • 2.4 网络协议栈与OS的关系
    • 2.5 网络协议在网络传输时的作用
  • 三、网络通信
      • 局域网通信的安全隐患与应对
      • 总结


前言

Linux系统部分的学习告一段落,接下来我们将步入Linux网络部分。在本篇文章里,我们会着重介绍网络部分的基础概念,助力大家搭建起初步的知识框架。不过,本文不会对知识点进行深入剖析。


一、计算机网络背景

特别声明:为了让逻辑自洽,以便大家更好理解,下面的故事是编的,大致方向是没错的

1.1 认识网络

我们知道,计算机最初被应用于军事领域,用于处理海量数据。那时,每台计算机都是独立运行的个体。想象一下,在一个军事指挥中心,有情报分析人员要整理数据、审核人员要核对数据准确性、战术研究人员要依据数据开展模拟实验等。这些工作理论上可以同时进行,但由于计算机之间无法传输数据,他们只能依次等待,原本可以并行开展的任务,变成了按顺序逐个执行。这就凸显出问题:当多人需要基于同一份数据协同工作时,数据难以转移成为极大阻碍。正因如此,网络的诞生成为必然,它打通了数据流通的壁垒,让协同作业得以高效实现。

基于上述需求,网络应运而生。起初,计算机之间通过线缆连接,实现信息传输。随着应用场景的拓展,“服务器”的概念诞生。各计算机能够将自身数据上传至服务器,当其他主机有需求时,可直接从服务器将数据拉取到本地。如此,最初的局域网雏形便形成了。

在这里插入图片描述

随着计算机技术的进步,各类实验室开始部署小型计算机网络用于学术研究。然而,不同实验室的网络之间无法直接传输数据,导致学术成果难以高效共享,严重制约了协作效率。

为打破这种信息孤岛,将不同实验室的局域网连接起来实现跨网络传输的需求日益迫切。在历史进程中,各个实验室的子网逐渐互联,这种子网的集联催生出规模更大的网络-------广域网。与此同时,新的问题随之涌现:

  • 地理距离限制:当两个实验室位于不同楼层或楼宇时,会面临信号衰减等
  • 设备定位难题:跨网络传输时,如何精准识别数据该发往哪个实验室的哪台设备

为解决这些问题,能够连接不同子网的路由器、交换机等网络设备应运而生(具体原理后续章节详细解析)。

在这里插入图片描述

1.2 认识协议

协议的本质是一种规则性约定,其诞生旨在解决网络通信中的各类实际问题。数据在网络传输过程中可能面临以下核心挑战:

  • 传输可靠性:如何确认数据是否成功抵达目标主机;
  • 数据处理逻辑:接收方如何解析和处理收到的数据;
  • 路径寻址准确性:如何确保数据按正确路径传输至下一个节点。

通过预先约定“成功标识”“数据接收确认机制”等规则,不仅能降低主机间的通信成本,更能显著提升交互效率。计算机间的通信依赖光信号或电信号,通过频率高低信号强弱来编码二进制信息(0和1)——这正是网络协议的核心价值之一。

协议部分后续的文章我们会详细介绍

二、网络协议初识

2.1 协议分层

接下来我们通过下面示例进一步了解协议:
在这里插入图片描述
日常打电话时,我们是通过接口与电话机交互。电话机依据底层协议,将信息传递给另一部电话机,随后这部电话机再经接口把信息传达给对方用户。从本质上看,这一过程是人与电话的沟通,但在逻辑层面,我们常觉得是人与人、电话与电话在交流。

打电话时,我们开口说的第一声“喂” ,类似于语音层通信中的一次握手。在这个过程中,人们并不在意电话之间遵循的协议,电话也无需理会人与人交流使用的语言(汉语、英语)。这便是协议分层的优势体现:层与层之间低耦合、高内聚,各层专注自身功能,互不干扰 。
网络通信也使用了协议分层思想, 在这个例子中, 我们的协议只有两层,但是实际的网络通信会更加复杂, 需要分更多的层次,为了实现解耦,会在每一层都提供对应的协议,下面我们来学习一下。

2.2 OSI七层模型

``
OSI(国际标准化组织)是网络协议制定领域极具权威性的机构,网络分层标准由其制定。基于网络分层需求,OSI构建了七层网络模型,自下而上依次为物理层、数据链路层、网络层、传输层、会话层、表示层、应用层 。

在这里插入图片描述

2.3 TCP/IP协议栈

由于部分层次的功能复杂庞大,难以完全融入操作系统,在工程实践中,网络协议的分层结构最终被简化为五层,即物理层、数据链路层、网络层、传输层和应用层,会话层与表示层未被直接纳入协议架构。不过,在代码编写过程中,开发者会发现,尽管这两层未在底层协议中明确体现,但在实际编程实现中是不可或缺的。通常,会话层与表示层的功能并非由操作系统内核实现,而是由上层应用程序来完成 。

在操作系统里,网络层和传输层是尤为关键的两层协议。传输层中最具代表性的协议是TCP(传输控制协议),网络层中则是IP(网际协议) 。

物理层:负责光/电信号的传输方式。像常见的以太网网线、光纤,以及如今WiFi无线网借助的电磁波等,都属于物理层范畴。 它决定了网络的最大传输速率、传输距离和抗干扰能力等。集线器(Hub)就工作在这一层。

数据链路层:主要处理设备间数据帧的传送与识别。涵盖网卡驱动、冲突检测。存在以太网、令牌环网、无线LAN等标准。交换机(Switch)工作于此层。

网络层:承担地址管理和路由选择任务。以IP协议为例,用IP地址标识主机,通过路由表规划主机间数据传输路径(路由)。路由器(Router)工作在网络层。

传输层:负责实现两台主机间的数据传输。比如传输控制协议(TCP),能保障数据从源主机可靠发至目标主机。

应用层:负责应用程序之间的通信,像简单电子邮件传输、文件传输协议等。网络编程很多时候针对的就是应用层。

2.4 网络协议栈与OS的关系

在之前我们学习了,Linux系统部分的知识,而今天我们把网络协议栈也有了大致了解,那么这两个又存在什么样的对应关系呢?

在这里插入图片描述
在整个协议栈体系中,网络层与传输层的核心功能均由操作系统内核实现(即内置在操作系统底层架构中),当主机A通过网络向主机B发送数据时,本质上是用户A与用户B通过网络进行通信。在此过程中,数据必须通过网卡才能发送至网络,而用户无法直接访问硬件设备,因此数据需在协议栈中逐层传递,这一过程会贯穿整个网络协议栈。同理,用户B若想获取A发送的数据,必须由网卡接收数据,再经过逐层解析与转换,最终才能获取数据。所以网络通信的本质就是在访问硬件!!
但是我们的数据要想贯穿协议栈就必须访问操作系统,而操作系统又不允许用户直接访问操作系统,所以, 我们对应的系统在网络层就必须给我们提供系统调用!!! 而开发者根据系统调用, 就能开发出各种各样的应用协议。

2.5 网络协议在网络传输时的作用

我们已经了解到,在网络协议栈的分层结构中,每一层都有对应的协议,而协议的核心作用是解决网络通信中的各类问题。接下来,我们通过一个的例子来模拟网络通信过程,直观呈现协议所发挥的关键作用:
在这里插入图片描述
每一层,具有下滑线的为该层的有效载荷,新添加的为报头,报文=报头+有效载荷
当客户A在给服务器发送“你好”请求时,该数据需要贯穿协议栈到达网卡进入网络,为了保证数据安全高效的传递,在网络协议栈的每一层,我们都会给该数据添加一些报头(专业名词),如:应用层:添加软件版本号、传输层:添加数据序号(防止传输过程中,数据紊乱)等。当接收方收到数据后,会对该报文逐层解包,并将解包后的报文再次传递给上层,在通信双方看来,各自都是在和对方对应的网络层直接通信,并不关心他的上一层,或下一层具体做了什么事。

在网络协议栈的分层结构中,每一层添加的报头本质上多为结构体对象。由于不同主机遵循同一协议标准,共享相同的结构体定义,因此接收方能够识别发送方添加的报文格式,并完成解析工作。这一机制确保了异构设备在网络中实现标准化通信。

我们还能发现, 当我们的数据包到达目标主机的时候, 从底向上的交付的过程, 其实就是去掉报头的过程。 我们把它, 叫做解包, 而通信的过程, 本身就是做不断地封装和解包的过程!
此处示例为方便理解每层只展示了一个协议,但实时上同一层存在许多协议
为此我们还需要知道下面两个实现思想:
第一个问题
若直接将碗中水倒入水桶则无法分离,但若用瓶子装水再放入水桶,取瓶即可分离。
类比协议:每层协议封装时需用报头(如瓶身)标记载荷边界,便于接收方逐层解包(如取瓶倒水),实现报头与载荷分离。

第二个问题
瓶身若标注“饮用”(类似报头信息),水桶管理者会将瓶中水分给“饮用水区”而非“浇花区”。
类比协议:报头需标明载荷归属的上层协议,确保数据精准分发给对应模块,即“分用能力”。

总结:
1、任何协议都必须提供,一种将报文和有效载荷分离的能力。
2、任何协议都要在报头中提供,决定将自己的有效载荷交付给上层哪个协议的能力。

三、网络通信

接下来我们以,以太网通信(局域网)为例,具体介绍
在这里插入图片描述

这是一间教室,老师正在给同学们上课。班级里有很多学生,其中有两位同学分别叫张三和李四。

当老师说“张三,站起来,你作业写没写”时,全班同学都听到了这句话,但只有张三会站起来。为什么李四没有反应?因为同学们在听到老师的“报文”后,会提取其中的关键信息——老师喊的是“张三”而非自己的名字,因此判断该消息与己无关,便将其“丢弃”了。

随后,张三回答:“老师,我交给您了,您忘记了。”这时全班同学又都听到了这句话,但其他同学(如李四)不会回应,因为他们意识到这是张三与老师之间的对话,并非针对自己。于是,其他同学再次将这条消息“丢弃”,只有老师会处理并回应张三的回答。

在这个场景中,老师和张三都认为彼此在直接沟通,但实际上全班同学都接收到了通信内容。只不过其他同学通过“提取报文中的目标标识”(如名字),判断自己并非接收方,从而忽略了消息。这种“一对多广播发送,但接收方仅处理目标为自己的消息”的模式,正是局域网(如以太网)的通信原理——数据在局域网中广播传输,每个设备通过解析报头中的目标地址(类似“名字”),决定是否处理该数据。在主机间通信时每个主机都已Mac地址作为自己的名字,该地址存在于数据链路层的报文中。
在这里插入图片描述
当主机H1向主机H10发送数据时,数据会以帧的形式通过以太网进行传播。在此过程中,H2、H3、H4等局域网内的所有主机都会接收到该帧,并对其进行解包处理。这些主机会首先检查帧头部中的目标MAC地址,发现该地址并非自己的MAC地址后,便会将整个帧丢弃。而H10主机在接收到该帧后,同样会对帧头部进行检查,当其发现目标MAC地址与自己的MAC地址相匹配时,就会将该帧的数据部分向上传递至网络层,随后再逐层进行解包处理,最终将数据交付给对应的应用程序。这就是以太网中主机的通信原理。

在局域网环境中,多台主机同时发送消息时,可能会引发数据碰撞问题在以太网中,当光电信号发生碰撞时,波形会紊乱,导致信息混乱。若想干扰局域网正常通信,一种简单的方式是持续向网络中发送垃圾信息,使其与正常信息频繁碰撞。

为解决这一问题,发送数据的主机需执行碰撞避免算法(由以太网驱动程序实现)。其核心原理是:当检测到碰撞发生时,主机暂停发送并随机延迟一段时间后重新尝试,通过“错峰发送”降低再次碰撞的概率。

局域网通信的安全隐患与应对

  1. 数据明文(裸漏、不加保护)传输风险
    当主机H1向H10发送数据时,信息会以明文形式在局域网中传播。理论上,其他主机(如H2)虽默认会丢弃非目标帧,但通过将网卡设置为混杂模式(非正常工作模式),可强制接收并解析所有流经的数据帧。此时,若数据未加密,H2等主机便可窃取并读取通信内容。

  2. 数据加密的重要性
    应对上述风险的有效手段是上层数据加密。例如,在应用层对数据进行加密处理后,再将密文传递给下层协议栈。即使数据在局域网中被截获,攻击者也难以破解加密后的内容。反之,若数据全程以明文形式传输(未加密),则存在极高的信息泄露风险。

总结

局域网的碰撞问题可通过驱动层的算法优化缓解,而通信安全的核心在于数据加密——通过上层协议对数据“加密保护”,即使我们的数据被非法窃取,也不会出现安全风险。

相关文章:

Linux网络基础全面解析:从协议分层到局域网通信原理

Linux系列 文章目录 Linux系列前言一、计算机网络背景1.1 认识网络1.2 认识协议 二、网络协议初识2.1 协议分层2.2 OSI七层模型2.3 TCP/IP协议栈2.4 网络协议栈与OS的关系2.5 网络协议在网络传输时的作用 三、网络通信局域网通信的安全隐患与应对总结 前言 Linux系统部分的学习…...

第二篇:服务与需求——让用户找到并预订服务

目录 1 服务类目与项目管理:飞书多维表格为管理中心,微搭小程序展示1.1 需求分析1.2 数据模型:微搭中的服务分类与服务项目(用于小程序展示)1.3 数据模型:多维表格中的服务分类与服务项目 总结 我们已经用了…...

【AI News | 20250520】每日AI进展

AI Repos 1、nanoDeepResearch nanoDeepResearch 是一个受 ByteDance 的 DeerFlow 项目启发,旨在从零开始构建深度研究代理的后端项目。它不依赖 LangGraph 等现有框架,通过实现一个 ReAct 代理和状态机来模拟 Deep Research 的工作流程。项目主要包含规…...

Spark Core基础与源码剖析全景手册

Spark Core基础与源码剖析全景手册 Spark作为大数据领域的明星计算引擎,其核心原理、源码实现与调优方法一直是面试和实战中的高频考点。本文将系统梳理Spark Core与Hadoop生态的关系、经典案例、聚合与分区优化、算子底层原理、集群架构和源码剖析,结合…...

抖音视频如何下载保存?高清无水印一键保存到手机!

你是不是经常在抖音上刷到超有趣的短视频,想保存下来却不知道怎么做?或者下载后发现带有烦人的水印?别担心!今天教你最简单、最快速的抖音视频下载方法,无水印、高清画质,轻松搞定! 为什么要下…...

SCAU--平衡树

3 平衡树 Time Limit:1000MS Memory Limit:65535K 题型: 编程题 语言: G;GCC;VC;JAVA;PYTHON 描述 平衡树并不是平衡二叉排序树。 这里的平衡指的是左右子树的权值和差距尽可能的小。 给出n个结点二叉树的中序序列w[1],w[2],…,w[n],请构造平衡树&#xff0c…...

图的几种存储方法比较:二维矩阵、邻接表与链式前向星

图是一种非常重要的非线性数据结构,广泛应用于社交网络、路径规划、网络拓扑等领域。在计算机中表示和存储图结构有多种方法,本文将详细分析三种常见的存储方式:二维矩阵(邻接矩阵)、邻接表和链式前向星,比…...

【AS32X601驱动系列教程】MCU启动详解

在嵌入式开发领域,掌握MCU(微控制单元)的启动流程是工程师们迈向深入开发的关键一步。本文将带您深入了解MCU启动的奥秘,从编译过程到启动文件,再到链接脚本和系统时钟配置,全方位解析MCU启动流程。 在实际…...

计算机视觉与深度学习 | Matlab实现EMD-GWO-SVR、EMD-SVR、GWO-SVR、SVR时间序列预测(完整源码和数据)

以下是一个完整的Matlab时间序列预测实现方案,包含EMD-GWO-SVR、EMD-SVR、GWO-SVR和SVR四种方法的对比。代码包含数据生成、信号分解、优化算法和预测模型实现。 %% 主程序:时间序列预测对比实验 clc; clear; clearvars; close all;% 生成模拟时间序列数据 rng(1); % 固定随…...

Visual Studio 2022 插件推荐

Visual Studio 2022 插件推荐 Visual Studio 2022 (简称 VS2022) 是一款强大的 IDE,适合各类系统组件、框架和应用的开发。插件是接入 VS2022 最重要的扩展方式之一,它们可以大幅提升开发效率、优化代码质量,并提供强大的调试和分析功能。 …...

[luogu12541] [APIO2025] Hack! - 交互 - 构造 - 数论 - BSGS

传送门:https://www.luogu.com.cn/problem/P12541 题目大意:有一个数 n n n,你不知道是多少;你每次可以向交互库询问一个正整数集合 A A A(其中元素互不相同),交互库返回:将集合中…...

openjdk底层(hotspot)汇编指令调用(五)——内存访问

根据前面关于aarch64架构下的编码解释可知,在src\hotspot\cpu\架构文件夹下, assembler_xx.hpp assembler_xx.cpp register_xx.hpp register_xx.cpp register_definitions_xx.cpp这些文件是有关寄存器定义以及汇编编码函数实现的文件。 对于前述的ope…...

几款常用的虚拟串口模拟器

几款常用的虚拟串口模拟器(Virtual Serial Port Emulator),适用于 Windows 系统,可用于开发和调试串口通信应用: 1. com0com (开源免费) 特点: 完全开源免费,无功能限制。 可创建多个虚拟串口…...

ChimeraX介绍

UCSF ChimeraX 是一款由美国加州大学旧金山分校(UCSF)开发的下一代分子可视化软件,是经典的 UCSF Chimera 的继任者。它集成了强大的分子结构可视化、分析、建模和动画功能,广泛应用于结构生物学、药物设计、分子建模等领域。 1. 下载安装: Download UCSF ChimeraX 2. …...

【Linux】初见,基础指令

前言 本文将讲解Linux中最基础的东西-----指令,带大家了解一下Linux中有哪些基础指令,分别有什么作用。 本文中的指令和选项并不全,只介绍较为常用的 pwd指令 语法:pwd 功能:显示当前所在位置(路径&#xf…...

链表的面试题8之环形链表

许久不见,那么这是最后倒数第三题了,这道题我们来看一下环形链表。 老规矩贴链接:141. 环形链表 - 力扣(LeetCode) 目录 倒数第k个元素 获取中间元素的问题。 双指针 来,大致看一下题目,这…...

OBS Studio:windows免费开源的直播与录屏软件

OBS Studio是一款免费、开源且跨平台的直播与录屏软件。其支持 Windows、macOS 和 Linux。OBS适用于,有直播需求的人群或录屏需求的人群。 Stars 数64,323Forks 数8413 主要特点 推流:OBS Studio 支持将视频实时推流至多个平台,如 YouTube、…...

邂逅Node.js

首先先要来学习一下nodejs的基础(和后端开发有联系的) 再然后的学习路线是学习npm,yarn,cnpm,npx,pnpm等包管理工具 然后进行模块化的使用,再去学习webpack和git(版本控制工具&…...

React 常见的陷阱之(如异步访问事件对象)

文章目录 前言1. 异步访问事件对象问题解决方案 2. 事件传播的误解**问题**解决方案 **3. 事件监听器未正确卸载****问题****解决方案** **4. 动态列表中的事件绑定****问题****解决方案** **5. 第三方库与 React 事件冲突****问题****解决方案** **6. 表单输入与受控组件****问…...

【LinkedList demo 内部类讲说】

LinkedList demo 内部类讲说 1. Node节点2.MyLinkedList3. LinkedListTest 测试类 1. Node节点 public class Node<T> {private Node<T> pre;private Node<T> next;private T data;public Node() {}public Node getPre() {return pre;}public void setPre(N…...

Sql刷题日志(day9)

一、笔试 1、limit offset&#xff1a;分页查询 SELECT column1, column2, ... FROM table_name LIMIT number_of_rows OFFSET start_row; --跳过前 start_row 行&#xff0c;返回接下来的 number_of_rows 行。 2、lag、lead&#xff1a;查询前后行数据 --lag函数用于访问当…...

46 python pandas

Pandas是Python数据分析的利器,也是各种数据建模的标准工具 一、什么是pandas pandas 是 Python 中用于数据处理和分析的核心库,提供了高效的数据结构(如Series和DataFrame)和数据操作工具,广泛应用于数据清洗、分析、可视化等场景。 最常用的是用来处理excel数据。 二…...

告别延迟!Ethernetip转modbustcp网关在熔炼车间监控的极速时代

熔炼车间热火朝天&#xff0c;巨大的热风炉发出隆隆的轰鸣声&#xff0c;我作为一名技术操控工&#xff0c;正密切关注着监控系统上跳动的各项参数。这套基于EtherNET/ip的监控系统&#xff0c;是我们车间数字化改造的核心&#xff0c;它将原本分散的控制单元整合在一起&#x…...

Prompt Tuning:高效微调大模型的新利器

Prompt Tuning(提示调优)是什么 Prompt Tuning(提示调优) 是大模型参数高效微调(Parameter-Efficient Fine-Tuning, PEFT)的重要技术之一,其核心思想是通过优化 连续的提示向量(而非整个模型参数)来适配特定任务。以下是关于 Prompt Tuning 的详细解析: 一、核心概念…...

⼆叉搜索树详解

1. ⼆叉搜索树的概念 ⼆叉搜索树⼜称⼆叉排序树&#xff0c;它或者是⼀棵空树&#xff0c;或者是具有以下性质的⼆叉树: • 若它的左⼦树不为空&#xff0c;则左⼦树上所有结点的值都⼩于等于根结点的值 • 若它的右⼦树不为空&#xff0c;则右⼦树上所有结点的值都⼤于等于根结…...

CompleteableFuture的异步任务编排

为什么会有CompleteableFuture Java 的 1.5 版本引入了 Future&#xff0c;可以把它简单的理解为运算结果的占位符&#xff0c; 它提供了两个方法来获取运算结果。 get()&#xff1a;调用该方法线程将会无限期等待运算结果。get(longmeout, TimeUnit unit)&#xff1a;调用该…...

珈和科技贺李德仁院士荣膺国际数字地球学会会士:以时空智能赋能可持续发展目标 绘就数字地球未来蓝图

4月22日&#xff0c;第十四届国际数字地球会议在重庆盛大启幕。在这场在全球范围内数字地球领域具有国际影响力的学术盛会上&#xff0c;国际数字地球学会向珈和科技的企业顾问&#xff0c;2023年度国家最高科学技术奖得主李德仁院士授予了“国际数字地球学会会士”最高荣誉称号…...

【CodeBuddy 】从0到1,打造一个“牛马打鸡血仪”

【CodeBuddy 】从0到1&#xff0c;打造一个“牛马打鸡血仪” 我正在参加CodeBuddy「首席试玩官」内容创作大赛&#xff0c;本文所使用的 CodeBuddy 免费下载链接&#xff1a;腾讯云代码助手 CodeBuddy - AI 时代的智能编程伙伴 &#x1f31f;嗨&#xff0c;我是LucianaiB&#…...

BI是什么意思?一文讲清BI的概念与应用!

目录 一、BI 是什么意思 1. BI 的定义 2. BI 的发展历程 3. BI 的核心组件 二、BI 的应用场景 1. 销售与市场营销 2. 财务管理 ​编辑3. 人力资源管理 4. 生产与运营管理 ​编辑三、选择合适的 BI 工具 1. 考虑企业的需求和规模 2. 评估工具的功能和性能 3. 关注工…...

可编辑PPT | 华为安全架构设计方法指南华为数字化转型架构解决方案

这份文档是华为的安全架构设计方法指南&#xff0c;它详细介绍了安全架构设计的重要性、方法和流程。文档强调安全架构是软件研发技术体系中的关键DFX能力&#xff0c;与可靠性、性能等并列&#xff0c;尤其在云计算和复杂网络环境下&#xff0c;安全性设计显得尤为重要。华为的…...

1.6 提示词工程(二)

目录 3.2 提供参考文本 3.2.1 使用参考文本来构建答案​ 3.2.2 指导模型用引用的文本回答问题​ 3.3 把复杂的任务拆分成简单的子任务​ 3.3.1 利用意图分类确定与用户查询最相关的指令​ 3.3.2 针对需要长时间对话的应用程序&#xff0c;应概括或过滤之前的对话内容​ …...

WIFI信号状态信息 CSI 深度学习之数据集

Building occupant activity sensing dataset based on WIFI CSI&#xff08;WiSA&#xff09; 所有的数据以及实验参数都上传到了figshare中并配备详细说明&#xff0c;供参考。 论文链接&#xff1a;WiSA: Privacy-enhanced WiFi-based activity intensity recognition in …...

基于服务器的 DPI 深度分析解决方案

一、传统网络流量分析的瓶颈与挑战 在企业网络管理体系中&#xff0c;传统流量分析模式高度依赖网络设备作为数据采集核心节点&#xff0c;无论是基于 NetFlow/IPFIX 等流协议的流量分析&#xff0c;还是通过端口镜像技术实现的流量监控&#xff0c;均以交换机、路由器等网络设…...

动态规划(5):线性动态规划

引言 所谓线性动态规划,通常指状态定义和转移具有线性结构的动态规划问题,其状态通常可以用一维数组表示,状态转移主要依赖于相邻或前面有限个状态。这类问题的特点是状态空间呈线性排列,每个状态只与有限个前置状态相关,使得问题结构相对简单,更容易理解和掌握。 一维…...

c语言- 如何构建CMake项目(Linux/VSCode)

目录 linux&#xff08;vscode&#xff09;构建C语言CMake项目 1. 检查linux是否下载cmake&#xff0c;否则执行下列代码 2. 在vscode下载cmake的插件CMake Tools 3. 构建项目&#xff08;项目结构&#xff09; 4. 进行cmake配置 1. 在VS Code中按下ctrl shift p键&…...

HJ17 坐标移动【牛客网】

文章目录 零、原题链接一、题目描述二、测试用例三、解题思路四、参考代码 零、原题链接 HJ17 坐标移动 一、题目描述 二、测试用例 三、解题思路 基本思路&#xff1a;   这题的难点在于理解题目和如何处理各种情况。题目是给定一串指令&#xff0c;首先要判断指令是否合法…...

HGHAC集群滚动扩展或更换硬盘设备

文章目录 环境文档用途详细信息 环境 系统平台&#xff1a;N/A 版本&#xff1a;4.5.8 文档用途 集群版本&#xff1a;hghac4.2.1 数据库版本&#xff1a;hgdb-see-4.5.8 此步骤适用于所有hac架构的hgdb集群。 主要用途&#xff1a;HAC集群服务器滚动扩展或更换硬盘 本文…...

虚拟环境中VSCode运行jupyter文件

用VS Code打开jupyter文件&#xff0c;点击右上角 Select Kernel 在正上方会出现这个选择框&#xff0c;选择 Python Environment 会出来所有的虚拟环境&#xff0c;选择要用的环境行...

【蓝桥杯嵌入式】【模块】六、PWM相关配置及代码模板

1. 前言 最近在准备16届的蓝桥杯嵌入式赛道的国赛&#xff0c;打算出一个系列的博客&#xff0c;记录STM32G431RBT6这块比赛用板上所有模块可能涉及到的所有考点&#xff0c;如果有错误或者遗漏欢迎各位大佬斧正。 本系列博客会分为以下两大类&#xff1a; 1.1. 单独模块的讲…...

力扣-盛最多水的容器

1.题目描述 2.题目链接 11. 盛最多水的容器 - 力扣&#xff08;LeetCode&#xff09; 3.题目解析 题目中的储水量两边差*短边高度。也就是说&#xff0c;两条边中&#xff0c;决定储水量的是短边的高度。 我们可以定义两个指针&#xff0c;一个在最左边&#xff0c;一个在…...

数据实时同步:inotify + rsync 实现数据实时同步

1 数据实时同步 在生产环境中&#xff0c;某些场景下&#xff0c;要将数据或文件进行实时同步&#xff0c;保证数据更新后其它节点能立即获得最新的数据。 数据同步的两种方式 PULL&#xff1a;拉&#xff0c;使用定时任务的方式配合同步命令或脚本等&#xff0c;从指定服务…...

C#学习第24天:程序集和部署

程序集知识点 1.程序集的基本概念 程序集是部署和版本控制的最小单位。它可以是可执行文件&#xff08;.exe&#xff09;或动态链接库&#xff08;.dll&#xff09;。包含元数据和清单&#xff08;Manifest&#xff09;&#xff0c;描述程序集的内容和依赖关系。 2.程序集清单…...

mac .zshrc:1: command not found: 0 解决方案

nano ~/.zshrc 使用自带的nano命令打开文件&#xff0c;修改后 Ctrl X 然后输入y 然后回车即可保存成功 一般情况下&#xff0c;不是常用这个命令&#xff0c;除非是遇到有问题的文件&#xff0c;才用&#xff0c; 例如 遇到下面的问题 /Users/xxli/.zshrc:1: command no…...

学习设计模式《十》——代理模式

一、基础概念 代理模式的本质【控制对象访问】&#xff1b; 代理模式的定义&#xff1a;为其他对象提供一种代理以控制对这个对象的访问&#xff1b; 代理模式的功能&#xff1a;代理模式是通过创建一个代理对象&#xff0c;用这个代理对象去代表真实的对象&#xff1b;客户端得…...

RestFul操作ElasticSearch:索引与文档全攻略

RestFul方式操作ES 索引库操作 创建索引库 PUT /索引库名称 {"mappings":{"properties":{"字段名":{"type":"字段类型","analyzer":"分词器","index":"是否参与搜索(布尔值)"},…...

OpenCV 图像读取与显示

一、知识点: 1、读取图像 (1)、Mat imread( const String & filename, int flags IMREAD_COLOR_BGR ); (2)、返回值: Mat&#xff0c;返回读取的图像。 若读取图像失败&#xff0c;则返回一个空的对象&#xff0c;对象.empty()为true。 (3)、参数filename: String是…...

Django快速入门篇

Django官网 https://docs.djangoproject.com/zh-hans/4.2/ 官方介绍 官方版本 推荐LTS版本&#xff0c;python3.9/3.10 djongo 每两年会出一个LTS版本 关于环节djongo&#xff0c;conda直接安装即可 conda create -n myenv python3.9 conda activate myenv pip install dj…...

C++23 新增扁平化关联容器详解

文章目录 一、引言已有关联容器回顾新容器的引入原因 二、std::flat_set定义与特性代码示例适用场景 三、std::flat_multiset定义与特性代码示例适用场景 四、std::flat_map定义与特性代码示例适用场景 五、std::flat_multimap定义与特性代码示例适用场景 六、与其他容器的比较…...

当PLC遇上电焊机器人:EtherCAT转CANopen上演工业级“语言翻译官”

在汽车自动化产线中&#xff0c;PLC与电焊机器人的高效协同是提升生产效率的关键。但PLC常用的EtherCAT协议与电焊机器人采用的CANopen协议存在通信壁垒&#xff0c;JH-ECT009疆鸿智能EtherCAT转CANopen技术成为打破这一障碍的核心方案。 应用拓扑图 EtherCAT是高速工业以太网协…...

LeetCode 1345. 跳跃游戏 IV(困难)

题目描述 给你一个整数数组 arr &#xff0c;你一开始在数组的第一个元素处&#xff08;下标为 0&#xff09;。 每一步&#xff0c;你可以从下标 i 跳到下标 i 1 、i - 1 或者 j &#xff1a; i 1 需满足&#xff1a;i 1 < arr.lengthi - 1 需满足&#xff1a;i - 1 …...