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

计算机网络 : 网络基础

计算机网络 : 网络基础

目录

  • 计算机网络 : 网络基础
    • 引言
    • 1. 网络发展背景
    • 2. 初始协议
      • 2.1 初始协议
      • 2.2 协议分层
        • 2.2.1 软件分层的好处
        • 2.2.2 OSI七层模型
        • 2.2.3 TCP/IP五层(四层)模型
      • 2.3 `TCP/IP`协议
        • 2.3.1`TCP/IP`协议与操作系统的关系(宏观)
      • 2.4 网络传输基本流程
        • 2.4.1 局域网网络传输流程(以太网)
        • 2.4.2 数据包封装和分用
        • 2.4.3 跨网络传输流程
    • 3. Socket编程预备
      • 3.1 认识端口号
      • 3.2 传输层的典型代表
      • 3.3 网络字节序
      • 3.4 `socket`编程接口

引言

本博客将系统介绍计算机网络的基础知识,包括网络的发展背景、核心协议(如TCP/IP)、协议分层模型(OSI与TCP/IP)、网络传输流程(局域网与跨网络通信)以及Socket编程的基本概念。无论你是初学者还是希望巩固基础的技术爱好者,都能从这里获得清晰的网络知识框架和实践指导。


1. 网络发展背景

  • 独立模式:计算机之间相互独立

    在这里插入图片描述

  • 网络互联:多台计算机连接在一起,完成数据共享

    在这里插入图片描述

  • 局域网LAN:计算机数量更多了,通过交换机和路由器连接在一起

    在这里插入图片描述

  • 广域网WAN:将远隔千里的计算机都连在了一起

    在这里插入图片描述

  • 所谓局域网和广域网都只是一个相对的概念。

  • 计算机是人的工具,人要协同工作,就注定计算机中网络的产生是必然的。

  • 网络的发展一直都是从局部到整体。而整体记性通信靠的是ip地址,网络中一切皆IP


2. 初始协议

2.1 初始协议

  • 协议是一种约定

  • 举例:

    在这里插入图片描述

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

    思考:只要通信的两台主机约定好协议就可以了吗?如果仅定好协议,但你用频率表示 01,我用强弱表示 01,就好比我用中文,你用葡萄牙语一样,虽然双方可能遵守一套通信规则,但语言不同,即使订好了基本协议,也无法正常通信。

    因此,完善的协议需要更细致的规定,并确保所有参与者都严格遵守。计算机生产厂商众多,操作系统和网络硬件设备也各不相同,如何让不同厂商生产的计算机能够顺畅通信?这就需要业界共同制定一个统一的标准,即 网络协议

  • 通常,具备制定协议或标准资格的组织或公司必须是业界公认的权威机构。

    能定制协议标准的组织或公司主要有以下几类:

    国际标准化组织

    **IEEE(电气和电子工程师协会)**是一个由计算机和工程领域专家组成的庞大技术组织,在通信协议领域贡献突出,制定了全世界电子、电气和计算机科学领域约30%的标准,包括IEEE 802系列标准,涵盖从局域网(LAN)到广域网(WAN)等多种网络技术。

    **ISO(国际标准化组织)**由多个国家的标准化团体组成,以开放系统互连(OSI)模型著称,该模型定义了网络通信的七层协议结构,尽管TCP/IP协议族更常用,但OSI模型在学术和理论研究中仍占重要地位。

    **ITU(国际电信联盟)**是联合国下属的专门机构,负责制定电信领域的国际标准,ITU-T的标准涵盖电话和网络通信,与ISO合作确保全球兼容性和互操作性。

    区域标准化组织

    **ETSI(欧洲电信标准学会)**由欧洲共同体各国政府资助,成员包括电信行业的厂商与研究机构,从事从研究开发到标准制定的工作。

    **ASTAP(亚洲与泛太平洋电信标准化协会)**于1998年由日本与韩国发起成立,旨在加强亚洲与太平洋地区信息通信基础设施及其相互连接的标准化协作。

    公司:某些公司(如泰凌微)自研低功耗蓝牙、Zigbee、Thread及Matter等标准的软件协议栈,并可定制化改动,这是其核心竞争力之一;泰凌微还计划重点发展智能电子价签、智能遥控、智能家居等市场。

    民间国际团体:**IETF(互联网工程师任务组)**是负责开发和推广互联网协议(尤其是TCP/IP协议族)的志愿组织,通过RFC发布新协议或更新旧协议标准。

    官方机构:**FCC(联邦通信委员会)**是美国管理通信技术的官方机构,主要职责是通过对无线电、电视和有线通信的管理保护公众利益,并对通信产品的技术特性(包括标准化)进行审查和监督。

    以上组织或公司均能定制协议标准,以满足特定需求或推动技术发展。


2.2 协议分层

  • 协议本质也是软件,在设计上为了更好的进行模块化,解耦合,因此也是被设计成为层状结构的。
2.2.1 软件分层的好处

在这里插入图片描述

  • 在这个例子中,我们的协议只有两层:语言层和通信设备层。但是实际上的通信协议,设计的会更加复杂,层数会更多。
  • 通过上面的例子,我们就可以理解,分层其实就是为了实现解耦合,让软件维护的成本更低

2.2.2 OSI七层模型
  • OSI(Open System Interconnection,开放系统互连)七层网络模型 称为开放式系统互联参考模型,是一个逻辑上的定义和规范。
  • 把网络从逻辑上分为了7层,每一层都有相关、相对应的物理设备,比如路由器、交换机。
  • OSI七层模型是一种框架性的设计方法,其最主要的功能是帮助不同类型的主机实现数据传输。它的最大优点是将服务、接口和协议这三个概念明确地区分开来,概念清楚,理论也比较完整,通过七个层次化的结构模型使不同的系统、不同的网络之间实现可靠的通讯。
  • 在网络角度,OSI设定的7层协议模型是非常完善的,但是在实际操作的过程中,会话层、表示层是不可能接入到操作系统中的,所以在工程实践中,最终落地的是5层协议。不过由于它既复杂又不实用,所以我们按照TCP/IP四层模型来讲解。

在这里插入图片描述

在这里插入图片描述


2.2.3 TCP/IP五层(四层)模型
  • TCP/IP 是一组协议的代名词,它还包括许多协议,组成了 TCP/IP 协议簇。

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

    • 物理层负责光/电信号的传递方式,比如现在以太网通用的网线(双绞线)、早期以太网采用的同轴电缆(现在主要用于有线电视)、光纤,以及现在的 Wi-Fi 无线网使用的电磁波等都属于物理层的概念。物理层的能力决定了最大传输速率、传输距离、抗干扰性等,集线器(Hub)工作在物理层。
    • 数据链路层负责设备之间的数据帧的传送和识别,例如网卡设备的驱动、帧同步(检测信号以确定新帧的开始)、冲突检测(检测到冲突时自动重发)、数据差错校验等工作,常见的标准包括以太网、令牌环网和无线 LAN,交换机(Switch)工作在数据链路层。
    • 网络层负责地址管理和路由选择,例如在 IP 协议中,通过 IP 地址标识主机,并利用路由表规划数据传输路径,路由器(Router)工作在网络层。
    • 传输层负责两台主机之间的数据传输,如传输控制协议(TCP)确保数据可靠地从源主机发送到目标主机。
    • 应用层负责应用程序间的通信,如简单邮件传输协议(SMTP)、文件传输协议(FTP)、网络远程访问协议(Telnet)等,网络编程主要针对应用层。

在这里插入图片描述

物理层我们考虑的比较少,我们只考虑软件相关的内容,因此很多时候我们直接称为TCP/IP 四层模型。

一般而言

  • 对于一台主机,它的操作系统内核实现了从传输层到物理层的内容;
  • 对于一台路由器,它实现了从网络层到物理层;
  • 对于一台交换机,它实现了从数据链路层到物理层;
  • 对于集线器,它只实现了物理层。

但是并不绝对,很多交换机也实现了网络层的转发;;很多路由器也实现了部分传输层的内容(比如端口转发)。


2.3 TCP/IP协议

  • TCP/IP协议出现的原因就是因为通信主机距离变远了。任何通信特征的变化,一定会带来新的问题,有问题就得解决问题,所以需要新的协议。

    在这里插入图片描述

  • TCP/IP协议的本质就是一种解决方案,TCP/IP协议能分层的前提是因为问题们本身能分层。

2.3.1TCP/IP协议与操作系统的关系(宏观)

在这里插入图片描述

在这里插入图片描述

问题:主机 B 能识别 data,并且准确提取 a=10,b=20,c=30 吗?
回答:答案是肯定的!因为双方都有同样的结构体类型 struct protocol。也就是说,用同样的代码实现协议,用同样的自定义数据类型,天然就具有“共识”,能够识别对方发来的数据,这就是约定。

关于协议的朴素理解:所谓协议,就是通信双方都认识的结构化的数据类型。因为协议栈是分层的,所以每层都有双方共同遵守的协议,同层之间可以互相理解对方的协议。


2.4 网络传输基本流程

2.4.1 局域网网络传输流程(以太网)
  • 两台主机在同一个局域网,是能够直接通信的。

  • 每台主机在局域网上,要有唯一的标识来保证主机的唯一性:mac地址。

  • 认识MAC地址

    • MAC地址用来识别数据链路层中相连的节点。
    • 长度为48位(即6个字节),通常以16进制数字加冒号的形式表示(例如:08:00:27:03:fb:19)。
    • MAC地址在网卡出厂时确定且一般不能修改,通常是唯一的(但虚拟机中的MAC地址并非真实地址可能冲突,部分网卡也支持用户配置MAC地址)。
  • 局域网传输流程图

    在这里插入图片描述

    • 以太网中,任何时刻,只允许一台机器向网络中发送数据(因为以太网本质就是共享资源具有互斥属性);以太网中所有主机都会收到信息(泛洪)。
    • 如果有多台同时发送,会发生数据干扰,我们称之为数据碰撞。
    • 所有发送数据的主机要进行碰撞检测和碰撞避免。
    • 没有交换机的情况下,一个以太网就是一个碰撞域。
    • 局域网通信的过程中,主机对收到的报文确认是否是发给自己的,是通过目标 MAC 地址判定。
  • 同一网段内的两台主机进行发送信息的过程

    在这里插入图片描述

    主机之间的通信:我们必须认识到,本质是两个协议栈在通信。

    而其中每层都有协议,所以当我进行上述流程过程的时候,要进行封装和解包。

    在这里插入图片描述

    接受信息的主机中将网卡和数据链路层切换到混杂模式,就可以接受所有主机发送的信息,而不进行判断是否是发送个自己的。(抓包工具的原理)

    • 概念:

      在这里插入图片描述

      • 报头部分,就是对应协议层的结构体字段,我们一般叫做报头。
      • 除去报头部分,剩下的叫做有效载荷。
      • 报文 = 报头 + 有效载荷
    • 不同层完整报文的叫法

      • 不同的协议层对数据包有不同的称谓,在传输层叫做段(segment);
      • 在网络层叫做数据报(datagram);
      • 在链路层叫做帧(frame);
      • 应用层数据通过协议栈发到网络上时,每层协议都要加上一个数据首部(header),称为封装(Encapsulation)。
      • 首部信息中包含了一些类似于首部有多长、载荷(payload)有多长、上层协议是什么等信息。
      • 数据封装成帧后发到传输介质上,到达目的主机后每层协议再剥掉相应的首部,根据首部中的"上层协议字段"将数据交给对应的上层协议处理。
    • 在这里插入图片描述

    • 结论:

      • 在网络传输的过程中,数据不是直接发送给对方主机的,而是先要自顶向下将数据交付给下层协议进行封装,最后由底层发送,然后由对方主机的底层来进行接受,再自底向上进行向上交付。
      • 自顶向下封装的意义就是必须贯穿到操作系统,贯穿协议栈,OS是硬件(网卡)的管理者。
      • 不考虑应用层协议的情况下,任何协议都满足2点:1.报头必须具有和有效载荷进行分离的能力。2.报头中必须包含,如何将自己的有效载荷,交付给上层的哪一个具体协议。
      • 底层收到报文,会进行判断此报文是否是发送给自己的,如不是数据链路层会直接丢弃。
      • 协议栈:自顶向下封装就是协议栈将报头入栈的过程;自下向上解包分用就是出栈的过程。

2.4.2 数据包封装和分用
  • 数据封装的过程

    在这里插入图片描述

  • 数据分用的过程

    在这里插入图片描述

  • 接下来的协议学习,我们在宏观上都应该建立一个认识:

    1. 要学习的协议,是如何做到解包的?只有明确了解包,封包也就能理解。
    2. 要学习的协议,是如何做到将自己的有效载荷,交付给上层协议的?

2.4.3 跨网络传输流程
  • 网络中的地址管理——认识IP地址

    • IP协议有两个版本,IPV4和IPV6,本作者关于计网的博客,如没做特殊说明,提到的IP协议默认指的是IPV4
    • IP 地址是在 IP 协议中用来标识网络中不同主机的地址;
    • 对于 IPv4 来说,IP 地址是一个 4 字节、32 位的整数;
    • 我们通常也使用"点分十进制"的字符串表示 IP 地址,例如 192.168.0.1,用点分割的每一个数字表示一个字节,范围是 0 - 255。
    • 跨网段的主机的数据传输,数据从一台计算机到另一台计算机传输过程中要经过一个或多个路由器。路由器会根据信息的源IP地址和目的IP地址,选择将信息发送到哪个局域网中,通过一个或多个局域网的交接,最终信息到达目的IP地址的主机。
    • 电脑和路由器我们都可以看成主机。
    • 在这里插入图片描述
  • IP地址的意义

    在这里插入图片描述

    只要有网络层,就会有路由功能。

    然后结合封装与解包,体现路由器解包和重新封装的特点。

    在这里插入图片描述

    • IP地址和Mac地址的区别

      • IP地址在整个路由过程中一直保持不变(目前暂作此说明,后续会修正),而MAC地址则会不断变化。
      • 目的IP地址代表通信的最终目标,是路径选择的主要依据;
      • MAC地址则是下一跳的局部目标,是局域网内数据转发的重要依据。
    • 路由过程中,IP地址不变,Mac地址一直在变,Mac地址只会在本局域网内有效。

    • 网络通信的宏观流程

      在这里插入图片描述

    • 网络层+IP的意义就是:给网络提供了一层虚拟化层,让世界上所有的网络,都叫做IP网络,屏蔽最底层网络的差异。

    • 只要IP地址从技术上说是可以的,但是为什么还要Mac地址呢?因为网络是从局部到整体的,是先有局域网的Mac地址再有广域网的IP地址,如果改成只有IP地址,意味着之前的Mac地址全都要换,没有意义,且只有IP地址会带来数据链路层与网络层的强耦合。


3. Socket编程预备

3.1 认识端口号

  • 首先我们要达成一个共识,数据通过网络传输到主机不是目的,而是手段。到达主机内部,在交给主机内的进程,才是目的。

  • 但是在系统中,同时会存在非常多的进程,当数据到达目的主机之后,怎么转发给目标进程?这就要在网络的背景下,在系统中,表示进程的唯一性了。

  • 在这里插入图片描述

  • 端口号(port)是传输层协议的内容

    • 端口号是一个2字节16位的整数。
    • 端口号用来表示一个进程,告诉操作系统,当前的这个数据要交给哪一个进程来处理。
    • IP地址 + 端口号能够标识网络上的某一台主机的某一个进程。
    • 一个端口号只能被一个进程占用,但是一个进程可能有多个端口号。
    • 在这里插入图片描述
  • 端口号范围划分

    • 0-1023:知名端口号,HTTP、FTP、SSH等这些广为使用的应用层协议,他们的端口号都是固定的。
    • 1024-65535:操作系统动态分配的端口号,客户端程序的端口号,就是由操作系统从这个范围分配的。
  • 理解端口号port和进程pid

    进程pid属于系统概念,技术上也具有唯一性,确实可以用来标识唯一的一个进程,但是不是所有的进程都要进行网络通信,因此不是所有的进程都有端口号。并且如果pid变化了怎么办?归根结底,端口号的出现就是为了对系统和网络进行解耦。

  • 理解源端口号和目的端口号

    传输层协议(TCPUDP)的数据段中有两个端口号,分别叫做源端口号和目的端口号。 就是在描述 “数据是哪个进程发的, 要发给哪个进程”;

  • 理解socket

    • 综上,IP地址用来标识互联网中唯一的一台主机,port用来标识该主机上唯一的一个网络进程。
    • IP+Port就能表示互联网中唯一的一个进程。
    • 所以,通信的时候,本质是两个互联网进程代表人来进行通信,{srcIpsrcPortdstIpdstPort}(源IP,源端口号,目的IP,目的端口号)这样的4元组就能标识互联网中唯二的两个进程。
    • 所以,网络通信的本质,也是进程间通信。
    • 我们把ip+port叫做套接字socket

3.2 传输层的典型代表

  • 如果我们了解了系统,也了解了网络协议栈,我们就会清楚,传输层是属于内核的。那么我们要通过网络协议栈进行通信,必定调用的是传输层提供的系统调用,来进行的网络通信。在这里插入图片描述

  • TCP协议(Transmission Control Protocol 传输控制协议):有传输层协议;有链接;可靠传输;面向字节流。

  • UDP协议(User Datagram Protocol 用户数据报协议):有传输层协议;无连接;不可靠传输;面向数据报。


3.3 网络字节序

  • 我们已经知道,内存中的多字节数据相对于内存地址有大端和小端之分,磁盘文件中的多字节数据相对于文件中的偏移地址也有大端小端之分,网络数据流同样有大端小端之分。那么如何定义网络数据流的地址呢?

    • 发送主机通常将发送缓冲区中的数据按内存地址从低到高的顺序发出
    • 接收主机把从网络上接到的字节依次保存在接收缓冲区中,也是按内存地址从低到高的顺序保存;
    • 因此,网络数据流的地址应这样规定:先发出的数据是低地址,后发出的数据是高地址。
    • TCP/IP协议规定,网络数据流应采用大端字节序,即低地址高字节。
    • 不管这台主机是大端机还是小端机,都会按照这个TCP/IP规定的网络字节序来发送/接收数据;
    • 如果当前发送主机是小端,就需要先将数据转成大端;否则就忽略,直接发送即可。
    • 在这里插入图片描述
  • 为使网络程序具有可移植性,使同样的C代码在大端和小端计算机上编译后都能正常运行,可以调用以下库函数做网络字节序和主机字节序的转换。

    在这里插入图片描述

    • 这些函数名很好记,h表示hostn表示networkl表示32位长整数,s表示16位短整数。
    • 例如htonl表示将32位的长整数从主机字节序转换为网络字节序,例如将IP地址转换后准备发送。
    • 如果主机是小端字节序,这些函数将参数做相应的大小端转换然后返回。
    • 如果主机是大端字节序,这些函数不做转换,将参数原封不动地返回。

3.4 socket编程接口

  • socket常见API

    // 创建 socket 文件描述符 (TCP/UDP, 客户端 + 服务器)
    int socket(int domain, int type, int protocol);
    // 绑定端口号 (TCP/UDP, 服务器)
    int bind(int socket, const struct sockaddr *address,socklen_t address_len);
    // 开始监听 socket (TCP, 服务器)
    int listen(int socket, int backlog);
    // 接收请求 (TCP, 服务器)
    int accept(int socket, struct sockaddr* address,socklen_t* address_len);
    // 建立连接 (TCP, 客户端)
    int connect(int sockfd, const struct sockaddr *addr,socklen_t addrlen);
    
  • sockaddr结构

    Socket API 是一层抽象的网络编程接口,适用于各种底层网络协议,如 IPv4IPv6,以及后面要讲的 UNIX Domain Socket。然而,各种网络协议的地址格式并不相同。

    在这里插入图片描述

    • IPv4IPv6 的地址格式定义在 netinet/in.h 中,IPv4 地址用 sockaddr_in 结构体表示,包括 16 位地址类型、16 位端口号和 32 位 IP 地址。

    • IPv4IPv6 地址类型分别定义为常数 AF_INETAF_INET6。这样,只要取得某种 sockaddr 结构体的首地址,不需要知道具体是哪种类型的 sockaddr 结构体,就可以根据地址类型字段确定结构体中的内容。

    • socket API 可以都用 struct sockaddr *类型表示,在使用的时候需要强制转化成 sockaddr_in;这样的好处是程序的通用性,可以接收 IPv4IPv6,以及 UNIX Domain Socket 各种类型的 sockaddr 结构体指针做为参数。

    • sockaddr结构

      在这里插入图片描述

    • sockaddr_in结构

      在这里插入图片描述

      虽然socket API的接口是sockaddr,但是我们真正在基于IPv4编程时,使用的数据结构是sockaddr_in;这个结构里主要有三部分信息:地址类型、端口号、IP地址。

    • in_addr结构

      在这里插入图片描述

      in_addr结构用来表示一个IPv4的IP地址,其实就是一个32位的整数。

相关文章:

计算机网络 : 网络基础

计算机网络 : 网络基础 目录 计算机网络 : 网络基础引言1. 网络发展背景2. 初始协议2.1 初始协议2.2 协议分层2.2.1 软件分层的好处2.2.2 OSI七层模型2.2.3 TCP/IP五层(四层)模型 2.3 TCP/IP协议2.3.1TCP/IP协议与操作系统的关系&…...

eSwitch manager 简介

eSwitch manager 的定义和作用 eSwitch manager 通常指的是能够配置和管理 eSwitch(嵌入式交换机)的实体或接口。在 NVIDIA/Mellanox 的网络架构中,Physical Function(PF)在 switchdev 模式下充当 eSwitch manager&am…...

物联网技术在银行安全用电系统中的应用与实践研究

摘要 随着金融科技的快速发展,银行业电子设备数量激增,用电安全管理问题日益突出。本文基于2019年农业银行与2020年中国邮政储蓄银行发布的安全用电相关政策,分析了银行场景下存在的五大用电安全隐患,提出以物联网技术为核心的安…...

589. N叉树的前序遍历迭代法:null指针与栈的巧妙配合

一、题目描述 给定一个N叉树的根节点,返回其节点值的前序遍历结果。前序遍历的定义是:先访问根节点,再依次遍历每个子节点(从左到右)。例如,对于如下N叉树: 1/ | \3 2 4 / \ 5 6前序遍历结果…...

【洗车店专用软件】佳易王洗车店多项目会员管理系统:一卡多用扣次软件系统实操教程 #扣次洗车管理软件

一、软件试用版资源文件下载说明 (一)若您想体验软件功能,可通过以下方式获取软件试用版资源文件: 访问头像主页:进入作者头像主页,找到第一篇文章,点击文章最后的卡片按钮,即可了解…...

小红书笔记详情接口如何调用?实操讲解。

调用小红书笔记详情接口通常需要经过申请权限、构建请求、发送请求并处理响应等步骤,以下是详细的实操讲解: 一、申请接口权限 注册小红书开放平台账号 访问小红书开放平台官网/第三方开放平台,按照提示完成注册流程,提供必要的…...

leetcode 57. Insert Interval

题目描述 代码:由于intervals已经按照左端点排序,并且intervals中的区间全部不重叠,那么可以断定intervals中所有区间的右端点也已经是有序的。先二分查找intervals中第一个其右端点>newInterval左端点的区间。然后按照类似于56. Merge In…...

杰理ac696配置mic

省电容mic有概率不出声解决办法如下...

COMSOL随机参数化表面流体流动模拟

基于粗糙度表面的裂隙流研究对于理解地下水的流动、污染物传输以及与之相关的地质灾害(如滑坡)等方面具有重要意义。本研究通过蒙特卡洛方法生成随机表面形貌,并利用COMSOL Multiphysics对随机参数化表面的微尺度流体流动进行模拟。 参数化…...

Linux远程连接服务

远程连接服务器简介 远程连接服务器通过文字或图形接口方式来远程登录系统,让你在远程终端前登录linux主机以取得可操作主机接口(shell),而登录后的操作感觉就像是坐在系统前面一样。 远程连接服务器的功能 分享主机的运算能力 远…...

用Python绘制梦幻星空

用Python绘制梦幻星空 在这篇教程中,我们将学习如何使用Python创建一个美丽的星空场景。我们将使用Python的图形库Pygame和随机库来创建闪烁的星星、流星和月亮,打造一个动态的夜空效果。 项目概述 我们将实现以下功能: 创建深蓝色的夜…...

EWOMAIL

1、错误 Problem: problem with installed package selinux-policy-targeted-3.14.3-41.el8.noarch package fail2ban-server-1.0.2-3.el8.noarch requires (fail2ban-selinux if selinux-policy-targeted), but none of the providers can be installed - package fail2ban-…...

网安面试经(1)

1.说说IPsec VPN 答:IPsec VPN是利用IPsec协议构建的安全虚拟网络。它通过加密技术,在公共网络中创建加密隧道,确保数据传输的保密性、完整性和真实性。常用于企业分支互联和远程办公,能有效防范数据泄露与篡改,但部署…...

【每天一个知识点】意图传播(Intent Propagation)

在人工智能(AI)快速发展的背景下,自然语言处理(NLP)已成为推动智能系统理解与生成自然语言的核心技术。其中,“意图识别”作为人机交互的关键步骤,已被广泛应用于智能客服、对话系统、语音助手等场景。而“意图传播”(Intent Propagation)作为更深层的机制,逐渐成为当…...

【串流VR手势】Pico 4 Ultra Enterprise 在 SteamVR 企业串流中无法识别手势的问题排查与解决过程(Pico4UE串流手势问题)

写在前面的话 此前(用Pico 4U)接入了MRTK3,现项目落地需要部署,发现串流场景中,Pico4UE的企业串流无法正常识别手势。(一体机方式部署使用无问题) 花了半小时解决,怕忘,…...

工具:shell命令提示符自定义之显示GIT当前分支

1 背景 在命令行操作,每次想查看当前分支都要手动执行命令(git branch)太麻烦了,想着在命令提示符上面显示当前分支,很直观也很方便 2 实现 编辑 vim ~/.bashrc 文件,添加如下内容 function update_prom…...

现代计算机图形学Games101入门笔记(十四)

Irradiance 微小的能量/微小的面积 用Irradiance解释能量大小解释冬夏 Intensity没变,但是Irradiance是衰减的,外圈面积变大,单位面积上接受的能量就变小了。 入射进来 离开 这里就是从某个方向来了一个能量,经过反射&#xff0c…...

前端开发笔记与实践

一、Vue 开发规范与响应式机制 1. 组件命名规范 自定义组件使用大驼峰命名法(如 MyComponent),符合 Vue 官方推荐,便于与原生 HTML 元素区分。 2. Proxy vs defineProperty 特性Proxy(Vue3)Object.defi…...

机器学习知识自然语言处理入门

一、引言:当文字遇上数学 —— 自然语言的数字化革命 在自然语言处理(NLP)的世界里,计算机要理解人类语言,首先需要将文字转化为数学向量。早期的 One-Hot 编码如同给每个词语分配一个唯一的 “房间号”,例…...

泰迪杯特等奖案例深度解析:基于多级二值化与CNN回归的车牌识别系统设计

(第八届泰迪杯数据挖掘挑战赛特等奖案例全流程拆解) 一、案例背景与核心挑战 1.1 行业痛点与场景需求 在智慧交通与无感支付场景中,车牌识别是核心环节。传统车牌识别系统在复杂光照、污损车牌、多角度倾斜等场景下存在显著缺陷。根据某智慧油站2024年运营数据显示,高峰期…...

ai agent(智能体)开发 python高级应用5:crawl4ai 如何建立一个全面的知识库 第一步找分类

让我们充分利用爬虫功能建立自己丰富的知识库, 第一步找分类 以下是一个层次分明、覆盖全面的知识库分类体系,分为9大主类、43个子类,并融入交叉学科和新兴领域设计: 一、经济与商业 宏观经济(全球经济/国家政策&a…...

Solon Ai Flow 编排开发框架发布预告(效果预览)

Solon Ai 在推出 Solon Ai Mcp 后,又将推出 Solon Ai Flow。 1、Solon Ai Flow 是个啥? Solon Ai Flow 是一个智能体编排开发框架。它是框架!不是工具,不是产品(这与市面上流行的工具和产品,有较大差别&a…...

【言语】刷题5(填空)

front:刷题5 第一个词排除人迹罕至 人迹罕至:很少有人去的地方。指偏僻荒涼的地方。(荒郊野岭既视感的一个词) 第二个空锁定B,太贴合语义了 第三个空排除一文不值,百无一用,现在这题已经可以过了…...

技术解码 | 腾讯云SRT弱网优化

随着互联网基础设施和硬件设备的不断发展。广大直播观众对于直播观看的清晰度,延时等方面的体验要求越来越高,直播也随之进入了低延迟高码率的时代,直播传输技术也面临着越来越高的要求和挑战。 腾讯视频云为此在全链路上针对流媒体传输不断深…...

“分布形态“

一、分布形态的基础分类 1、正态分布(对称分布) (1)特征:钟型曲线,均值=中位数=众数;约68%数据在μσ范围内,95%在μ2σ内。 (2)应用:身高、体重、测量误差等自然现象。 (3)重要性:多数统计方法(如T检验、方差分析)假设数据正态性。 2、偏态分布 (1)左偏(负…...

Android minSdk从21升级24后SO库异常

问题 minSdk从21调整到24后: java.nio.file.NoSuchFileException: /data/app/~~Z9s2NfuDdclOUwUBLKnk0A/com.rs.unity- Bg31QvFwF4qsCwv2XCqT-w/split_config.arm64_v8a.apkjava.nio.file.NoSuchFileException: /data/app/~~Z9s2NfuDdclOUwUBLKnk0A/com.rs.unity-…...

C#进阶(2)stack(栈)

前言 我们前面介绍了ArrayList,今天就介绍另一种数据结构——栈。 这是栈的基本形式,博主简单画了一下,你看个意思就行,很明显,这种数据有一种特征:先进后出。因为先进来的数据会在下面,下面是密闭的,所以只能取后面进来的。 C#为我们封好了这种数据结构,我们不用担…...

Linux du 命令终极指南:从基础到精通

文章目录 Linux du 命令终极指南:从基础到精通du 命令简介常用参数详解常见用法示例查看当前目录总大小查看当前目录及其子目录占用空间只显示当前目录总占用空间查看目录下每个文件和子目录的大小查看某目录深度为 1 的大小分布查看某目录并排除日志文件查看多个目…...

【Linux网络】数据链路层

数据链路层 用于两个设备(同一种数据链路节点)之间进行传递。 认识以太网 “以太网” 不是一种具体的网络,而是一种技术标准;既包含了数据链路层的内容,也包含了一些物理层的内容。例如:规定了网络拓扑结…...

水库雨水情测报与安全监测系统解决方案

一、方案概述 本水库雨水情测报与安全监测解决方案的核心目标在于利用尖端的技术手段,确保对水库雨水情势以及大坝安全状况的持续监控和及时预警,从而为水库的稳定运行提供坚实的支持和保障。该方案严格遵循“统筹协调、因库制宜、实用有效、信息共享”的…...

Shotcut:免费开源的视频编辑利器

Shotcut是一款功能强大且完全免费的开源视频编辑软件,专为需要高效、灵活视频编辑的用户设计。它支持多种常见视频格式,如MP4、AVI、MOV等,并提供了丰富的视频编辑功能,满足用户在不同场景下的需求。无论是初学者还是专业人士&…...

学习海康VisionMaster之直方图工具

一:进一步学习了 今天学习下VisionMaster中的直方图工具:就是统计在ROI范围内进行灰度级分布的统计 二:开始学习 1:什么是直方图工具? 直方图工具针对输入灰度图像的指定ROI区域,输出该区域的图像灰度直方…...

AI 笔记 -基于retinaface的FPN上采样替换为CARAFE

上采样替换为CARAFE 引言内容感知特征重组(CARAFE)公式化核预测模块 引言 简介:CARAFE(Content-Aware ReAssembly of FEatures),是用于增强卷积神经网络特征图的上采样方法,论文被 ICCV 2019 接…...

Visual Studio 2022 中添加“高级保存选项”及解决编码问题

文章目录 一、背景二、方法方法一:通过菜单栏手动添加(推荐)方法二:通过拖拽快速添加(替代方案) 三、验证与使用四、补充说明五、所能解决的问题 一、背景 VS 在开发cmake项目的过程中,可能会遇…...

SQLMesh 增量模型从入门到精通:5步实现高效数据处理

本文深入解析 SQLMesh 中的增量时间范围模型,介绍其核心原理、配置方法及高级特性。通过实际案例说明如何利用该模型提升数据加载效率,降低计算资源消耗,并提供配置示例与最佳实践建议,帮助读者在实际项目中有效应用这一强大功能。…...

嵌入式开发书籍推荐

嵌入式开发是将计算机技术、微电子技术与各行业应用相结合的综合技术,学习过程中需要多方面知识储备。以下精选书籍,从基础到进阶,助你系统掌握嵌入式开发知识。 基础理论类 《计算机组成原理》(唐朔飞版)&#xff1…...

实变函数 第二章 点集

2 点集 2.1 欧式空间 2.1.1 度量空间、欧式空间 Definition \textbf{Definition} Definition 度量空间 (距离空间) 若 ∀ x , y ∈ X : ∃ d : ( x , y ) → R \forall x,y\in X:\exists d:(x,y)\to\mathbb{R} ∀x,y∈X:∃d:(x,y)→R,满足: d ( x , y…...

国芯思辰| 轮速传感器AH741对标TLE7471应用于汽车车轮速度感应

在汽车应用中,轮速传感器可用于车轮速度感应,为 ABS、ESC 等安全系统提供精确的轮速信息,帮助这些系统更好地发挥作用,在紧急制动或车辆出现不稳定状态时,及时调整车轮的制动力或动力分配。 国芯思辰两线制差分式轮速…...

MySQL中innodb的ACID

一、什么ACID A:原子性,事务是一个不可分割的工作单位,事务中的操作要么全部成功,要么全部失败回滚;C:一致性,事务必须保证数据库从一个一致性的状态变换成另一个一致性的状态,如A给…...

基于对抗性后训练的快速文本到音频生成:stable-audio-open-small 模型论文速读

Fast Text-to-Audio Generation with Adversarial Post-Training 论文解析 一、引言与背景 文本到音频系统的局限性:当前文本到音频生成系统性能虽佳,但推理速度慢(需数秒至数分钟),限制了其在创意领域的应用。 研究…...

java 使用zxing生成条形码(可自定义文字位置、边框样式)

最新工作中遇到生成条形码的需求&#xff0c;经过一番摸索之后找到了zxing这个工具类&#xff0c;实现效果如下&#xff1a; 首先引入依赖&#xff1a; <!-- 条形码生成器 --><dependency><groupId>com.google.zxing</groupId><artifactId&g…...

4.3/Q1,Charls最新文章解读

文章题目&#xff1a;Longitudinal trajectories of disability index and associated factors in Chinese older adults DOI&#xff1a;10.1016/j.jnha.2025.100530 中文标题&#xff1a;中国老年人残疾指数纵向轨迹及相关因素 发表杂志&#xff1a;J Nutr Health Aging 影响…...

CSS- 2.1 实战之图文混排、表格、表单、学校官网一级导航栏

本系列可作为前端学习系列的笔记&#xff0c;代码的运行环境是在HBuilder中&#xff0c;小编会将代码复制下来&#xff0c;大家复制下来就可以练习了&#xff0c;方便大家学习。 HTML系列文章 已经收录在前端专栏&#xff0c;有需要的宝宝们可以点击前端专栏查看&#xff01; 系…...

Android studio 实现弹出表单编辑界面

方法 1&#xff1a;使用 AlertDialog&#xff08;简单表单&#xff09; 适用于简单的表单场景。 1. 创建表单布局&#xff08;XML&#xff09; 在 res/layout 中新建 dialog_form.xml&#xff1a; <?xml version"1.0" encoding"utf-8"?> <L…...

涂色不踩雷:如何优雅解决 LeetCode 栅栏涂色问题

文章目录 摘要描述例子&#xff1a; 题解答案&#xff08;Swift&#xff09;题解代码分析动态规划核心思路初始条件 示例测试及结果示例 1&#xff1a;示例 2&#xff1a;示例 3&#xff1a; 时间复杂度空间复杂度总结实际场景联系 摘要 在用户体验和界面设计中&#xff0c;颜…...

WL-G4048 Multi-Port PCIe 4.0 Switch

系列文章目录 文章目录 系列文章目录《WL-G4048 Multi-Port PCIe 4.0 Switch数据手册》总结一、芯片介绍二、芯片规格介绍&#xff08;一&#xff09;功能指标&#xff08;二&#xff09;管理调试和监控&#xff08;三&#xff09;参考时钟&#xff08;四&#xff09;系统复位 …...

基于Huber函数和最大相关熵的抗差滤波算法

最大熵滤波&#xff08;Maximum Entropy Filtering&#xff09;常用于信号处理中的谱估计和噪声抑制&#xff0c;尤其适用于短数据序列的高分辨率谱分析。 一、最大熵滤波算法原理 核心思想&#xff1a;在满足已知自相关函数约束的条件下&#xff0c;使信号的熵最大化。 数学形…...

力扣-39.组合总和

题目描述 给你一个 无重复元素 的整数数组 candidates 和一个目标整数 target &#xff0c;找出 candidates 中可以使数字和为目标数 target 的 所有 不同组合 &#xff0c;并以列表形式返回。你可以按 任意顺序 返回这些组合。 candidates 中的 同一个 数字可以 无限制重复被…...

医学图像分析中的大规模基准测试与增强迁移学习|文献速递-深度学习医疗AI最新文献

Title 题目 Large-scale benchmarking and boosting transfer learning for medical imageanalysis 医学图像分析中的大规模基准测试与增强迁移学习 01 文献速递介绍 将在大规模摄影数据集&#xff08;如ImageNet&#xff09;上预训练的模型微调至医学图像领域&#xff08…...

深入浅出横向联邦学习、纵向联邦学习、联邦迁移学习

深入浅出解析横向联邦学习&#xff08;Horizontal Federated Learning&#xff09;、纵向联邦学习&#xff08;Vertical Federated Learning&#xff09;和联邦迁移学习&#xff08;Federated Transfer Learning&#xff09; 有多个机构&#xff08;比如几家不同的银行&#x…...