《网络协议》01. 基本概念


title: 《网络协议》01. 基本概念
date: 2022-08-30 09:50:52
updated: 2023-11-05 15:28:52
categories: 学习记录:网络协议
excerpt: 互联网、网络互连模型(OSI,TCP/IP)、计算机通信基础、MAC 地址、ARP & ICMP、IP & 子网掩码、CIDR 表示方法、子网、超网、路由、网络 & 互联网 & 因特网、ISP、网络分类、上网方式、公网 & 私网(NAT,端口映射)。
comments: false
tags:
top_image: /images/backimg/SunsetClimbing.png


网络协议

  • 1:互联网 & 协议
    • 1.1:跨平台原理
    • 1.2:客户端与服务器
  • 2:网络互连模型
  • 3:计算机通信基础
    • 3.1:网线直连
    • 3.2:同轴电缆
    • 3.3:集线器
    • 3.4:网桥
    • 3.5:交换机
    • 3.6:路由器
  • 4:MAC 地址
    • 4.1:MAC 地址格式
    • 4.2:MAC 地址操作
  • 5:ARP & ICMP
  • 6:IP 地址
    • 6.1:IP & 子网掩码
    • 6.2:IP 地址分类
      • 6.2.1:A 类地址
      • 6.2.2:B 类地址
      • 6.2.3:C 类地址
      • 6.2.4:D 类地址
      • 6.2.5:E 类地址
    • 6.3:CIDR 表示方法
  • 7:子网
    • 7.1:等长子网划分
      • 7.1.1:C 类子网划分
        • 7.1.1.1:等分成 2 个子网
        • 7.1.1.2:等分成 4 个子网
        • 7.1.1.3:等分成 8 个子网
      • 7.1.2:B 类子网划分
      • 7.1.3:A 类子网划分
    • 7.2:变长子网划分
  • 8:超网
    • 8.1:合并 4 个网段
    • 8.2:合并网段的规律
    • 8.3:判断一个网段是子网还是超网
  • 9:路由
    • 9.1:路由表示例一
    • 9.2:路由表示例二
  • 10:数据包的传输过程
    • 10.1:第一个包的丢失
  • 11:网络 & 互联网 & 因特网
  • 12:ISP
  • 13:网络分类
    • 13.1:局域网
    • 13.2:城域网
    • 13.3:广域网
  • 14:上网方式
    • 14.1:电话线入户
    • 14.2:光纤入户
    • 14.3:网线入户
    • 14.4:家用无线路由器的逻辑结构
    • 14.5:常见接口
  • 15:公网 & 私网
    • 15.1:公网 IP
    • 15.2:私网 IP
    • 15.3:NAT
    • 15.4:端口映射


网络协议从入门到底层原理。

1:互联网 & 协议

互联网(internet)的出现,彻底改变了人们的生活方式,足不出户就可以购物、聊天、看电影、买车票、上班等。

在这里插入图片描述

数据是如何从一个设备传递到另一个设备的?

  • 这一切都是由网络协议来规定的。
  • 没有网络协议,就没有今天的互联网。

什么是协议

  • 协议就是通用的标准。
  • 如果没有一个国际通用的标准,那么相互之间的交互就会很麻烦。

1.1:跨平台原理

C/C++ 跨平台原理
使用平台相关的编译器生成对应平台的可执行文件。

在这里插入图片描述

Java 跨平台的原理

在这里插入图片描述

C/C++ 编译之后可直接生成平台对应的可执行文件
Java编译之后生成字节码文件。对于操作系统来说,不是可执行文件。

1.2:客户端与服务器

在这里插入图片描述

其中,后端使用 Java 的一种结构如下:

在这里插入图片描述

客户端向服务器请求:

http://IP地址:端口号/项目
例:
http://10.10.125.41:8080/qq/login/...

2:网络互连模型

  • 国际标准:OSI 参考模型(7层)
  • 实际应用:TCP/IP 协议(4层)
  • 学习研究:(5层)

为了更好地促进互联网络的研究和发展,国际标准化组织 ISO 在 1985 年制定了网络互连模型 OSI 参考模型(Open System Interconnect Reference Model)。

在这里插入图片描述

网络请求过程:不管什么协议,都是经过下列的 包装 + 解包 过程。

在这里插入图片描述

3:计算机通信基础

先不考虑无线连接的问题。

  • 需要得知对方的 IP 地址。
  • 最终是根据 MAC 地址(网卡地址),输送数据到网卡,被网卡接收。
    • 如果网卡发现数据的目标 MAC 地址是自己,就会将数据传递给上一层进行处理。
    • 如果网卡发现数据的目标 MAC 地址不是自己,就会将数据丢弃,不会传递给上一层进行处理。

在这里插入图片描述

3.1:网线直连

  • 需要用交叉线(不是直通线)
  • 同一网段

在这里插入图片描述

  • ping 走的是 ICMP 协议。
  • ARP 协议:已知 IP 地址,不知道 MAC 地址时,通过广播获取 MAC 地址。

右边出现的 3 个 ARP 包,实际上是一次完整的发送请求、接收响应的过程。
ICMP 包同理。

3.2:同轴电缆

同轴电缆(Coaxial),连接同一网段。

在这里插入图片描述

3.3:集线器

集线器(Hub),连接同一网段。

在这里插入图片描述

集线器相比同轴电缆唯一的优点:连着集线器的某一个设备中间线路出问题,不会影响到连着集线器的其他设备的通信。

3.4:网桥

网桥(Bridge)。还是连接同一网段。

在这里插入图片描述

能够通过自学习得知每个接口那侧的 MAC 地址,从而起到隔绝冲突域的作用。

3.5:交换机

交换机(Switch)。依旧是连接同一网段。

在这里插入图片描述

若全球所有设备都用交换机连接

  1. 他们必然处于同一网段,因此 IP 地址可能会不够用。
  2. 第一次发送数据包仍然需要 ARP 广播,耗费大量时间。
  3. 形成广播风暴,只要有一个设备发送 ARP 广播,全球设备都能收到。

3.6:路由器

路由器(Router)。路由器含有网关(Gateway),网关也有 IP 和 MAC 地址。

在这里插入图片描述

主机在发数据之前,首先会判断目标主机的 IP 地址跟它是否在同一个网段:

  1. 在同一个网段:ARP广播、通过交换机 / 集线器传递数据
  2. 不在同一个网段:通过路由器转发数据

在这里插入图片描述

4:MAC 地址

每个网卡都有一个 6 字节(48 bit)的 MAC 地址(Media Access Control Address)。

在这里插入图片描述

MAC 地址全球唯一,固化在网卡的 ROM 中,由 IEEE802 标准规定。

  • 前 3 字节:OUI(Organizationally Unique Identifier),组织唯一标识符。
    由 IEEE 的注册管理机构分配给厂商
  • 后 3 字节:网络接口标识符。
    由厂商自行分配

OUI 查询:可以根据 OUI 查询出对应的厂商。

  • http://standards-oui.ieee.org/oui.txt
  • https://mac.bmcx.com/

4.1:MAC 地址格式

  • Windows
    40-55-82-0A-8C-6D
  • Linux、Unix、Android、Mac、iOS
    40:55:82:0A:8C:6D
  • Packet Tracer
    4055.820A.8C6D

当 48 位全为 1 时(FF-FF-FF-FF-FF-FF),代表广播地址。

4.2:MAC 地址操作

查看 MAC 地址(Windows):
ipconfig /all

修改 MAC 地址

更改适配器选项 -> 属性 -> 配置 -> 高级 -> 网络地址

在这里插入图片描述

这里修改 MAC 地址只是以这个值作为 MAC 地址上网,网卡的 MAC 地址无法修改。
有时可通过修改 MAC 地址蹭网。

  • 当不知道对方主机的 MAC 地址时,可以通过发送 ARP 广播获取对方的 MAC 地址。
  • 获取成功后,会缓存 IP 地址、MAC 地址的映射信息,俗称:ARP 缓存

通过 ARP 广播获取的 MAC 地址,属于动态(dynamic)缓存。
存储时间比较短(默认是 2 分钟),过期就自动删除。

查看ARP缓存
arp -a [<IP>]

删除ARP缓存
arp -d [<IP>]

增加一条缓存信息(静态缓存):
arp -s <IP> <MAC 地址>

5:ARP & ICMP

ARP(Address Resolution Protocol,地址解析协议)

  • 通过 IP 地址获取 MAC 地址

RARP(Reverse Address Resolution Protocol,逆地址解析协议)

  • 使用与 ARP 相同的报头结构
  • 作用与 ARP 相反,通过 MAC 地址获取 IP 地址
  • 后来被 BOOTP、DHCP 所取代

ICMP(Internet Control Message Protocol,互联网控制消息协议)

  • IPv4 中的 ICMP 被称作 ICMPv4,IPv6 中的 ICMP 则被称作 ICMPv6
  • 通常用于返回错误信息。比如 TTL 值过期、目的不可达
  • ICMP 的错误消息总是包括了源数据并返回给发送者

6:IP 地址

IP 地址(Internet Protocol Address):互联网上的每一个主机都有 IP 地址。

  • 最初是 IPv4 版本,32 bit(4字节),2019 年 11 月 25 日,全球的 IP 地址已经用完
  • 后面推出了 IPv6 版本,128 bit(16字节)

这里先讨论 IPv4。

IP 按字节分为 4 部分:

在这里插入图片描述

6.1:IP & 子网掩码

IP 地址由两部分组成:

  • 网络标识(网络 ID)
  • 主机标识(主机 ID)

网络 id 相同的主机处在同一网段。

通过子网掩码(subnet mask)可以计算出网络 ID

  • 网络 ID = 子网掩码 & IP

主机所在的网段 = 子网掩码 & IP地址

在这里插入图片描述

IP 地址:192.168.1.10
子网掩码:255.255.255.01100 0000 . 1010 1000 . 0000 0001 . 0000 1010
&	1111 1111 . 1111 1111 . 1111 1111 . 0000 0000
----------------------------------------------------1100 0000 . 1010 1000 . 0000 0001 . 0000 0000网段:192.168.1.0  

例:

IP 地址:   130.168.1.10
子网掩码:  255.255.0.0
网段:      130.168.0.0该网段最多有 256*256-2 个 IP 地址
130.168.0.0 代表网段
130.168.255.255 代表广播
网段和广播无法分配 IP 地址
  • 主机 ID 全为 0,表示主机所在的网段。
  • 主机 ID 全为 1,表示主机所在网段的全部主机(广播)。

可以尝试用广播 ping 某个网段的全部主机。

6.2:IP 地址分类

IP 地址分为 5 类。

  • A 类地址:默认子网掩码是 255.0.0.0,网络 ID 以 0 开头。
  • B 类地址:默认子网掩码是 255.255.0.0,网络 ID 以 10 开头。
  • C 类地址:默认子网掩码是 255.255.255.0,网络 ID 以 110 开头。
  • D 类地址:没有子网掩码,网络 ID 以 1110 开头。
  • E 类地址:保留为今后使用,以 1111 开头。

只有 A/B/C 类地址用来分配给主机。

6.2.1:A 类地址

默认子网掩码是 255.0.0.0,网络 ID 以 0 开头。

在这里插入图片描述

  • 网络 ID:
    • 0 不能用,127 作为保留网段。
    • 其中 127.0.0.1 是本地回环地址(Loopback),代表本机地址。
    • 第 1 部分可以分配的取值范围是:1 ~ 126。
  • 主机 ID:
    • 第 2、3、4 部分的取值范围是:0 ~ 255。
    • 每个 A 类网络能容纳的最大主机数是:256 * 256 * 256 - 2 = 2^24 - 2 = 16777214

6.2.2:B 类地址

默认子网掩码是 255.255.0.0,网络 ID 以 10 开头。

在这里插入图片描述

  • 网络 ID:
    • 第 1 部分的取值范围是:128 ~ 191
    • 第 2 部分的取值范围是:0 ~ 255
  • 主机 ID:
    • 第 3、4 部分的取值范围是:0 ~ 255
    • 每个 B 类网络能容纳的最大主机数是:256 * 256 - 2 = 2^16 - 2 = 65534

6.2.3:C 类地址

默认子网掩码是 255.255.255.0,网络 ID 以 110 开头。

在这里插入图片描述

  • 网络 ID:
    • 第 1 部分的取值范围是:192 ~ 223
    • 第 2、3 部分的取值范围是:0 ~ 255
  • 主机 ID:
    • 第 4 部分的取值范围是:0 ~ 255
    • 每个 C 类网络能容纳的最大主机数是:256 - 2 = 254

6.2.4:D 类地址

没有子网掩码,网络 ID 以 1110 开头。

在这里插入图片描述

  • 用于多播(组播)地址。
  • 第一部分取值范围:224 ~ 239。

6.2.5:E 类地址

保留为今后使用,以 1111 开头。

在这里插入图片描述

  • 保留为今后使用。
  • 第一部分取值是:240 ~ 255。

6.3:CIDR 表示方法

CIDR(Classless Inter-Domain Routing),无类别域间路由

子网掩码的 CIDR 表示方法:

  • 192.168.1.100/24,代表子网掩码有 24 个 1,也就是 255.255.255.0
  • 123.210.100.200/16,代表子网掩码有 16 个 1,也就是 255.255.0.0

计算工具:https://www.sojson.com/convert/subnetmask.html

7:子网

子网划分:借用主机位作子网位,划分出多个子网。

子网划分可以分为

  • 等长子网划分:将一个网段等分成多个子网,每个子网的可用 IP 地址数量一样。
  • 变长子网划分:每个子网的可用 IP 地址数量可以是不一样的。

子网划分的步骤

  1. 确定子网的子网掩码长度
  2. 确定子网中第 1 个、最后 1 个主机可用的 IP 地址

为什么要进行子网划分

  • 如果需要让 200 台主机在同一个网段内,可以分配一个 C 类网段,比如 192.168.1.0/24。
    • 共 254 个可用 IP 地址:192.168.1.1 ~ 192.168.1.254
    • 多出 54 个空闲的 IP 地址,这种情况并不算浪费资源
  • 如果需要让 500 台主机在同一个网段内,那就分配一个 B 类网段,比如 191.100.0.0/16。
    • 共 65534 个可用 IP 地址:191.100.0.1 ~ 191.100.255.254
    • 多出 65034 个空闲的IP地址,这种情况属于极大的浪费资源
  • 如何尽量避免浪费 IP 地址资源:合理进行子网划分。

7.1:等长子网划分

7.1.1:C 类子网划分

7.1.1.1:等分成 2 个子网

在这里插入图片描述

7.1.1.2:等分成 4 个子网

在这里插入图片描述

等分成 4 个子网的广播地址:

在这里插入图片描述

7.1.1.3:等分成 8 个子网

在这里插入图片描述

7.1.2:B 类子网划分

在这里插入图片描述

7.1.3:A 类子网划分

在这里插入图片描述

7.2:变长子网划分

如果一个子网地址块的长度是原网段的 (1/2)^n,那么

  • 子网的子网掩码,就是在原网段的子网掩码基础上增加 n 个 1。
  • 不等长的子网,子网掩码不同。

在这里插入图片描述

假设上图是对 192.168.0.0/24 进行变长子网划分- C 网段:子网掩码是 255.255.255.128/25- B 网段:子网掩码是 255.255.255.192/26- A 网段:子网掩码是 255.255.255.224/27- D 网段:子网掩码是 255.255.255.252/30- E 网段:子网掩码是 255.255.255.252/30

8:超网

超网:跟子网反过来,它是将多个连续的网段合并成一个更大的网段。

示例

  • 原本有 200 台计算机使用 192.168.0.0/24 网段,现在希望增加 200 台设备到同一个网段。
    • 200 台在 192.168.0.0/24 网段,200 台在 192.168.1.0/24 网段
    • 合并 192.168.0.0/24192.168.1.0/24 为一个网段:192.168.0.0/23(子网掩码往左移动1位)

在这里插入图片描述

思考:对于上面的例子,192.168.0.255/23 这个 IP 地址,可以分配给计算机使用吗?

由下图知,主机位不全为 0 或 1,所以可以。

在这里插入图片描述

192.168.0.255/24 与 192.168.1.255/23 则不能分配给计算机。

8.1:合并 4 个网段

子网掩码向左移动 2 位,可以合并 4 个网段。

在这里插入图片描述

如上图,将 192.168.0.0/24、192.168.1.0/24、192.168.2.0/24、192.168.3.0/24 合并为 192.168.0.0/22 网段。

思考:192.168.1.0/24、192.168.2.0/24 两个网段,能通过子网掩码向左移动 1 位进行合并吗?

在这里插入图片描述

答:不能。

8.2:合并网段的规律

  • 假设 n 是 2 的 k 次幂( k >= 1),子网掩码左移 k 位能够合并 n 个网段

在这里插入图片描述

  • 假设 n 是 2 的 k 次幂(k >= 1),如果第一个网段的网络号能被 n 整除,那么由它开始连续的 n 个网段,能通过左移 k 位子网掩码进行合并。

例如:

  • 第一个网段的网络号以二进制 0 结尾,那么由它开始连续的 2 个网段,能通过左移 1 位子网掩码进行合并
  • 第一个网段的网络号以二进制 00 结尾,那么由它开始连续的 4 个网段,能通过左移 2 位子网掩码进行合并
  • 第一个网段的网络号以二进制 000 结尾,那么由它开始连续的 8 个网段,能通过左移 3 位子网掩码进行合并

在这里插入图片描述

8.3:判断一个网段是子网还是超网

  • 首先看该网段的类型,是 A 类网络、B 类网络、C 类网络?
    • 默认情况下
    • A 类子网掩码的位数是 8(255.0.0.0)
    • B 类子网掩码的位数是 16(255.255.0.0)
    • C 类子网掩码的位数是 24(255.255.255.0)
  • 如果该网段的子网掩码位数比默认子网掩码,就是子网
  • 如果该网段的子网掩码位数比默认子网掩码,就是超网

例:

25.100.0.0/16 是 A 类子网
根据 25 判断出这是个 A 类网络,默认子网掩码 8 位。
由于该网段子网掩码 16 位,比默认多,所以是子网。

200.100.0.0/16 是 C 类超网
根据 200 判断出这是个 C 类网络,默认子网掩码 24 位。
由于该网段子网掩码 16 位,比默认少,所以是超网。

9:路由

在不同网段之间转发数据,需要有路由器的支持

默认情况下,路由器只知道跟它直连的网段,非直连的网段需要通过静态路由和动态路由告诉它。

  • 静态路由
    • 管理员手动添加路由信息
    • 适用于小规模网络
  • 动态路由
    • 路由器通过路由选择协议(比如 RIP、OSPF)自动获取路由信息
    • 适用于大规模网络

9.1:路由表示例一

让 4 台主机之间可以互相通信:

在这里插入图片描述

路由器 0 的路由表

在这里插入图片描述

路由器 1 的路由表

在这里插入图片描述

9.2:路由表示例二

让 4 台主机之间可以互相通信:

在这里插入图片描述

路由表

在这里插入图片描述

10:数据包的传输过程

这里仅仅是简述一下数据包的传输过程,之后介绍网络分层时,会再次详细讲解数据包的传输过程。

在这里插入图片描述

源 IP、目标 IP 没有变;源 MAC、目标 MAC 一直在变。

10.1:第一个包的丢失

如图,从 192.168.1.10/24 往 192.168.2.10/24 虽然可以 ping 通,但是丢失了第一个数据包。

在这里插入图片描述

原因:计算机0 往路由器发送了 ARP 包,路由器收到后回复了 ARP 包,从而计算机0 就开始发送 ICMP 包,路由器0 收到 ICMP 包后准备发往计算机1,但是路由器还不知道计算机1 的 MAC 地址,所以要往计算机1 发送 ARP 包,因此就把 ICMP 包给丢了,所以第一次 ping 会超时。

11:网络 & 互联网 & 因特网

  • 网络(Network
  • 互联网(internet
  • 因特网(Internet

在这里插入图片描述

全世界最大的互联网:因特网(Internet),将全世界所有的计算机都连接在一起。

  • 一般使用大写 I 开头的 Internet 特指因特网。
  • 日常生活中说的:你的电脑上不了网。其实就是指:你的电脑没有连接到因特网。

12:ISP

ISP(Internet Service Provider),Internet 服务提供商,比如移动、电信、网通、铁通等。

我们平时拉的宽带都是通过 ISP 连接到 Internet 的。

在这里插入图片描述

平时见到左边的下载列表,其实是给使用不同 ISP 的用户对应的选择。

在这里插入图片描述

13:网络分类

按照不同的分类方式,可以将网络分为以下几类:

  • 局域网(LAN)
  • 城域网(MAN)
  • 广域网(WAN)
  • 个人区域网(PAN)
  • 无线局域网(WLAN)
  • 全球局域网(GAN)
  • 虚拟局域网(VLAN)

按照网络的范围进行分类,可以分为:局域网、城域网、广域网等

13.1:局域网

局域网(Local Area Network,LAN)

  • 一般是范围在几百米到十几公里内的计算机所构成的计算机网络
  • 常用于公司、家庭、学校、医院、机关、一幢大楼等
  • 局域网中使用最广泛的网络技术叫:以太网(Ethernet)
  • 在电脑、手机上经常见到的一个英文 WLAN(Wireless LAN),意思是无线局域网。

13.2:城域网

城域网(Metropolitan Area Network,MAN)

  • 一般范围是数十公里到数百公里,可以覆盖一个城市

13.3:广域网

广域网(Wide Area Network,WAN)

  • 一般范围是几百公里到几千公里,可以覆盖一个国家。通常都需要租用 ISP 的线路。

14:上网方式

14.1:电话线入户

在这里插入图片描述

ADSL(Asymmetric Digital Subscriber Line),电话拨号上网。

  • 非对称数字用户线路,提供上、下行不对称的传输带宽
  • 猫(Modem),调制解调器,进行数字信号和模拟信号的转换

14.2:光纤入户

在这里插入图片描述

光猫(Optical Modem),光调制解调器,进行数字信号和光信号的转换。

14.3:网线入户

在这里插入图片描述

14.4:家用无线路由器的逻辑结构

在这里插入图片描述

14.5:常见接口

  • FastEthernet:快速以太网接口(100M)
  • GigabitEthernet:千兆以太网接口(1000M)
  • Serial:串行接口

15:公网 & 私网

IP 地址也分为:公网 IP、私网 IP(内网)。

为什么要分公网、私网?
IP 地址不够用。
便于管理。

15.1:公网 IP

公网 IP(Public)。

  • Internet 上的路由器中只有到达公网的路由表,没有到达私网的路由表
  • 公网 IP 由因特网信息中心(Internet Network Information Cetner,Inter NIC)统一分配管理
  • ISP 需要向 Inter NIC 申请公网 IP

15.2:私网 IP

私网 IP(Private),主要用于局域网。

下面是保留的私网网段:

  • A 类:10.0.0.0/8,1 个 A 类网络
  • B 类:172.16.0.0/16 ~ 172.31.0.0/16,16 个 B 类网络
  • C 类:192.168.0.0/24 ~ 192.168.255.0/24,256 个 C 类网络

15.3:NAT

NAT(Network Address Translation)。

私网 IP 想访问 Internet 需要进行 NAT 转换,借助公网 IP 上网。这一步可以由路由器完成。

特点

  • 节约公网 IP 资源
  • 隐藏内部真实 IP

分类

  • 静态转换
    手动配置 NAT 映射表
    一对一转换
  • 动态转换
    定义外部地址池,动态随机转换
    一对一转换
  • PAT(Port Address Translation),目前应用最广泛的 NAT 实现方式
    多对一转换,最大程度节约公网 IP 资源
    采用端口多路复用方式,通过端口号标识不同的数据流

15.4:端口映射

端口(0 ~ 65535)是每个软件的一个通讯进出口。

类似于 NAT。

端口映射,就是将内网主机的一个端口映射到外网主机的一个端口。当用户访问外网 IP 的这个端口时,外网主机自动将请求映射到内网对应的机器上。


无奈夜长人不寐,数声和月到帘栊。

——《捣练子令 · 深院静》(五代)李煜

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

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

相关文章

以华为为例:GTM岗位主要是做什么的?如何做好GTM工作?

如何让产品上市以后卖得更好&#xff1f;这是一个系统工程。 许多公司在学习华为&#xff08;尤其是做消费者业务&#xff0c;通俗地说就是2C业务的公司或产品&#xff09;&#xff0c;设立GTM相关的岗位。我们来看一下&#xff0c;GTM岗位主要做些什么&#xff0c;如何才能胜…

关键字驱动自动化测试框架搭建详解

前言 那么这篇文章我们将了解关键字驱动测试又是如何驱动自动化测试完成整个测试过程的。关键字驱动框架是一种功能自动化测试框架&#xff0c;它也被称为表格驱动测试或者基于动作字的测试。关键字驱动的框架的基本工作是将测试用例分成四个不同的部分。首先是测试步骤&#…

dockerfile避坑笔记(VMWare下使用Ubuntu在Ubuntu20.04基础镜像下docker打包多个go项目)

一、docker简介 docker是一种方便跨平台迁移应用的程序&#xff0c;通过docker可以实现在同一类操作系统中&#xff0c;如Ubuntu和RedHat两个linux操作系统中&#xff0c;实现程序的跨平台部署。比如我在Ubuntu中打包了一个go项目的docker镜像&#xff08;镜像为二进制文件&am…

pytorch直线拟合

目录 1、数据分析 2、pytorch直线拟合 1、数据分析 直线拟合的前提条件通常包括以下几点&#xff1a; 存在线性关系&#xff1a;这是进行直线拟合的基础&#xff0c;数据点之间应该存在一种线性关系&#xff0c;即数据的分布可以用直线来近似描述。这种线性关系可以是数据点…

Go Gin中间件

Gin是一个用Go语言编写的Web框架&#xff0c;它提供了一种简单的方式来创建HTTP路由和处理HTTP请求。中间件是Gin框架中的一个重要概念&#xff0c;它可以用来处理HTTP请求和响应&#xff0c;或者在处理请求之前和之后执行一些操作。 以下是关于Gin中间件开发的一些基本信息&am…

小程序https证书

小程序通常需要与服务器进行数据交换&#xff0c;包括用户登录信息、个人资料、支付信息等敏感数据。如果不使用HTTPS&#xff0c;这些数据将以明文的方式在网络上传输&#xff0c;容易被恶意攻击者截获和窃取。HTTPS通过数据加密来解决这个问题&#xff0c;确保数据在传输过程…

策略模式在数据接收和发送场景的应用

在本篇文章中&#xff0c;我们介绍了策略模式&#xff0c;并在数据接收和发送场景中使用了策略模式。 背景 在最近项目中&#xff0c;需要与外部系统进行数据交互&#xff0c;刚开始交互的系统较为单一&#xff0c;刚开始设计方案时打算使用了if else 进行判断&#xff1a; if(…

函数调用指令, 返回机制分析(x86_64)

预备 #include <stdio.h>int addDetail(int a, int b) {return a b; }int add(int a, int b) {int c;c addDetail(a, b);return c; }int main(int argc, char *argv[]) {int sum;sum add(3, 5);printf("sum %d\n", sum);return 0; }汇编 main add addDeta…

ZZ038 物联网应用与服务赛题第J套

2023年全国职业院校技能大赛 中职组 物联网应用与服务 任 务 书 &#xff08;J卷&#xff09; 赛位号&#xff1a;______________ 竞赛须知 一、注意事项 1.检查硬件设备、电脑设备是否正常。检查竞赛所需的各项设备、软件和竞赛材料等&#xff1b; 2.竞赛任务中所使用…

FreeRTOS_任务通知

目录 1. 任务通知简介 2. 发送任务通知 2.1 函数 xTaskNotify() 2.2 函数 xTaskNotifyFromISR() 2.3 函数 xTaskNotifyGive() 2.4 函数 vTaskNotifyGiveFromISR() 2.5 函数 xTaskNotifyAndQuery() 2.6 函数 xTaskNotifyAndQueryFromISR() 3. 任务通知通用发送函数 3.…

基于 golang 从零到一实现时间轮算法 (二)

Go实现单机版时间轮 上一章介绍了时间轮的相关概念&#xff0c;接下来我们会使用 golang 标准库的定时器工具 time ticker 结合环状数组的设计思路&#xff0c;实现一个单机版的单级时间轮。 首先我们先运行一下下面的源码&#xff0c;看一下如何使用。 https://github.com/x…

【Python语言速回顾】——爬虫基础知识

目录 一、爬虫概述 1、准备工作 2、爬虫类型 3、爬虫原理 二、爬虫三大库 1、Requests库 2、BeautifulSoup库 3、Lxml库 一、爬虫概述 爬虫又称网络机器人&#xff0c;可以代替人工从互联网中采集、整理数据。常见的网络爬虫主要有百度公司的Baiduspider、360公司的36…

自动驾驶算法(七):基于遗传算法的路径规划(下)

目录 1 遗传选择 2 遗传交叉 3 遗传变异 4 结语 1 遗传选择 我们书接上回&#xff0c;我们完成了种群的初始化&#xff0c;将所有的种群放入了new_pop1中&#xff0c;这个new_pop1是一个&#xff08;种群大小 * 路径&#xff09;的一个矩阵&#xff0c;我们来看如何进行遗传…

Java面向对象(进阶)-- super关键字的使用与子类对象实例化全过程

文章目录 一、super关键字的使用&#xff08;1&#xff09;为什么需要super&#xff1f;&#xff08;2&#xff09;super的理解&#xff08;3&#xff09;super可以调用的结构1、super调用方法举例1举例2举例3小结 2、super调用属性举例1举例2举例3小结 3、super调用构造器引入…

el-tree中展示项换行展示

文章目录 效果如下所示&#xff1a;没有换行展示的效果修改样式换行之后的展示效果 想要了解el-tree使用的详情往下看代码和数据如下所示Vue代码中可能使用到的数据如下Vue的代码如下&#xff1a;没有换行展示的效果换行之后的展示效果样式调试 效果如下所示&#xff1a; 没有…

数据库的备份和恢复

备份&#xff1a;完全备份&#xff0c;增量备份 完全备份&#xff1a;将整个数据库完整的进行备份 增量备份&#xff1a;在完全备份基础的之上&#xff0c;对后续新增的内容进行备份 备份的需求 1生产环境中&#xff0c;数据的安全性至关重要&#xff0c;任何数据都可能产生非…

【计算机架构】程序指令计数 | 功耗计算 | 电力功耗 | 安德尔定律(Amdahl‘s Law)

0x00 程序的指令计数 程序的指令计数&#xff08;Instruction Count&#xff09;由程序本身、ISA&#xff08;指令集架构&#xff09;和编译器决定。这表示一个程序中包含的指令数量受到程序编写方式、计算机体系结构和编译器的影响。 每条指令的平均周期数&#xff08;Averag…

在云上jupylab(codelab)常用的shell命令

1、切换当前文件目录位置&#xff1a; %cd /project/train/ 2、删除目标文件夹和文件夹下面的内容&#xff0c;注意这个r是不能少的&#xff1a; !rm -r /project/train/src_repo/dataset 3、创建数据集相关文件夹 !mkdir /project/train/src_repo/dataset 4、复制指定…

想学计算机编程从什么学起?零基础如何自学计算机编程?中文编程开发语言工具箱之渐变标签组构件

想学计算机编程从什么学起&#xff1f;零基础如何自学计算机编程&#xff1f; 给大家分享一款中文编程工具&#xff0c;零基础轻松学编程&#xff0c;不需英语基础&#xff0c;编程工具可下载。 这款工具不但可以连接部分硬件&#xff0c;而且可以开发大型的软件&#xff0c;…

linux硬盘挂载(linux 修改某个磁盘挂载到新目录\lvm扩容)

文章目录 一、什么是硬盘挂载二、linux 修改某个磁盘挂载到新目录三、Esxi下扩容硬盘1. 判断一个已有的文件系统是否使用了LVM(逻辑卷管理)2. 原本文件系统没有使用lvm&#xff0c;还可以lvm扩容吗&#xff1f;3. 原有文件系统使用lvm场景下扩容(lvm扩容)了解LVMEsxi LVM扩容步…