4.2 网际协议IP

思维导图:

 

 

 

前言:

**笔记 4.2 - 网际协议IP**

1. **定义与重要性**:
   - 网际协议IP是TCP/IP体系中的核心协议之一。
   - 它是互联网的关键标准协议。
  
2. **发展背景**:
   - 又被称为Kahn-Cerf协议。
   - 由Robert Kahn和Vint Cerf研发。
   - Kahn和Cerf于2005年因其贡献获得了图灵奖(计算机科学的诺贝尔奖)。

3. **版本细节**:
   - 严格说,本章讨论的是IPv4(IP的第四个版本)。
   - 通常在讲述IP时,不特指版本。
   - IPv6为较新版本,会在4.6节讨论。
   - IPv1-3和IPv5版本未被使用。

4. **与IP协议相关的其他协议**:
   - 地址解析协议ARP。
   - 网际控制报文协议ICMP。
   - 网际组管理协议IGMP。
   - 逆地址解析协议RARP(已被淘汰)。

5. **协议间关系(图4-2)**:
   - **应用层**: 包括(HTTP,FTP,SMTP等)应用协议。
   - **运输层**: 包括TCP, UDP。
   - **网络层(网际层)**:
     - 主要是IP。
     - ARP位于最下方,常被IP使用。
     - ICMP和IGMP位于上方,使用IP。
   - **网络接口层**: 与各种网络接口和物理硬件相连。

6. **关于"网际层"这个术语**:
   - 网际协议IP使得多个计算机网络可以互联通信。
   - 因此TCP/IP体系的网络层经常被称为网际层或IP层。
   - “网际层”强调这是一个由多个网络构成的互联网络。

7. **接下来的讨论**:
   - 在深入讨论网际协议IP之前,我们需要了解什么是虚拟互连网络。

4.2.1 虚拟互联网络 

**4.2 网际协议IP笔记**

- **定义**:网际协议IP是TCP/IP体系中的核心协议之一,也是最主要的互联网标准协议。
  
- **别称**:称为Kahn-Cerf协议,得名于创始人Robert Kahn和Vint Cerf。
  
- **奖项**:Kahn和Cerf于2005年获得图灵奖,相当于计算机科学的诺贝尔奖。
  
- **版本**:本文讨论的是IP的第四个版本,即IPv4。而IPv6是较新的版本,版本1~3和5都未曾使用。
  
- **配套协议**:与IP协议配套使用的还有ARP(地址解析协议)、ICMP(网际控制报文协议)、IGMP(网际组管理协议)。曾有RARP(逆地址解析协议),现已被淘汰。
  
- **协议关系**:图4-2显示了这些协议与网际协议IP之间的关系。其中ARP在最下面,而ICMP和IGMP在上面,因为它们使用IP。
  
- **网络层名称**:TCP/IP体系中的网络层常被称为网际层或IP层,强调这是多个网络构成的互联网络。

---

**4.2.1 虚拟互连网络**

- **挑战**:互连全球百万计的网络是复杂的。存在许多异构性,如不同的寻址、分组长度、接入机制等。

- **网络统一化**:由于各网络的需求和技术差异,不能仅使用一种网络来简化互连。

- **中间设备**:网络互连需要中间设备,如转发器(物理层)、网桥(数据链路层)、路由器(网络层)和网关(网络层以上)。

- **路由器与网关**:路由器是网络层中用于路由选择的专用计算机。因历史原因,路由器曾被称为网关。

- **虚拟互连网络**:使用相同的网际协议IP,互连后的网络可以视为一个大的虚拟网络。它在网络层看起来像一个统一的网络,遮蔽了物理网络的差异。

- **IP网的优势**:在IP网上的主机通信时,它们只看到统一的网络,而看不到各网络的异构细节。

- **例子**:图4-4显示了如何通过路由器将IP数据报从源主机H₁传输到目的主机H₂。

总结,这一节讲述了网际协议IP的重要性和其与其他协议的关系。虚拟互连网络部分讨论了网络互连的挑战和解决方法,并通过示例进一步说明了这一概念。

4.2.2 分类的IP地址 

1.IP地址及其表示方法

在TCP/IP体系中,IP地址是至关重要的。为了深入理解它,我们应该参考互联网的正式标准RFC791。

整个互联网可以被视为一个单一的、抽象的网络。IP地址为互联网上的每台主机(或路由器)的每个接口分配了一个唯一的32位标识符。这样的结构使我们可以在互联网上方便地进行寻址。目前,IP地址的分配由ICANN (Internet Corporation for Assigned Names and Numbers)管理。

IP地址的编址经历了三个阶段:
- 分类的IP地址:最早的编址方法,于1981年被标准化。
- 子网划分:对基本编址方法的改进,于1985年被标准化为RFC950。
- 构成超网:较新的编址方法,于1993年提出并快速得到应用。

本节将重点讨论分类的IP地址,而后两种方法将在4.3节中讨论。

“分类的IP地址”将IP地址划分为几个固定类别。每个类别的地址都由两个固定长度的字段组成:网络号(net-id)和主机号(host-id)。网络号在全球范围内是唯一的,标识连接到的网络。主机号标识在该网络上的特定主机或路由器。

IP地址格式为:
IP地址:={<网络号>,<主机号>}
(4-1)

如图4-5所示,A类、B类和C类地址是最常用的单播地址(一对一通信)。从图中可以看出,这三类地址的网络号字段和主机号字段的长度都不同。A类、B类和C类地址的网络号字段的前几位是类别位,分别为0, 10和110。D类地址用于多播,而E类地址被保留。

需要注意的是,近年来,由于无分类IP地址的广泛使用,传统的A类、B类和C类地址的区分已经成为历史。但为了清晰度和概念的演进,我们还是从分类的IP地址开始讲解。

总的来说,IP地址不仅仅标识一台主机,还指明了主机所连接到的网络。

IP地址的划分旨在满足不同用户的需求。根据需求,一个单位可以获得一块具有同样网络号的地址,而具体的主机号则由该单位自行分配。

通常,IP地址都是32位的二进制代码。为了便于阅读和书写,我们通常使用点分十进制记法(dotted decimal notation)表示IP地址。例如,128.11.3.31比其二进制形式更易读。

--- 

2.常用的三种类别的IP地址 

---

**IP地址分类:**
1. **A类地址:**
   - 网络号字段占1个字节,可指派的网络号是126个。
   - 主机号占3个字节,最大主机数为16777214。
   - 总计占IP地址空间的50%。

2. **B类地址:**
   - 网络号字段有2个字节,可指派的网络数为16383。
   - 主机号字段有2个字节,每个网络上的最大主机数为65534。
   - 总计占IP地址空间的25%。

3. **C类地址:**
   - 网络号字段有3个字节,可指派的网络总数为2097151。
   - 主机号字段有1个字节,每个网络的最大主机数为254。
   - 总计占IP地址空间的12.5%。

---

**IP地址特性:**
1. IP地址由网络号和主机号两部分组成,是分等级的地址结构。
2. IP地址标志主机(或路由器)和链路的接口。
3. 互联网的观点:一个网络是指具有相同网络号的主机的集合。
4. 所有分配到网络号的网络在互联网中都是平等的。

---

**其他要点:**
1. 在同一局域网上的主机或路由器的IP地址的网络号必须一致。
2. 用网桥互连的网段是一个局域网,有一个网络号。
3. 路由器至少有两个不同的IP地址。
4. 直接相连的路由器可以分配也可以不分配IP地址。不分配时称为无编号网络或无名网络。

---

4.2.3 IP地址和硬件地址 

**概述**:在探讨网络通信时,理解IP地址和硬件地址的区别是至关重要的。它们在网络中的功能、位置和用途各不相同。

**1. IP地址与硬件地址的区别**
- 物理地址(硬件地址):在数据链路层和物理层使用的地址。
- IP地址:在网络层及以上使用的逻辑地址。逻辑地址之所以这样称呼,是因为它是通过软件来实现的。

**2. 数据传输与地址**
- 在数据传输中,数据先从高层移至低层,然后再通过通信链路传输。使用IP地址的是IP数据报。
- 注:在局域网中,硬件地址常被称为物理地址或MAC地址。

**3. 不同层次、不同区间的源地址和目的地址**
- 在网络层:写入IP数据报首部的地址。
- 在数据链路层:写入MAC帧首部的地址。

**关键点**:
- 在IP层的互联网上,只能看到IP数据报。数据报通过的路由器的IP地址并不会显示在IP数据报的首部中。
- 虽然IP数据报首部有源地址,但路由器仅根据目标站的IP地址网络号进行路由选择。
- 在局域网的链路层,只能看到MAC帧,且MAC帧首部中的地址在不同的网络传输时会发生变化。
- 虽然每个网络的硬件地址体系都不同,但在IP层上,这些复杂细节被屏蔽。这种“屏蔽”概念在计算机中广泛应用,使得复杂的过程对用户透明。

**核心概念**:理解这些网络通信的基本概念是至关重要的。有两个主要问题需要解决:1) 如何知道在MAC帧首部填入什么硬件地址? 2) 如何得出路由器中的路由表?这两个问题将在后续章节中详细讨论。

4.2.4 地址解析协议ARP 

- **定义与作用**:
    - 地址解析协议 (ARP) 主要用于在已知机器的 IP 地址的情况下,寻找其对应的硬件地址。
    - 图4-10 描述了 ARP 协议的功能。
    
- **协议归类**:
    - 虽然 IP 协议使用了 ARP,但 ARP 主要目的是将网络层使用的 IP 地址转化为数据链路层使用的硬件地址。
    - 有些教材会将 ARP 划归为数据链路层。

- **与RARP的关系**:
    - 早期有一个逆地址解析协议 (RARP) 允许机器仅通过其硬件地址来查询其 IP 地址。
    - 现代的 DHCP 协议已经包含了 RARP 的功能,因此很少还会单独提及 RARP。

- **ARP的工作原理**:
    - 网络层使用 IP 地址,但在实际网络上传输数据帧时,仍需使用该网络的硬件地址。而 IP 地址与硬件地址间并没有直接映射。
    - ARP 解决此问题的方式是通过在主机的 ARP 高速缓存中存储 IP 地址到硬件地址的映射表。
    - 当主机 A 需要与主机 B 通信时,首先检查其 ARP 缓存以查找 B 的硬件地址。如果找到,则直接使用。否则,会广播 ARP 请求来查询 B 的硬件地址。
    - 其他机器收到此 ARP 请求后,如果 IP 地址匹配,则回复其硬件地址;否则忽略此请求。
    - 一旦 A 收到了 B 的响应,它将 B 的 IP 地址与硬件地址的映射存入其 ARP 高速缓存中。

- **ARP高速缓存的重要性**:
    - 如果不使用 ARP 缓存,每次通信都需要广播 ARP 请求,导致网络通信量大增。
    - 使用 ARP 高速缓存可以减少不必要的网络广播,提高通信效率。
    - ARP 缓存中的每个条目都有一定的生命周期,过期的条目会被自动删除。
    - 这样的设计可以确保信息的实时性,例如在硬件地址变更的情况下可以快速更新。

- **ARP与网络位置**:
    - ARP 主要用于解决同一个局域网内的机器或路由器之间的 IP 地址和硬件地址的映射问题。

此节提供了对地址解析协议 ARP 的详细介绍,包括其定义、工作原理、与其他协议的关系,以及 ARP 高速缓存的重要性。

---

**ARP协议:从IP地址到硬件地址的自动解析**
- ARP允许主机或路由器自动地从已知的IP地址解析出链路层所需的硬件地址。
- 主机用户通常对此解析过程是无感知的。

**ARP使用的四种典型情况:**
1. 主机A向同一网络上的另一台主机B发送IP数据报。A通过ARP请求分组找到B的硬件地址。
2. 主机A想要向另一个网络上的主机C或D发送IP数据报。A首先通过ARP找到其连接的路由器R₁的硬件地址。然后,R₁完成数据报的转发。
3. 路由器R₁向与其连接在同一网络上的主机C转发IP数据报。R₁通过ARP找到C的硬件地址。
4. 路由器R₁向另一网络上的主机D转发IP数据报。因为D不在R₁的网络上,R₁先通过ARP找到另一个路由器R₂的硬件地址,然后由R₂完成数据报的转发。

虽然在多种情境中需要多次使用ARP,但这仅仅是上述几种情况的组合。

**为什么使用IP地址而不是硬件地址?**
- 全球存在许多不同类型的网络,使用不同的硬件地址。要实现这些异构网络之间的互通,直接使用硬件地址会涉及复杂的地址转换。
- 使用IP地址和ARP,使得不同网络间的通信变得简单。用户不需要担心背后的复杂过程,因为计算机软件会自动处理。

---

总之,ARP是互联网通信中的核心协议,它简化了IP和硬件地址之间的转换,使跨网络的通信变得更加简单。

4.2.5 IP数据报的格式 

---
**4.2.5 IP数据报的格式**

- **总览:**
  - IP数据报的格式揭示了IP协议的功能。
  - 格式基于32位(4字节)单位。
  - IP数据报包括两部分:首部和数据部分。

- **IP数据报的结构:**
  - 固定首部长度为20字节,之后是可变长度的可选字段。
  
- **首部字段详解:**
  1. **版本(4位):** IP协议的版本。例如,IPv4为版本4,IPv6为版本6。
  2. **首部长度(4位):** 长度单位是32位。通常首部长度为20字节,最大为60字节。
  3. **区分服务(8位):** 早期为服务类型,但未使用。现在为区分服务DS。
  4. **总长度(16位):** 首部和数据的总长度。最大为65535字节。但实际使用中,要考虑数据链路层的最大传送单元MTU。
  5. **标识(16位):** 计数器,对每个数据报增加。当数据报分片时,该值复制到所有片。
  6. **标志(3位):** 包括MF和DF位。MF指示是否还有分片,DF指示是否允许分片。
  7. **片偏移(13位):** 显示分片在原数据报中的位置。每个分片的长度必须是8字节的倍数。

**其他点:**
- 数据链路层每种协议都有MTU(最大传送单元)限制,如以太网的MTU为1500字节。如果数据报过长,需要分片处理。
- 分片时,数据报首部中的“总长度”字段表示每个分片的首部和数据长度之和。

---

**IP数据报的结构**
1. **首部与数据报片**:
    - 数据报分片举例
    - 分片数据报的首部与偏移值

2. **IP数据报首部中与分片有关的字段数值**:
    - 总长度、标识、MF(更多片)、DF(不分片)、片偏移

3. **生存时间 (TTL)**:
    - TTL的单位从秒更改为跳数
    - 用于防止数据报在网络中无限循环
    - TTL值为0时,数据报被丢弃

4. **协议字段**:
    - 定义数据报携带的数据使用的协议
    - 例如:ICMP, IGMP, IP, TCP, UDP, IPv6等

5. **首部检验和**:
    - 仅检查数据报的首部
    - 通过反码算术运算进行检查
    - 如果首部没有变化,结果为0,则保留数据报;否则,丢弃

6. **源地址与目的地址**:
    - 占32位

7. **其他注解**:
    - IANA和ICANN的介绍及职责
    - IP数据报中的特殊数据报封装
    - 反码与补码的区别

**2. IP数据报首部的可变部分**
- **选项字段**:IP数据报首部的可变部分主要为选项字段。
  - **目的**:支持排错、测量以及安全等功能。
  - **长度**:此字段长度不固定,可以是1-40个字节,取决于所选择的选项。
  - **结构**:某些选项只需1个字节,有的需要多个。选项可以紧密拼接,不需分隔符。若非4字节的倍数,需使用全0填充。
- **可变首部的影响**:虽然增加了功能,但也增加了处理的开销。
  - 路由器往往不处理选项字段。
  - IPv6优化,首部长度固定,无选项字段。
- **详细内容**:对于选项的具体内容和使用,可以查看RFC791。

(此笔记为简化和提炼的版本,更加便于快速回顾和学习。)

**4.2.6 IP层转发分组的流程笔记**

1. **简化说明**:
    - 路由器通过路由表来确定如何转发分组。
    - 路由表指出到哪个网络应如何转发,而非指向每台主机,以减少复杂性。

2. **路由器R₂的示例**:
    - 路由器R₂的路由表显示了各个网络应如何转发。
    - 若目标在网2或网3,则由路由器R₂直接交付。
    - 若目标在网1,下一跳为路由器R₁;若在网4,则下一跳为路由器R₃。
    - 每个路由器都有两个IP地址。

3. **网络拓扑简化**:
    - 网络可以简化为链路,路由器之间的IP地址明确标注。
    - 这样的简化强调了分组是如何从一个路由器转发到另一个路由器的。

4. **路由表主要信息**:
    - 目标网络地址
    - 下一跳地址
    - 其他可能的信息:标志、参考计数、使用情况、接口等。

5. **分组转发结论**:
    - 根据目标网络地址确定下一跳路由器。
    - IP数据报最终会找到目标主机所在网络上的路由器。
    - 只有在最后一步,数据报才会直接交付给目标主机。

6. **特定主机路由**:
    - 在大多数基于网络的路由中,仍可以指定特定的目的主机。
    - 对网络管理员有利,方便控制和测试网络,考虑安全问题。

7. **默认路由**:
    - 路由器使用默认路由减少路由表空间和搜索时间。
    - 在一个网络只有少数对外连接时特别有用。
    - 默认路由对于主机发送IP数据报特别有利,尤其是小网络。

### 默认路由及路由表
1. **图4-17**: 描述了路由器R作为网络N₁的默认路由器。其中,H的路由表指出到达N₁和N₂的路径。
2. **IP数据报的首部**:
    - 没有指明“下一跳路由器的IP地址”。
    - IP数据报的首部仅包括源IP地址和目的IP地址,不包括中间路由器的IP地址。
3. **数据报转发**:
    - 路由器在收到数据报后,先从路由表得出下一跳路由器的IP地址。
    - IP地址转换为硬件地址时需要使用ARP。
    - 硬件地址被放入链路层的MAC帧首部,用于找到下一跳路由器。
4. **使用IP地址的意义**:
    - 抽象的IP地址旨在隐蔽底层网络的复杂性,使得问题更易于分析和研究。
    - 直接在路由表中使用硬件地址会导致更多问题。
5. **分组转发算法**:
    - 提取数据报的目的IP地址D,并得出其网络地址N。
    - 判断是否为直接交付或间接交付。
    - 通过路由表逐步决定转发路径,直到数据报到达目的网络。
6. **路由表的查找过程**: 可以比喻为开车到机场的过程。在不知道具体路径的情况下,每到一个交叉口(路由器)都会询问如何到达目的地。
7. **路由表的建立与更新**: 本节内容主要讨论了如何根据路由表内容进行分组转发,但并未涉及路由表如何建立或更新。

总结:

### 重点:

1. **定义与功能**:网际协议IP是一个无连接、不可靠的服务,它只提供最基本的数据包传输服务。
2. **IP地址**:由32位组成,分为网络部分和主机部分,用于唯一标识网络上的每个设备。
3. **子网划分**:为了更加灵活地进行IP地址管理,可以对IP地址进行进一步的划分。
4. **路由选择**:决定数据包从源到目标的路径选择。
5. **IP数据报格式**:定义了IP数据报的结构,包括版本、头长度、服务类型、总长度等字段。

### 难点:

1. **子网掩码**:与IP地址结合使用,用于划分网络地址和主机地址。
2. **CIDR (无类别域间路由)**:现代IP地址划分方法,用于解决传统的A、B、C类地址划分的不足。
3. **IP碎片重组**:当IP数据报在网络中传输时,可能会被分成多个碎片,这些碎片在目的地需要被重新组装。
4. **路由选择算法**:如何决定数据包的最佳路径是网络设计中的一个核心问题。

### 易错点:

1. **地址划分误解**:容易混淆传统的A、B、C类地址与CIDR。
2. **私有地址和公有地址**:私有地址只在局域网中有效,不应在互联网中使用。
3. **MTU和碎片化**:不同的网络可能有不同的MTU(最大传输单元),导致IP数据报需要碎片化。
4. **默认网关误配置**:在配置设备IP时,错误的默认网关会导致设备无法访问外部网络。

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

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

相关文章

vue 拿到数据后,没有重新渲染视图,nuxt.js拿到数据后,没有重新渲染视图,强制更新视图

以下为Vue2的解决方案 一、 Vue.set&#xff08;&#xff09; 问&#xff1a;什么情况下使用&#xff1f; 答&#xff1a;如果你向响应式数据添加新的“属性”&#xff0c;理论上&#xff0c;一般情况下是没问题的&#xff0c;但是&#xff0c;如果你的级别比较深&#xff0c;又…

ts使用记录

1、安装&#xff1a;通过管理员权权限使用cmd或者终端全局安装 npm install -g typescript2、运行&#xff1a; 可以通过tsc命令运行hello.ts文件 tsc hello.ts3、通过vscode的run code插件去右键运行 1.先安装插件run code 2.全局安装ts-node&#xff0c;npm install -g ts-n…

深入浅出的介绍一下虚拟机VMware Workstation——part3(VMware快照)

虚拟机VMware使用 前言快照的原理快照的使用 前言 可以先查看之前的2篇博文&#xff0c;学习基础的虚拟机使用 深入浅出的介绍一下虚拟机VMware Workstation——part1 深入浅出的介绍一下虚拟机VMware Workstation——part2(详细安装与使用) 由于我们使用虚拟机的初衷就是用来…

使用React、Express实现一个问卷发布/收集系统

1. 设置项目结构 questionnaire-system/client/ // 前端应用src/components/ // React组件pages/ // 页面App.jsindex.jsserver/ // 后端服务routes/ // 路由models/ // 数据模型app.jspackage.json2. 启动前端应用…

xtrabackup备份 脚本

1、全量备份在周末晚上22点执行备份&#xff0c;增量是周一到周六晚上22点执行 2、考虑到增量备份第一次是根据全量备份开始备份&#xff0c;后面都是根据上一次增量备份在增量脚本做了if判断&#xff0c;周日做一次目录清理 3、每周日晚上91点50清理目录 22点就在次备份&#…

当遇到修复错误0xc000000e时,你的电脑需要修复。如何在Windows 11/10上修复此错误

恢复错误代码0xc000000e,你的电脑需要修复,表示硬件故障或驱动器配置不正确,并可能伴随不同的错误消息,如: 所需设备未连接或无法访问 无法加载所选条目 由于应用程序丢失或损坏,无法加载所选条目 启动选择失败,因为无法访问所需的设备。 0xC000000E或STATUS_NO_SUCHDEV…

《持续交付:发布可靠软件的系统方法》- 读书笔记(五)

持续交付&#xff1a;发布可靠软件的系统方法&#xff08;五&#xff09; 第二部分——部署流水线第 5 章 部署流水线解析5.1 引言5.2 什么是部署流水线5.3 部署流水线的相关实践5.3.1 只生成一次二进制包5.3.2 对不同环境采用同一部署方式5.3.3 对部署进行冒烟测试5.3.4 向生产…

配置hpa后,target显示<unknown>/50%

背景&#xff1a; 有两个服务&#xff0c;server 负责主要后端请求&#xff0c;bill 负责计量计费请求。服务都是使用 helm 部署。测试提了一个缺陷&#xff0c;说全部服务没有配置hpa。 解决一 按照之前的代码结构添加了hpa后&#xff0c;发现&#xff1a; ➜ kubectl get…

机器学习——学习路线

一、Pytorch Pytorch安装Pytorch基础Pytorch项目实践 二、机器学习 1、监督学习 线性回归 均方差损失推导梯度下降法归一化正则化Lasso回归&岭回归多项式回归 线性分类 逻辑回归多标签分类交叉熵损失Softmax回归SVM支持向量机 决策树 剪枝与后剪枝随机森林Adaboost…

数据结构-----红黑树的插入

目录 前言 红黑树的储存结构 一、节点旋转操作 左旋&#xff08;Left Rotation&#xff09; 右旋&#xff08;Right Rotation&#xff09; 二、插入节点 1.插入的是空树 2.插入节点的key重新重复 3.插入节点的父节点是黑色 4.插入节点的父节点是红色 4.1父节点是祖父…

IDEA启动C:\Users\badboy\.jdks\corretto-17.0.7\bin\java.exe -Xmx700m报错

出现的现象 这里没有记录当时的截图&#xff0c;主要报错如下&#xff1a; C:\Users\badboy.jdks\corretto-17.0.7\bin\java.exe -Xmx700m … Error occurred during initialization of VM Failed setting boot class path. 排查方式 遇到这种问题我首先就是百度&#xff0c;…

如何打造智能公厕:实现智慧监测、自动化运营和智慧化管理

在现代城市里&#xff0c;公共厕所是人们不可或缺的基础设施之一。然而&#xff0c;传统的公厕管理方式已经无法满足人们对公厕的期望&#xff0c;因此需要采用智慧公厕管理系统来提升公厕服务的质量。本文将以智慧公厕领先厂家广州中期科技有限公司&#xff0c;大量精品案例现…

《算法通关村第一关——链表青铜挑战笔记》

《算法通关村第一关——链表青铜挑战笔记》 Java如何构造出链表 概念 如何构造出链表&#xff0c;首先必须了解什么是链表&#xff01; 单向链表就像一个铁链一样&#xff0c;元素之间相互链接&#xff0c;包含多个节点&#xff0c;每个节点有一个指向后继元素的next指针。…

STM32 Cube SPI通信实战开发调试--电源项目SPI通信

文章目录 STM32 Cube SPI通信实战开发调试--电源项目SPI通信 STM32 Cube SPI通信实战开发调试–电源项目SPI通信 文章目录 准备工作 1.1. 所用硬件 1.2. SPI 简介 1.3. 生成工程 1.3.1. 创建工程选择主控 1.3.2. 系统配置 1.3.3. 配置工程目录 读写EEPROM实验&#xff08;W25…

ES6(ECMAScript 2015)有哪些新属性,如何判断当前浏览器是否支持?

ES6&#xff08;ECMAScript 2015&#xff09;引入了许多新的语法和特性&#xff0c;以增强 JavaScript 编程语言的功能。以下是一些常见的 ES6 语法和特性以及它们的解释&#xff1a; let 和 const 声明&#xff1a; let 和 const 用于声明变量&#xff0c;代替了旧的 var 关键…

使用UiPath和AA构建的解决方案 6. 完成RPA挑战

我们来到了本书的最后一个UiPath项目——RPA挑战。 该项目也是我们Automation Anywhere项目的开始,因为我们也将与A2019一起执行RPA挑战。 本RPA挑战章将向您介绍在表单中处理动态元素的概念。此挑战具有动态变化的字段,是尝试新获得的UiPath web自动化技能的一种有趣方式。…

利用Python turtle绘制中国结附源码

一、中国结 01 平安喜乐 1&#xff09;效果图 import turtle turtle.screensize(600,800) turtle.pensize(10) turtle.pencolor("red") turtle.seth(-45) turtle.fd(102) turtle.circle(-6,180) turtle.fd(102) turtle.circle(6,180) turtle.fd(102) turtle.circle(…

PLC 学习day01 了解PLC 的组成和知识。

1.资料来源 链接&#xff1a;3.三菱PLC编程视频关于PLC工作原理的介绍_哔哩哔哩_bilibili 2. PLC 的知识 2.1 PLC 的概述及特点功能 PLC是可编程逻辑控制器&#xff08;Programmable Logic Controller&#xff09;的英文缩写&#xff0c;是融合了继电器控制功能和计算机运算功…

CentOS+宝塔 通过php脚本+shell脚本+定时任务 = 自动拉取代码git pull

效果 访问 http://demo.com/gitPull/index.php 即可让Linux系统自动到指定目录git pull 实现步骤 准备好shell脚本 #!/bin/bash # 伺服器-监视拉取代码请求 # Author: RudonFILE/www/wwwroot/demo.com/gitPull/go.action LOGPATH/www/wwwroot/demo.com/gitPull/log.log dateN…

JIRA 在 2024 年完全停止服务器版本支持

在服务器上的开源许可证版本已经要过期了&#xff0c;想去更新下。 发现&#xff0c;JIRA 的所有服务器版本的支持马上就要结束了。 这就意味着&#xff0c;如果你部署的服务器版本的 JIRA 的话&#xff0c;你将没有办法对服务器进行更新。 貌似&#xff0c;必须使用 JIRA 提供…