Skip to content

MAC、IP、子网

MAC地址

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

  • 全球唯一,固化了网卡在 ROM 中,由 IEEE802 标准规定

  • 前 3 个字节:OUI(Organizationally Unique Identifier),组织唯一标识符

    由 IEEE 的注册管理机构分配给厂商

  • 后 3 个字节:网络接口标识符

    由厂商自行分配

OUI 查询

组织唯一标识符网络接口标识符
40-55-820A-8C-6D

表示格式

  • Windows

    40-55-82-0A-8C-6D

  • Linux、Android、Mac、IOS

    40:55:82:0A:8C:6D

  • Packet Tracer

    4055.820A.8C6D

  • 当 48 位全为 1 时,代表广播地址

    FF-FF-FF-FF-FF-FF

地址操作与获取

  • mac 地址查询:ipconfig /all

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

image-20230612143447264

当不知道对方主机的 MAC 地址时,可以通过发送 ARP 广播获取对方的 MAC 地址

  • 获取成功后,会缓存 IP 地址、MAC 地址的映射信息,俗称:ARP 缓存

  • 通过 ARP 广播获取 MAC 地址,属于动态(dynamic)缓存

    存储时间比较短(默认是 2 分钟),过期了就自动删除

ARP

相关命令

  • arp -a [主机地址]:查询ARP缓存
  • arp -d [主机地址]:删除ARP缓存
  • arp -s 主机地址 MAC地址:增加一条缓存信息(这是静态缓存,存储时间较久,不同系统的存储时间不同)

IP地址

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

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

image-20230612151829634

IP 组成

IP 地址由 2 部分组成:网络标识(网络 ID)、主机标识(主机 ID)

  • 通过子网掩码(subnet mask)可以得知网络 ID、主机 ID

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

计算机和其他计算机通信前,会先判断目标主机和自己是否在同一网段

  • 同一网段:不需要由路由器进行转发
  • 不同网段:交由路由器进行转发
bash
IP 地址:192.168.1.10
子网掩码:255.255.255.0
  
  1100 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

该网段最多有 256 * 256 - 2 个 IP 地址

  • -2 是因为:全 0 代表网段,全 1 代表广播。网段和广播无法分配 IP 地址
  • 网段和广播无法分配 IP 地址

IP 地址分类

  • A 类地址:默认子网掩码是 255.0.0.0

    全 0 不能用,127 作为保留网段。其中 127.0.0.1 是本机环回地址(Loopback),代表本机地址

    • 第 1 部分的取值范围是 1~126
    • 每个 A 类网络能容纳的最大主机数是:256 * 256 * 256 - 2 = 2^24 - 2 = 16777214

    image-20230612162614539

  • B 类地址:默认子网掩码是 255.255.0.0

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

    image-20230612162646317

  • C 类地址:默认子网掩码是 255.255.255.0

    • 第 1 部分的取值范围是 192~223
    • 每个 B 类网络能容纳的最大主机数是:256 - 2 = 2^8 - 2 = 254

    image-20230612162708576

  • D 类地址:以 1110 开头,多播地址

    • 第 1 部分取值范围是:224~239
  • E 类地址:以 1111 开头,保留今后使用

    • 第 1 部分取值范围是:240~255

只有 A/B/C 类地址才能分配给主机

  • 主机 ID 为全 0,表示主机所在的网段
  • 主机 ID 为全 1,表示主机所在的网段的全部主机(广播)

CIDR

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

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

网络和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 地址资源?

  • 合理进行子网划分

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

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

子网划分的步骤:

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

等长子网划分-C类

bash
192.168.0.0/24 划分成两个子网后:

A子网:   192.168.0.0/25
子网掩码: 255.255.255.128
可用IP地址: 192.168.0.1 ~ 192.168.0.126 126

B子网:   192.168.0.128/25
子网掩码: 255.255.255.128
可用IP地址: 192.168.0.129 ~ 192.168.0.254 126

等分成 2 个子网:

image-20230612173157637

等分成 4 个子网:

image-20230612173858161

等分成 8 个子网:

image-20230612174012058

等长子网划分-A、B类

A 类子网划分:

image-20230613102418720

B 类子网划分:

image-20230613102538399

变长子网划分

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

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

image-20230613104932891

思考题

双方子网掩码不同,计算对方所处网段

image-20230613105543347

计算机 0 想要发送数据包,先判断计算机 1 是否和自己处于同一个网段,计算网段的方法是:IP地址 & 子网掩码

  • 计算机 0 判断计算机 1 的网段为 192.168.10.10 & 255.255.255.0 = 192.168.10.0
  • 而计算机 0 判断自身所处网段为 192.168.0.10 & 255.255.255.0 = 192.168.0.0
  • 双方不处于同一网段,所以计算机 0 无法将数据包发给计算机 1

解决方案:利用路由器

image-20230613110612668

超网

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

需求:原本有 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 地址,可以分配给计算机使用吗?

  • 192.168.0.255/24 是广播,不能分配给计算机
  • 192.168.0.255/23 主机部分并不全为 1,可以分配给计算机使用

image-20230613143541925

合并4个网段

image-20230613143952550

合并网段规律

假设 n 是 2 的 k 次幂(k ≥ 1)

  • 如果第一个网段的网络号能被 n 整除,那么由它开始连续的 n 个网段,能通过左移 k 位子网掩码进行合并

比如:

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

image-20230613144303878

子网还是超网

首先看该网段的类型,是 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
    • 根据 25 判断这个是个 A 类网络,默认子网掩码 8 位
    • 由于该网段子网掩码 16 位,比默认多,所以是子网
  • 200.100.0.0/16
    • 根据 200 判断这个是 C 类网络,默认子网掩码 24 位
    • 由于该网段子网掩码 16 位,比默认少,所以是超网

常备不懈,才能有备无患