shuguang's blog

环境决定基础,选择决定价值,努力决定方向。

网络协议 - MAC地址、IP地址和子网掩码

  • 本文主要介绍网络通信中的端与端互相通信的基础:IP地址和MAC地址以及子网掩码。

#MAC地址

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

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

    • 前3字节:OUI (Organizationally Unique Identifier),组织唯一标识符由 IEEE 的注册管理机构分配给厂商
    • 后3字节:网络接口标识符由厂商自行分配
    • 如: 40-55-82-0A-8C-6D
  • OUI 查询:可以根据OUI查询出对应的厂商


#MAC地址不同操作系统表示格式(windows、Linux)

  • Windows

    • 40-55-82-0A-8C-6D
  • Linux、Android、Mac、iOS(类Unix操作系统)

    • 40:55:82:0A:8C:6D
  • Packet Tracer

    • 4055.820A.8C6D
  • 补充

    • 48位全为1时,代表广播地址:FF-FF-FF-FF-FF-FF

#MAC地址的相关操作

  • 查看MAC地址:ipconfig /all

  • 修改操作系统MAC地址

    修改操作系统MAC地址


#MAC地址的获取

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

    • 获取成功后,会缓存IP地址、MAC地址的映射信息,俗称:ARP缓存
    • 通过ARP广播获取的MAC地址,属于 动态(dynamic)缓存
    • 存储时间比较短(默认是2分钟),过期就自动删除

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

    • 用IP地址换MAC地址用IP地址换MAC地址
    • arp -a[主机地址]:查看ARP缓存
    • arp -d [主机地址]:删除ARP缓存
    • arp -s 主机地址 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的错误消息总是包括了源数据并返回给发送者

#IP地址

  • IP地址 (Internet Protocol Address)

    • 互联网上的每一个主机都有一个IP地址

    • 最初是 IPv4 版本,32bit(4字节),2019年11月25日,全球的IP地址已经用完

    • 后面推出了 IPv6 版本,128bit(16字节)

  • IP地址的组成(网络ID + 主机ID)

    • IP地址 由2部分组成:网络标识(网络ID)、主机标识(主机ID)
    • 通过子网掩码(subnet mask)可以得知 网络ID 、主机ID
    • 同一网段的计算机、网络ID相同。

  • 网段

    • 主机所在的网段 = 子网掩码 按位与(&)IP地址

    • 例如:

      • IP地址:192.168.1.10
      • 子网掩码:255.255.255.0
      1
      2
      3
      4
      5
      6
      7
      8
        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
      网络ID:192.168.1
      主机ID: 10
      ---------------------
      该网段下IP地址数量:256-2=254 (主机ID全0为网段、全1为广播)

  • IP地址的分类

    • A类地址(默认子网掩码 255.0.0.0)

      8bit24bit
      网络ID(0开头)主机ID
    • B类地址(默认子网掩码 255.255.0.0)

      16bit16bit
      网络ID (10开头)主机ID
    • C类地址(默认子网掩码 255.255.255.0)

      24bit8bit
      网络ID (110开头)主机ID
    • D类地址没有子网掩码,用于多播(组播)地址

      8bit24bit
      网络ID (1110开头)主机ID
    • E类地址保留为今后使用

      8bit24bit
      网络ID (1111开头)主机ID

  • 注意:
    • 只有 A、B、C 类地址才能分配给主机.

      • A类网络ID取值范围: 1~126
      • B类网络ID取值范围: 128~191
      • C类网络ID取值范围: 192~223
      • D类网络ID取值范围: 240~255
    • A类地址 网络ID不能全为0,并且127为保留网段。(如:127.0.0.1是本地环回地址Loopback表示本机地址)所以A类地址网络ID范围(1到126)

    • A类地址 所能容纳的最大主机(IP)数量为: 256 - 256 - 256 - 2


#子网掩码的CIDR表示方法


#子网划分(避免IP地址资源浪费)

  • 子网划分

    • 等长子网划分:将一个网段等分成多个子网,每个子网的可用IP地址数量一样
    • 变长子网划分每个子网的可用IP地址数量可以是不一样的
    • 子网划分器:http://www.ab126.com/web/3552.html
  • 等长子网划分
    等长子网划分

    • 以此类推:每划分2的n次方个等长子网,就需要子网掩码后移n位(添加n个1)。
  • 变长子网划分
    变长子网划分

    • 以此类推:如果子网网址的长度是原网址的(1/2)^n,那么子网掩码就应在原子网掩码基础上后移n位(添加n个1)。

#超网(合并网段)

  • 超网是将多个连续的网段合并成一个更大的网段。

  • 合并网段(子网掩码前移)

    • 合并两个网段

      1
      2
      3
      4
      5
      6
      192.168.0.0/24
      192.168.1.0/24
      --------------
      子网掩码:255.255.254.0
      新网段:192.168.0.0/23(其中192.168.0.255/23,不再为广播)
      新广播地址:192.168.1.255/23
    • 合并四个网段

      1
      2
      3
      4
      5
      6
      7
      8
      9
      10
      11
      12
      13
      192.168.0.0/24

      192.168.1.0/24

      192.168.2.0/24

      192.168.3.0/24

      -------

      子网掩码:255.255.252.0
      新网段:192.168.0.0/22
      新广播地址:192.168.3.255/22

  • 相关练习

    变长子网划分

    • 假设上有图是对192.168.0.0/24
    • C网段:子网掩码:255.255.255.128/25 网络号: 192.168.0.128/25
    • B网段:子网掩码:255.255.255.192/26 网络号: 192.168.0.192/26
    • A网段:子网掩码:255.255.255.224/27 网络号: 192.168.0.224/27
    • D网段:子网掩码:255.255.255.252/30 网络号: 192.168.0.252/30
    • E网段:子网掩码:255.255.255.252/30 网络号: 192.168.0.252/30

  • 规律总结:

    • 合并不同网段后,所能容纳的IP数量+2
    • n = 2^k(k>=1) 不会有IP浪费的合并方式,需合并的第一个网络号(二进制)末位为0且(相对于其他连续的网络号)有k个连续的0,就代表该网络号能合并n个连续网络号,子网掩码前移k位。

  • 子网和超网的判断方法

    • 该网段和默认子网掩码位数多:子网(后移)
    • 该网段和默认 子网掩码位数少:超网(前移)