[Linux#67][IP] 报头详解 | 网络划分 | CIDR无类别 | DHCP动态分配 | NAT转发 | 路由器

目录

一. IP协议头格式

学习任何协议前的两个关键问题

IP 报头与有效载荷分离

分离方法

为什么需要16位总长度

如何交付

二. 网络通信

1.IP地址的划分理念

2. 子网管理

3.网络划分

CIDR(无类别域间路由)

目的IP & 当前路由器的子网掩码 = 该报文要去的目的网络

特殊IP地址

4.IP 地址的数量限制

5.私有IP地址和公网IP地址

三.全球网络

运营商的角色

网络基础设施的来源

网络访问的控制

路由器的功能

⭕ 主要功能

组建局域网

运营商网络架构

数据包的转发流程

路由器的IP地址结构

全球网络

网络拓扑结构


一. IP协议头格式

学习任何协议前的两个关键问题

在学习任何网络协议之前,需要先理解以下两个基本问题:

  1. 如何将报头和有效载荷分离?
  2. 如何交付?
IP 报头与有效载荷分离
  • IP报头选项:IP报头可以包含选项字段,但本文不讨论这些选项。
  • 标准长度:IP报头的标准长度是20字节。
  • 数据组成:数据部分(即有效载荷)由上层TCP提供,它包括TCP报头和来自应用层的有效载荷。
分离方法

(第一层:

  • 4位版本号:对于IPv4来说总是4。IPv4和IPv6之间没有直接兼容性。
  • 4位首部长度:表示IP报头总长度,单位为4字节。取值范围是【5, 15】(对应于20到60字节),其中5是最常见的值,代表20字节。
  • 16位总长度:指整个IP报文的长度,包括报头和有效载荷。
  • 8位服务类型
    • 包括已废弃的3位优先级字段、4位ToS字段以及1位保留位(必须设为0)。
    • ToS字段定义了服务质量参数如最小延迟、最大吞吐量、最高可靠性和最低成本。
    • 这些参数互斥,选择其中之一影响数据传输路径的选择标准。
  • 计算公式:有效载荷长度 = 16位总长度 - (4位首部长度 * 4)
为什么需要16位总长度
  • 确保接收方完整地接收到整个IP报文。
  • 因为IP报文是以独立报文形式存在,并非像TCP那样的连续字节流,因此需要明确标示出报头和有效载荷的具体长度。
如何交付

(第三层:

  • 8位生存时间(TTL)定义了数据报到达目的地前允许经过的最大跳数。通常初始化为64,每经过一个路由器TTL减1,直至归零仍未达目的地则被丢弃。此字段防止路由环路。
  • 8位协议字段:标识了上层协议类型。当发送时,上层会告知IP所使用的协议,然后IP设置相应的编号。接收方根据这个字段将数据传递给正确的上层协议处理。
  • 16位头部校验和:使用循环冗余校验(CRC)来检测头部错误。如果发现损坏,则丢弃该包,TCP随后会触发重传机制。
  • 32位源/目的IP地址:指定数据报的起点和终点。特别是目的IP地址,用于路由器确定下一跳路径。

16位标识,3位标志,13位片偏移(第二层)我们暂且不谈,等到我们把IP协议整体知识框架搭建起来我们在谈~

总结:


二. 网络通信

引入:

  • 路由器的工作只在网络层,没有 tcp 层。只有两台主机有 tcp 层
  • src_ip:src_port(进程)->dst_ip: dst_port(进程)

1.IP地址的划分理念

背景说明:

  • 互联网上的所有IP地址都是经过精心设计和规划的。
  • 强调理解IP地址网段划分及子网划分的重要性,不应仅停留在对子网掩码等技术细节的理解上,而要从更宏观的角度去认识这一过程。

宏观理解:

  • 从全球到国家、地区乃至具体机构或学校,IP地址的分配体现了这种层次化的结构。每个层级都可以看作是一个更大范围内的“子网”。
  • 不同区域使用不同的比特位来表示,使得整个IP地址体系具有清晰的层次性和区域性。
  • 类比学号系统,每个部分代表了不同级别的信息(如年级、班级、个人编号)。

复杂性与挑战:

  • 实际的IP地址划分非常复杂,而且随着互联网的发展,IPv4地址资源已经变得紧张。
  • 尽管面临资源限制,但基本的设计思想是一致的,即通过合理分配来最大化利用现有地址空间。
  • 解决方案并非简单粗暴地进行划分,而是采用了更为精细的方法和技术。

具体网络划分:

  • 网络一旦被划分为不同的网段,每台主机都将归属于特定的一个网段。
  • 寻址时首先确定目标主机所在的网段,再在该网段内定位具体的主机。
  • 因此,一个完整的IP地址由两部分组成:网络号+主机号
    • 网络号:用于标识不同的网段,确保互连的不同网段之间具有唯一性。
    • 主机号:在同一网段内,各主机共享相同的网络号,但各自拥有唯一的主机号以区分彼此。

路由器作用:

  • 路由器作为连接两个或多个子网的关键设备,在数据包转发过程中起到桥接作用。
  • 它同时属于所连接的所有子网,并且在每个子网中都拥有自己的IP地址
  • 通常是==该子网 网络号+.1形式(例如,对于网络192.168.1.0/24,路由器可能配置为192.168.1.1

子网的概念:

  • 子网是由一组网络号相同的主机组成的集合。
  • 新增主机到某一子网时,其网络号需与该子网一致,但主机号必须保证在整个子网范围内唯一
  • 通过这样的方式,可以确保即便是在相互连接的不同网络中,也能够保持每台主机IP地址的独特性,从而避免冲突。

2. 子网管理

问题背景:

手动管理子网内的IP是一个相当麻烦的事情。例如,当子网内有主机离开或新加入时,就需要对子网内的IP地址进行相应的增删改操作。这项管理工作通常由谁来完成呢?

  • 管理设备:在一个子网中,负责管理子网内IP的通常是路由器。

自动管理解决方案:

  • DHCP技术为了解决手动管理IP带来的不便,有一种叫做DHCP(Dynamic Host Configuration Protocol)的技术被开发出来,它能够自动地给子网内的新增主机节点分配IP地址。
  • 路由器与DHCP:大多数现代路由器都内置了DHCP功能,因此路由器也可以被视为一个DHCP服务器。
  • DHCP服务描述:DHCP是一种自动化服务,负责网络中的IP地址申请、分配和回收等管理工作。
  • 上网前获取IP:这也是为什么我们的电脑在上网之前需要先连接到路由器的原因之一——为了通过路由器获得一个可用的IP地址,从而接入互联网。

3.网络划分

(IP地址分类与CIDR

过去,所有IP地址被划分为五类:

  • A类:0.0.0.0到127.255.255.255
  • B类:128.0.0.0到191.255.255.255
  • C类:192.0.0.0到223.255.255.255
  • D类:224.0.0.0到239.255.255.255(多播地址)
  • E类:240.0.0.0到247.255.255.255(保留作实验用途)

传统分类方案的问题

随着Internet的发展,这种固定划分暴露出不足之处:

  • B类地址由于需求大而迅速耗尽。
  • A类和B类地址造成大量IP资源浪费。

例如,一个B类地址理论上允许单个子网内存在超过65,000台主机;而A类则更多。但实际上很少有网络需要如此多的地址空间,导致许多分配出去的地址并未得到充分利用。

CIDR(无类别域间路由)

为解决上述问题,提出了CIDR机制,其特点如下:

  • 引入“子网掩码”概念,以更灵活地定义网络边界。
  • 子网掩码是一个32位数字,通常尾部由一系列 0 组成。
  • 通过将IP地址与子网掩码执行 按位与& 操作来确定网络号。
  • 网络号与主机号的界限不再依赖于IP地址类型(A/B/C)。
目的IP & 当前路由器的子网掩码 = 该报文要去的目的网络
  • 每个路由器需为其连接的每个网络设定相应的子网掩码。
  • 不同路由器至少要链接两个不同网络。
  • 利用目标IP地址与当前路由器子网掩码做与运算可识别报文的目标网络。

下面看划分子网的例子

例如140.252.20.68/24

  • 表示IP地址为140.252.20.68
  • 子网掩码的高24位是1,也就是255.255.255.0
  • 网络号占据24个比特位

可见,IP地址与子网掩码做与运算可以得到网络号,主机号从全0到全1就是子网的地址范围

除:子网中全0不被使用它代表网络号,全1也不被使用代表广播地址。

例子 2:

225.225.255.240 前面28位是网络号,后面4位是主机号~计算思路如下

  • 子网掩码规定前面多少位是网络号 ,所以剩下我们能动得是主机号。
  • 子网掩码,可以对 IP 32 位,进行任意划分
  • 结合以前,先五种分类,再子网掩码
特殊IP地址
  • 当IP地址中的主机部分全为0时,表示网络本身。
  • 主机部分全设为1构成广播地址,用于向同一链路上的所有设备发送信息。
  • 127.*系列地址专用于本地回环测试,最常用的是127.0.0.1


4.IP 地址的数量限制

IPv4地址概述:

  • iPv4地址是一个4字节(32位)的正整数。
  • 总共有 (2^{32}) 个可能的IPv4地址,大约是43亿个。

主机与IP地址的关系:

  • TCP/IP协议规定,每个网络上的主机都需要有一个IP地址。
  • 理论上,这意味着最多只有43亿台主机能够接入互联网。

实际可用IP地址数量:

  • 实际上,由于存在一些保留和特殊用途的IP地址,可分配给普通设备使用的IPv4地址数量远低于43亿。
  • 此外,IP地址是基于网卡而非主机来配置的,意味着单个主机可能需要多个IP地址。

⭕ 缓解IP地址短缺的措施:

  • CIDR(无类别域间路由 提高了IP地址的利用率并减少了浪费,但并未增加IP地址总数。
  • 动态分配IP地址:通过仅在设备连接到网络时为其分配IP地址,使得同一MAC地址的设备每次连接都可能获得不同的IP地址。(用的时候给你,不用的时候就回收
  • NAT(网络地址转换 技术允许内部网络中的多台计算机共享一个或几个公共IP地址访问外部网络。(后面会详细解释~

IPv6

  • IPv6使用16字节(128位)表示一个IP地址,极大地扩展了地址空间。
  • IPv6与IPv4不兼容,属于完全不同的协议体系。
  • 尽管IPv6提供了足够的地址空间解决IPv4地址耗尽的问题,但截至当前,IPv6尚未广泛普及。

未来:

  • 08 奥运会用的内网就是 ipv6~
  • 智能驾驶等技术成熟了,科学技术进步,生产力提高,中国网络的体量越来越大,未来有可能就会切为 ipv6
  • 产业升级,智能制造升级,科技发展,前景广阔~

NAT是现在内网到公网上数据转发的主流技术。目前我们用IPv6也能访问公网也是用的类似技术。

现在我们知道IP地址可以被分成内网IP和公网IP,那些是内网IP?那些是公网IP?

那网络既有内网又有公网我们该如何理解呢?

5.私有IP地址和公网IP地址

如果一个组织内部组建局域网,IP地址只用于局域网内的通信,而不直接连到Internet上,理论上 使用任意的IP地址都可以,但是RFC 1918规定了用于组建局域网的私有IP地址

  • 10.*,前8位是网络号,共16,777,216个地址
  • 172.16.到172.31.,前12位是网络号,共1,048,576个地址
  • 192.168.*,前16位是网络号,共65,536个地址

只能用这三类来组建局域网,包含在这个范围中的,都称为私有IP。 其余的则称为全局IP(或公网IP),

所以我们经常说IP地址具有唯一性,通常谈的是全局IP或公网IP。

  • 在大家前 18 年的使用生涯中,都在直接使用的其实都是私有 IP
  • 云服务器就接触到了--公网 IP

验证:

ipconfig 查看

ifconfig 查看

三.全球网络

运营商的角色

  • 当我们想在家中上网时,如果我们已经使用了某个运营商的手机卡,只需要打电话给运营商,联系其安装网络的师傅来安装。
  • 他们通常会带来一个调制解调器(俗称“猫”)和一个路由器,安装人员会将网络账号与密码设置好,接着配置无线网络名称和密码。
  • 这样,家里的设备就可以通过WiFi上网了。
网络基础设施的来源
  • 上网的网线是运营商提供的。这意味着运营商已经在你家附近建设了网络基础设施。
  • 当你通过路由器发起网络请求时,信息会携带你的网络账号和密码,这个请求首先会到达运营商的服务器,由他们认证你是否欠费。
  • 如果没有欠费,运营商就会将请求继续传递到你所请求的服务,比如腾讯、阿里、百度等。
  • 因此,运营商实际上位于用户和互联网服务提供商之间,扮演着基础设施建设者的角色。
网络访问的控制
  • 运营商有权限制你的网络访问,尤其是当你欠费时,他们可以阻止你的数据报文的转发。
  • 除此之外,运营商也可以审核你的上网内容。例如,发现你尝试访问谷歌、推特等被限制的网站时,运营商可以选择不转发你的请求。
  • 这种机制通常被称为“墙”,而“翻墙”实际上是绕过运营商的转发限制。
  • 物理上,用户不可能绕过运营商直接访问互联网服务提供商(如字节跳动),因为没有直接连接的通路。
  • 网络架构上,用户必须经过运营商的网络才能访问外部互联网服务。

路由器的功能

⭕ 主要功能
  1. 转发数据:路由器的核心任务是转发网络数据包。
  2. DHCP动态主机配置协议,自动为局域网中的设备分配IP地址。
  3. NAT:网络地址转换技术,用于将内部局域网IP转换为可在公网使用的IP地址。
组建局域网
  • 路由器可以用来创建局域网,配置无线网络时,我们可以设置网络名称和密码。
  • 在这种网络中,路由器使用内网IP,比如家用路由器通常使用192.168.*
  • 企业级路由器可能使用10.*172.16-172.31范围的内网IP。

  • 上图可以发现拥有两套密码机制

在上网过程中,通常会遇到两种密码:一种是用于连接互联网服务提供商(ISP)的账号密码,另一种是用于访问无线路由器设置或连接到家庭Wi-Fi网络的密码。这两种密码的功能和用途不同。

  1. 上网账号密码:这是你向互联网服务提供商申请宽带服务时获得的一组账号信息。这组信息通常包括一个用户名(可能是你的手机号码或者ISP提供的特定账号名)和对应的密码。当你首次设置宽带连接或需要重新配置网络连接时,就需要使用这套账号密码来验证身份,并建立与ISP之间的连接。这个账号密码是用来认证你作为合法用户的凭证,确保只有付费用户能够接入互联网服务。
  2. 路由器账号密码:实际上这里可以分为两个部分:
    • 路由器管理界面登录密码:允许你访问路由器的Web管理界面,在那里你可以更改各种设置,比如修改Wi-Fi名称、设定安全级别等。
    • Wi-Fi密码:也称为“预共享密钥”(PSK),是指当设备尝试加入你的无线局域网时所需输入的密码。它保护了你的无线网络免受未经授权的访问者侵入。

如果邻居能够蹭网,则意味着他们知道了你的Wi-Fi密码这是因为只要知道正确的Wi-Fi密码,任何人都可以连接到你的无线网络上。

  • 流量费的问题,国家扶持使其费用下降了,大力发展互联网,孵化出了大量互联网公司,收获了发展的红利
  • 结合国家对于滴滴和支付宝等私企的放权和支持,可以看出我们国家发展互联网的决心非常大!

运营商网络架构

每个家庭都有自己的路由器,负责创建家庭局域网,使用192.168.*开头的内网IP。当家庭网络连接到互联网时,需要通过运营商的网络。所以家庭路由器实际上跨越了两个子网:

  1. 家庭局域网子网(192.168.*)。
  2. 运营商的子网。

这意味着当数据从家用路由器发出时,先到达运营商的子网,再经过多级路由器,最终转发到公网。

家庭路由器会配备两个IP地址:

  • LAN口IP:用于家庭内部局域网,通常为192.168.*
  • WAN口IP:用于连接运营商的网络,是由运营商分配的IP地址。

同理,运营商的路由器也具有LAN口IP和WAN口IP:

  • LAN口IP:用于运营商内部网络(可能是私有网络)。
  • WAN口IP:这是一个公网IP,用于连接到互联网。

数据包的转发流程

  • 在不同局域网中,私有IP是可以重复的,因为只需要在局部环境中保证唯一性。
  • 然而,这带来了一个问题:当不同局域网中的设备使用相同的IP地址(例如,192.168.1.201)时,外部服务提供商(如抖音)如何知道数据包应该返回到哪个局域网?
  • 为了解决这个问题,NAT(网络地址转换)技术应运而生。当数据经过路由器时,路由器会将数据包的源IP地址替换为自己的WAN口IP。当请求返回时,路由器则会根据这个WAN口IP知道将数据包转发到哪个局域网的设备上。

路由器的IP地址结构

个人主机上的 IP 是私有 IP

每个路由器都有两个IP地址:

  1. LAN口(子网 IP:用于在局域网内部通信,通常为私有IP(如192.168.1.1)。来实现对上一个的连接
  2. WAN口IP:用于与外部网络(如运营商网络)通信。这个IP可能是一个公网IP路由器自己的标识
  • 路由器内的主机(如手机、电脑等)使用局域网的IP地址,而这些IP地址在不同的局域网中是可以重复的。
  • 然而,当这些主机需要访问外网时,路由器会使用NAT技术将内部的私有IP地址替换为WAN口IP。这种逐级替换的过程使得最终的数据包在公网中能够使用一个唯一的IP地址进行通信。
  • 如果想要让外界能够访问我们自建的服务器(如网页服务器),那么这台自建服务器必须部署在具有公网IP的设备上。例如,云服务提供商(如阿里云、腾讯云)可以提供这样的服务器。

全球网络

我们可以在 IPSHU 上查看全球 IP 的使用情况

由于IP地址的有限性(尤其是IPv4),全球范围内的IP地址已经不足。

网络拓扑结构

公网和子网的划分通常可以通过IP地址和子网行。

比如,如果从美国发出一个请求,目标IP地址是湖北武汉的服务器

  • 路由器首先会判断这个IP不属于本地网络,于是将请求发送给国际路由器
  • 国际路由器再判断目标IP属于中国,就会将数据包转发到中国的路由器。
  • 接下来,中国的路由器会继续判断目标IP,发现属于湖北,
  • 再由湖北的路由器转发给武汉的服务器。

整个互联网的拓扑结构虽然复杂,但这种逐级转发的逻辑是其核心。运营商在地方上建立了本地网络,并将不同子网进行划分,然后通过公网入口路由器与全球互联网连接。

网络模式如下,可以看到,在接入武汉之后,由公网入私网

注意:

  • 私有 ip 存在大量重复,不能进公网
  • 路由器会进行报文的替换,WAN 口 IP 的替换
  • 解决:将源 IP 替换成每一个路由器的WAN 口 IP

私有 IP 不断被替换的过程:NAT 技术

为了解决 IP 不足问题,采取了 互联网=公网+私网 的模式

下一篇文章将继续讲解 NAT 技术怎么回来,路由等知识~

🎢 补: CRUD是一个缩写,代表创建(Create)、读取(Read)、更新(Update)和删除(Delete)这四种基本的数据库操作。

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

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

相关文章

外包干了3周,技术退步太明显了。。。。。

先说一下自己的情况,大专生,21年通过校招进入武汉某软件公司,干了差不多3个星期的功能测试,那年国庆,感觉自己不能够在这样下去了,长时间呆在一个舒适的环境会让一个人堕落!而我才在一个外包企业干了3周的功…

神经网络构建与训练深度学习模型全过程(PyTorch TensorFlow)

神经网络构建与训练深度学习模型全过程(PyTorch & TensorFlow) 目录 🔗 什么是神经网络:基础架构与工作原理🧩 构建简单的神经网络:层次结构与激活函数🚀 前向传播:神经网络的…

基于Handsontable.js + Excel.js实现表格预览和导出功能(公式渲染)

本文记录在html中基于Handsontable.js Excel.js实现表格预览、导出、带公式单元格渲染功能&#xff0c;在这里我们在html中实现&#xff0c;当然也可以在vue、react等框架中使用npm下载导入依赖文件。 Handsontable官方文档 一、开发前的准备引入相关依赖库 <!DOCTYPE ht…

微服务经典应用架构图

从网上找了一个经典的微服务架构图&#xff0c;资料来源于若依开源系统的ruoyi-cloud&#xff0c;仅供参考&#xff01;

面向城市运行“一网统管”的实景三维示范应用

在新型智慧城市建设的浪潮中&#xff0c;实景三维技术正成为推动城市治理现代化的重要力量。“一网统管”作为城市运行管理的新理念&#xff0c;强调了跨部门协作和数据共享&#xff0c;而实景三维技术为此提供了强有力的支撑。本文将探讨实景三维技术如何赋能“一网统管”&…

Linux笔记---vim的使用

1. vim的基本概念 Vim是一款功能强大的文本编辑器&#xff0c;它起源于Unix系统的vi编辑器&#xff0c;并在其基础上进行了许多改进和增强。 Vim以其高效的键盘操作、高度的可定制性和强大的文本处理能力而闻名&#xff0c;尤其受程序员和系统管理员的欢迎。 Vim支持多种模式…

cmake 编译 01

CMakeLists.txt cmake_minimum_required(VERSION 3.10)project(MyProject)set(CMAKE_CXX_STANDARD 17) set(CMAKE_CXX_STANDARD_REQUIRED True)# 如果顶层 CMakeLists.txt 文件中使用了 add_subdirectory() 命令&#xff0c;CMake 会进入指定的子目录&#xff0c;并处理该目录…

2024年超好用的防泄密软件分享|10款加密防泄密软件推荐

在当今数字化时代&#xff0c;企业数据安全已成为不可忽视的重要议题。随着数据泄露事件频发&#xff0c;选择一款高效可靠的防泄密软件变得尤为重要。本文将为您推荐10款在2024年备受推崇的防泄密软件&#xff0c;并重点介绍Ping32防泄密软件的功能与优势。 1. Ping32防泄密软…

Zico 2 靶机 - 详细流程

✨ 准备工作 靶机 && kali 环境要求 机器名网络配置靶机Zico 2NAT 模式攻击机kaliNAT 模式 靶机下载链接&#xff1a;zico2: 1 ~ VulnHub 打开 VMware&#xff0c;将 zico2.ova 拖拽到 VMware 中 设置 虚拟机名称(A) - 存储路径(P)- 导入 若是&#xff0c;…

3. 单例模式唯一性问题—构造函数

1. 构造函数带来的唯一性问题指什么&#xff1f; 对于不继承MonoBehaviour的单例模式基类 我们要避免在外部 new 单例模式类对象 例如 &#xff08;完整单例模式定义在上一节&#xff09; public class Main : MonoBehaviour {void Start(){// 破坏单例模式的唯一性&#xf…

【Python】AI Navigator对话流式输出

前言 在上一章节,我们讲解了如何使用Anaconda AI Navigator软件结合python搭建本机的大模型环境 【python】AI Navigator的使用及搭建本机大模型_anaconda ai navigator-CSDN博客 但是在上一章节搭建的大模型环境无法流式输出,导致输出需要等待很久,所以在这一章节,解决…

使用Three.js和Force-Directed Graph实现3D知识图谱可视化

先看样式&#xff1a; 在当今信息爆炸的时代&#xff0c;如何有效地组织和展示复杂的知识结构成为一个重要的挑战。3D知识图谱可视化是一种直观、交互性强的方式来呈现知识之间的关系。本文将详细介绍如何使用HTML、JavaScript、Three.js和Force-Directed Graph库来实现一个交互…

【深度学习】阿里云GPU服务器免费试用3月

【深度学习】阿里云GPU服务器免费试用3月 1.活动页面2.选择交互式建模PAI-DSW3.开通 PAI 并创建默认工作空间4.前往默认工作空间5.创建交互式建模&#xff08;DSW&#xff09;实例 1.活动页面 阿里云免费使用活动页面 2.选择交互式建模PAI-DSW 支持抵扣PAI-DSW入门机型计算用量…

【Unity新闻】Unity 6 正式版发布

Unity CEO Matt Bromberg 在今天自豪地宣布&#xff0c;Unity 6 正式发布&#xff01;作为迄今为止最强大和稳定的版本&#xff0c;Unity 6 为游戏和应用开发者提供了大量的新功能和工具&#xff0c;帮助他们加速开发并提升性能。 本次正式版是6.0000.0.23f1&#xff08;LTS&a…

spring-boot学习(2)

上次学习截止到拦截器 1.构建RESfun服务 PathVariable通过url路径获取url传递过来的信息 2.MyBatisPlus 第三行的mydb要改为自己的数据库名 第四&#xff0c;五行的账号密码改成自己的 MaooerScan告诉项目自己的这个MyBatisPlus是使用在哪里的&#xff0c;包名 实体类的定义…

AGI 之 【Dify】 之 使用 Docker 在 Windows 端本地部署 Dify 大语言模型(LLM)应用开发平台

AGI 之 【Dify】 之 使用 Docker 在 Windows 端本地部署 Dify 大语言模型&#xff08;LLM&#xff09;应用开发平台 目录 AGI 之 【Dify】 之 使用 Docker 在 Windows 端本地部署 Dify 大语言模型&#xff08;LLM&#xff09;应用开发平台 一、简单介绍 二、Docker 下载安…

设置 Notepad++ 制表符(Tab 缩进)宽度为2个空格大小

Notepad 默认的制表符宽度是 4 个空格的大小&#xff0c;一个规模比较大的代码段或者 xml 等文件&#xff0c;小屏幕打开时看到的情景真的和让人着急&#xff0c;拖来拖去&#xff01;有两种方案可以解决这种情况。 修改缩进为空格 这种我们不太推荐&#xff0c;但是有些公司…

小白必看web专题!配置环境还在用phpstudy?该用docker了!(php+nginx+mysql+phpmyadmin。)

大家好&#xff0c;我是Dest1ny。 大家用mac或者是windows都是使用phpstudy。 今天docker来搭建一整个phpnginxmysqlphpmyadmin。 而且mac用docker比较方便&#xff01; docker才是众望所归。 大家多多点赞&#xff0c;多多支持&#xff0c;谢谢&#xff01;&#xff01;&…

Qml-Item的构造和显示顺序

Qml-Item的构造和显示顺序 qml文件中组件构造顺序 在同一个qml文件中&#xff0c;同层级的Item, 文件尾的Item优先构造&#xff0c;文件首的Item后构造。这就能解释默认情况下同一个qml文件中&#xff0c;几个同层级的item都设置了focus:true&#xff0c;为啥最上面item最终有…