【Linux网络编程】网络基础 | Socket 编程基础

在这里插入图片描述

🌈个人主页: 南桥几晴秋
🌈C++专栏: 南桥谈C++
🌈C语言专栏: C语言学习系列
🌈Linux学习专栏: 南桥谈Linux
🌈数据结构学习专栏: 数据结构杂谈
🌈数据库学习专栏: 南桥谈MySQL
🌈Qt学习专栏: 南桥谈Qt
🌈菜鸡代码练习: 练习随想记录
🌈git学习: 南桥谈Git

🌈🌈🌈🌈🌈🌈🌈🌈🌈🌈🌈🌈🌈🌈🌈🌈🌈🌈🌈🌈🌈🌈🌈🌈🌈🌈🌈
本科在读菜鸡一枚,指出问题及时改正

文章目录

  • 初识协议
    • 概述
    • 协议分层
    • OSI 七层模型
    • TCP/IP 五层(或四层)模型
  • 再识协议
    • 为什么要有 TCP/IP 协议?
    • 什么是 TCP/IP 协议?
  • 网络传输基本流程
    • 局域网(以太网为例)通信原理
      • MAC地址
      • 数据包封装和分用
    • 跨网络传输流程图
      • IP地址的意义
  • Socket 编程预备
    • 理解源 IP 地址和目的 IP 地址
    • 端口号
    • 理解socket
    • 传输层的典型代表
    • 网络字节序
    • sockadder结构

初识协议

概述

“协议” 是一种约定。

在这里插入图片描述

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

只要通信的两台主机, 约定好协议就可以了么?
定好协议, 但是你用频率表示 01, 我用强弱表示 01, 就好比我用中国话, 你用葡萄牙语一样, 虽然大家可能遵守的一套通信规则, 但是语言不同, 即是订好了基本的协议, 也是无法正常通信的

所以, 完善的协议, 需要更多更细致的规定, 并让参与的人都要遵守。

一般具有定制协议或者标准的资格的组织或者公司都必须是业界公认或者具有江湖地
位的组织或者公司, 下面是文心一言生成的标准制定组织, 大家看一下就可以。

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

  1. 国际标准化组织:
    ○ IEEE(电气和电子工程师协会) : 这是一个由计算机和工程领域专家组成的庞大技术组织, 在通信协议领域贡献突出。 IEEE 制定了全世界电子、 电气和计算机科学领域 30%左右的标准, 包括 IEEE 802 系列标准, 这些标准涵盖了从局域网(LAN) 到广域网(WAN) 等多种网络技术。
    ○ ISO(国际标准化组织) : ISO 是由多个国家的标准化团体组成的国际组织, 它在开放系统互连(OSI) 模型方面的工作尤为著名。 OSI 模型定义了网络通信的七层协议结构, 尽管在实际应用中, TCP/IP 协议族更为普遍, 但 OSI 模型仍然在学术和理论研究中占有重要地位。
    ○ ITU(国际电信联盟) : ITU 是联合国下属的专门机构, 负责制定电信领域的国际标准。 ITU-T 制定的标准涵盖了电话和网络通信, 与 ISO 合作确保了通信
    技术的全球兼容性和互操作性。

  2. 区域标准化组织:
    ○ ETSI(欧洲电信标准学会) : 由欧洲共同体各国政府资助, 是一个由电信
    行业的厂商与研究机构参加并从事研究开发到标准制定的组织。
    ○ ASTAP(亚洲与泛太平洋电信标准化协会) : 1998 年由日本与韩国发起成
    立的标准化组织, 旨在加强亚洲与太平洋地区各国信息通信基础设施及其相互连
    接的标准化工作的协作。

  3. 公司:
    ○ 某些公司, 如泰凌微, 也自研各种标准的软件协议栈, 包括低功耗蓝牙、zigbee、 thread 及 Matter 等, 并可进行定制化改动, 这是其核心竞争力之一。 泰凌微还计划重点发展智能电子价签、 智能遥控、 智能家居等市场。

  4. 民间国际团体:
    ○ IETF(互联网工程师任务组) : 这是一个负责开发和推广互联网协议(特别
    是构成 TCP/IP 协议族的协议) 的志愿组织, 通过 RFC 发布新的或者取代老的协议标准。

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

协议分层

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

在这里插入图片描述

分层可以实现解耦合, 让软件维护的成本更低。

OSI 七层模型

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

在这里插入图片描述
在这里插入图片描述

TCP/IP 五层(或四层)模型

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

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

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

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

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

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

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

在这里插入图片描述

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

再识协议

为什么要有 TCP/IP 协议?

首先, 即便是单机, 你的计算机内部, 其实都是存在协议的, 比如: 其他设备和
内存通信, 会有内存协议。 其他设备和磁盘通信, 会有磁盘相关的协议, 比如:
SATA, IDE, SCSI 等。 只不过我们感知不到罢了。 而且这些协议都在本地主机各自的硬件中, 通信的成本、 问题比较少。

其次, 网络通信最大的特点就是主机之间变远了。 任何通信特征的变化, 一定会
带来新的问题, 有问题就得解决问题, 所以需要新的协议咯。

在这里插入图片描述

TCP/IP 协议本质就是通信主机距离变远了。

什么是 TCP/IP 协议?

TCP/IP 协议的本质是一种解决方案

TCP/IP 协议能分层, 前提是因为问题们本身能分层

操作系统和TCP/IP协议的关系:
在这里插入图片描述

传输层最著名的协议就是TCP网络层最著名的协议就是IP而传输层(TCP)和网络层(IP)两层必须实现在内核中,无论OS再怎么不同,这部分大家必须遵守协议,必须一样。

TCP和IP既然是核心,把这个协议整体统称为TCP/IP。

理解TCP/IP协议:
OS 源代码一般都是用 C/C++语言写的

在这里插入图片描述

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

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

举个例子:
当我们在网购时,收到的东西是你所买的东西以及一个快递单子:
在这里插入图片描述

当我们拿到东西的时候一般是把快递单子丢掉,物品留下。快递在转运的过程中,快递单子上面的字段工作人员以及你都是明白上面的意思的。这里的快递单子就相当于结构体数据。

在这里插入图片描述

网络传输基本流程

局域网(以太网为例)通信原理

两台主机在同一个局域网中是可以进行通信的,每台主机都需要有一个唯一性标识,称之为MAC地址。

比如你的手机给其他三个手机开了热点,那么这四台手机就在一个局域网中,你的手机相当于一台路由器。

举例:
教室中一群学生在上课,其中有一个叫做张三,老师上课提问:“张三…”,老师喊的是张三,其他同学不会有反应,因为喊的是张三。于是张三站起来了,回答了老师的问题。双方在进行对话中,可以认为是面对面单独对话的,但是周围也有一大堆吃瓜群众,只不过其他同学不做处理。

这里的教室对应局域网,老师对应主机A,张三对应主机B,其他同学分别是主机C、主机D…

这实际上就是局域网通信原理。

MAC地址

  • MAC 地址用来识别数据链路层中相连的节点;
  • 长度为 48 位, 及 6 个字节. 一般用 16 进制数字加上冒号的形式来表示(例如:
    08:00:27:03:fb:19)
  • 在网卡出厂时就确定了, 不能修改. mac 地址通常是唯一的(虚拟机中的 mac 地
    址不是真实的 mac 地址, 可能会冲突; 也有些网卡支持用户配置 mac 地址).

如下是我的虚拟机的MAC地址:
在这里插入图片描述

在这里插入图片描述

以太网中, 任何时刻, 只允许一台机器向网络中发送数据,如果有多台同时发送, 会发生数据干扰, 我们称之为数据碰撞,所有发送数据的主机要进行碰撞检测和碰撞避免。没有交换机的情况下, 一个以太网就是一个碰撞域。局域网通信的过程中, 主机对收到的报文确认是否是发给自己的, 是通过目标mac 地址判定。

之前我们在学习系统编程的时候知道访问公共资源就是临界资源,那么这里的局域网就是一个临界资源(以太网中, 任何时刻, 只允许一台机器向网络中发送数据)。

同一个网段内的两台主机进行发送消息的过程:

在这里插入图片描述

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

在这里插入图片描述

在这里插入图片描述

报头部分, 就是对应协议层的结构体字段, 我们一般叫做报头,除了报头, 剩下的叫做有效载荷,故, 报文 = 报头 + 有效载荷。

网络协议的共性:

  1. 报头和有效载荷分离的问题–解包
  2. 除了应用层,每一层协议都必须解决一个问题:自己的有效载荷应该交给上层的哪一种协议?这里需要用到分用技术。

数据包封装和分用

数据封装的过程:
在这里插入图片描述


数据分用的过程:
在这里插入图片描述

跨网络传输流程图

IP 地址是在 IP 协议中, 用来标识网络中不同主机的地址,对于 IPv4 来说, IP 地址是一个 4 字节, 32 位的整数。通常也使用 “点分十进制” 的字符串表示 IP 地址, 例如192.168.0.1 ; 用点分割的每一个数字表示一个字节, 范围是 0 - 255;

我的虚拟机IP地址:

在这里插入图片描述

跨网段的主机的数据传输. 数据从一台计算机到另一台计算机传输过程中要经过一个或
多个路由器

在这里插入图片描述

IP地址的意义

在这里插入图片描述


结合封装与解包, 体现路由器解包和重新封装的特点:
在这里插入图片描述

用户A将数据从应用层开始向下交付,到了网络层根据目的地址发现不是发给自己局域网主机的报文,就推送给路由器。推送给路由器之前,需要先封装MAC帧。数据通过局域网转发给其他主机,其他主机不考虑。经过网卡,路由器得到数据,进行解包,此时再次向下交付封装报文,原来的MAC地址和目的MAC地址会改变,经过网卡,到达用户B,解包分用,得到数据。

网络层(IP层)向上(包括网络层)看到的所有报文都是一样的,都至少是IP报文。IP可以屏蔽底层网络的差异。

对比 IP 地址和 Mac 地址的区别:

  • 目前我们认为:IP 地址在整个路由过程中, 一直不变
  • Mac 地址一直在变
  • 目的 IP 是一种长远目标, Mac 是下一阶段目标, 目的 IP 是路径选择的重要依
    据, mac 地址是局域网转发的重要依据

网络通信的宏观流程:
在这里插入图片描述

IP 网络层存在的意义: 提供网络虚拟层, 让世界的所有网络都是 IP 网络, 屏蔽
最底层网络的差异

Socket 编程预备

理解源 IP 地址和目的 IP 地址

IP在网络中是用来标识主机的唯一性

在这里插入图片描述
数据传输到主机不是目的,数据是给用户使用的。比如: 聊天是人在聊天, 下载是人在下载, 浏览网页是人在浏览。
用户是通过启动微信或者QQ进行聊天,通过启动迅雷去下载,通过启动谷歌去浏览。通过启动本质上是通过进程,进程是用户在系统中的代表, 只要把数据给进程, 用户就相当于就拿到了数据

数据传输到主机不是目的, 而是手段。 到达主机内部, 在交给主机内的进程,才是目的

端口号

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

  • 端口号是一个2字节16位整数
  • 端口号标识一个进程,告诉操作系统, 当前的这个数据要交给哪一个进程来处理
  • IP 地址 + 端口号能够标识网络上的某一台主机的某一个进程
  • 一个端口号只能被一个进程占用

在这里插入图片描述

在这里插入图片描述

服务端启动的时候,就一定要和一个port关联起来。

一个进程可以绑定多个端口号,但是一个端口号不能被多个进程绑定。需要通信的进程就需要端口号,凡是需要进行网络通信的进程需要端口号。

进程 ID 属于系统概念, 技术上也具有唯一性, 确实可以用来标识唯一的一个进程, 但是这样做, 会让系统进程管理和网络强耦合, 实际设计的时候, 并没有选择这样做。

端口号划分:

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

理解socket

P 地址用来标识互联网中唯一的一台主机, port 用来标识该主机上唯一的一个网络进程

IP+Port 就能表示互联网中唯一的一个进程

在这里插入图片描述

通信的时候, 本质是两个互联网进程代表人来进行通信, {srcIp,srcPort, dstIp, dstPort}这样的 4 元组就能标识互联网中唯二的两个进程,网络通信的本质, 也是进程间通信。

把 ip+port 叫做套接字 socke

传输层的典型代表

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

网络字节序

内存中的多字节数据相对于内存地址有大端和小端之分, 磁盘文件中的多字节数据相对于文件中的偏移地址也有大端小端之分, 网络数据流同样有大端小端之分。
在这里插入图片描述

两个通信的主机之间的存储方式可能不一样,一个大端,一个小端,那么数据就反了。标准规定:凡是在网络通信的,必须大端,TCP/IP 协议规定,网络数据流应采用大端字节序,即低地址高字节.

发送主机通常将发送缓冲区中的数据按内存地址从低到高的顺序发出,接收主机把从网络上接到的字节依次保存在接收缓冲区中,也是按内存地址从低到高的顺序保存。网络数据流的地址应这样规定:先发出的数据是低地址,后发出的数据是高地址。如果当前发送主机是小端, 就需要先将数据转成大端; 否则就忽略, 直接发送即可。

sockadder结构

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

在这里插入图片描述

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

关于Socket套接字编程后续文章会详细讲解。

在这里插入图片描述

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

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

相关文章

【动手学深度学习】6.3 填充与步幅(个人向笔记)

卷积的输出形状取决于输入形状和卷积核的形状在应用连续的卷积后,我们最终得到的输出大小远小于输入大小,这是由于卷积核的宽度和高度通常大于1导致的比如,一个 240 240 240240 240240像素的图像,经过10层 5 5 55 55的卷积后&am…

自然语言处理问答系统:技术进展、应用与挑战

自然语言处理(NLP)问答系统是人工智能领域的一个重要分支,它通过理解和分析用户的提问,从大量的文本数据中提取相关信息,并以自然语言的形式回答用户的问题。随着深度学习技术的发展,尤其是预训练语言模型&…

MATLAB智能优化算法-学习笔记(4)——灰狼优化算法求解旅行商问题【过程+代码】

灰狼优化算法(Grey Wolf Optimizer, GWO)是一种基于灰狼社会行为的元启发式算法,主要模拟灰狼群体的捕猎行为(包括围攻、追捕、搜寻猎物等过程)。多旅行商问题(Multi-Traveling Salesman Problem, mTSP)是旅行商问题(TSP)的扩展,它涉及多个旅行商(车辆)从一个起点城…

深度学习:循环神经网络—RNN的原理

传统神经网络存在的问题? 无法训练出具有顺序的数据。模型搭建时没有考虑数据上下之间的关系。 RNN神经网络 RNN(Recurrent Neural Network,循环神经网络)是一种专门用于处理序列数据的神经网络。在处理序列输入时具有记忆性…

动态规划的优化与高级应用

姊妹篇: 动态规划基础与经典问题-CSDN博客 贪心算法:原理、应用与优化_最优解-CSDN博客​​​​​​贪心算法:原理、应用与优化_最优解-CSDN博客 一、动态规划的优化策 动态规划在提高时间效率的同时,往往会占用较多的空间。因…

【汇编语言】寄存器(CPU工作原理)(七)—— 查看CPU和内存,用机器指令和汇编指令编程

文章目录 前言1. 预备知识:Debug的使用1.1 什么是Debug?1.2 我们用到的Debug功能1.3 进入Debug1.3.1 对于16位或者32位机器的进入方式1.3.2 对于64位机器的进入方式 1.4 R命令1.5 D命令1.6 E命令1.7 U命令1.8 T命令1.9 A命令 2. 总结3. 实操练习结语 前言…

grpc的python使用

RPC 什么是 RPC ? RPC(Remote Procedure Call)远程过程调用,是一种计算机通信协议,允许一个程序(客户端)通过网络向另一个程序(服务器)请求服务,而无需了解…

笔试算法总结

文章目录 题目1题目2题目3题目4 题目1 使用 StringBuilder 模拟栈的行为&#xff0c;通过判断相邻2个字符是否相同&#xff0c;如果相同就进行删除 public class Main {public static String fun(String s) {if (s null || s.length() < 1) return s;StringBuilder builde…

前端开发基础NodeJS+NPM基本使用(零基础入门)

文章目录 1、Nodejs基础1.1、NodeJs简介1.2、下载安装文件1.3、安装NodeJS1.4、验证安装2、Node.js 创建第一个应用2.1、说明2.2、创建服务脚本2.3、执行运行代码2.4、测试访问3、npm 基本使用3.1、测试安装3.2、配置淘宝npm镜像3.3.1、本地安装3.3.2、全局安装3.4、查看安装信…

【网络】详解TCP协议的流量控制和拥塞控制

【网络】详解TCP协议的流量控制和拥塞控制 一. 流量控制模型窗口探测 二. 拥塞控制模型 总结 一. 流量控制 流量控制主要考虑的是接收方的处理速度。 接收端处理数据的速度是有限的.。如果发送端发的太快, 导致接收端的缓冲区被打满, 这个时候如果发送端继续发送, 就会造成丢包…

IP地址如何支持远程办公?

由于当今社会经济的飞速发展&#xff0c;各个方向的业务都不免接触到跨省、跨市以及跨国办公的需要&#xff0c;随之而来的远程操作的不方便&#xff0c;加载缓慢&#xff0c;传输文件时间过长等困难&#xff0c;如何在万里之外实现远程办公呢&#xff1f;我们以以下几点进行阐…

【GaussDB】产品简介

产品定位 GaussDB 200是一款具备分析及混合负载能力的分布式数据库&#xff0c;支持x86和Kunpeng硬件架构&#xff0c;支持行存储与列存储&#xff0c;提供PB(Petabyte)级数据分析能力、多模分析能力和实时处理能力&#xff0c;用于数据仓库、数据集市、实时分析、实时决策和混…

3DCAT实时云渲染赋能2024广东旅博会智慧文旅元宇宙体验馆上线!

广东国际旅游产业博览会&#xff08;以下简称“旅博会”&#xff09;是广东省倾力打造的省级展会品牌&#xff0c;自2009年独立成展至今已成功举办十五届。2024广东旅博会于9月13—15日在广州中国进出口商品交易会展馆A区举办&#xff0c;线上旅博会“智慧文旅元宇宙体验馆”于…

力扣21~30题

21题&#xff08;简单&#xff09;&#xff1a; 分析&#xff1a; 按要求照做就好了&#xff0c;这种链表基本操作适合用c写&#xff0c;python用起来真的很奇怪 python代码&#xff1a; # Definition for singly-linked list. # class ListNode: # def __init__(self, v…

Parallels Desktop意外退出,Parallels Desktop安装软件很卡闪退怎么办?

Parallels Desktop是目前很优秀的虚拟机软件&#xff0c;操作简单&#xff0c;兼容性强而且安装也非常方便&#xff0c;备受苹果用户的喜爱和满意。然而&#xff0c;部分用户在使用Parallels Desktop的时候&#xff0c;会遇到意外退出或终端关机的情况&#xff0c;这不仅会影响…

利用 Llama 3.1模型 + Dify开源LLM应用开发平台,在你的Windows环境中搭建一套AI工作流

文章目录 1. 什么是Ollama&#xff1f;2. 什么是Dify&#xff1f;3. 下载Ollama4. 安装Ollama5. Ollama Model library模型库6. 本地部署Llama 3.1模型7. 安装Docker Desktop8. 使用Docker-Compose部署Dify9. 注册Dify账号10. 集成本地部署的 Llama 3.1模型11. 集成智谱AI大模型…

图像分类-demo(Lenet),tensorflow和Alexnet

目录 demo(Lenet) 代码实现基本步骤&#xff1a; TensorFlow 一、核心概念 二、主要特点 三、简单实现 参数: 模型编译 模型训练 模型评估 Alexnet model.py train.py predict.py demo(Lenet) PyTorch提供了一个名为“torchvision”的附加库&#xff0c;其中包含…

修复PDF打印速度慢

详细问题&#xff1a; 当您尝试将 PDF 文件打印到本地或网络打印机时&#xff0c;打印需要很长时间&#xff0c;因为发送打印作业后&#xff0c;打印机开始打印的速度非常慢&#xff0c;在打印任务中可以看到打印传输的数据在缓慢增长。 从其他程序打印时也不会出现打印速度慢…

AI大模型 向量Embeddings+向量数据库实现文搜文、图搜图

文搜文、图搜图介绍: 文搜文 &#xff1a;即文本搜索文本&#xff0c;是指通过输入关键词或短语&#xff0c;在大量文本数据中检索出与之相关的内容 。 搜 索引擎&#xff08;百度、谷歌、 360 &#xff09; 、 文档管理系统 、 电商搜索 。 图搜图 &#xff1a;即图像搜…