- 本文主要介绍网络通信中的端与端互相通信的基础: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地址时,可以通过发送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
81100 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)
8bit 24bit 网络ID(0开头) 主机ID B类地址(默认子网掩码 255.255.0.0)
16bit 16bit 网络ID (10开头) 主机ID C类地址(默认子网掩码 255.255.255.0)
24bit 8bit 网络ID (110开头) 主机ID D类地址没有子网掩码,用于多播(组播)地址
8bit 24bit 网络ID (1110开头) 主机ID E类地址保留为今后使用
8bit 24bit 网络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表示方法
子网掩码(Subnet Mask)
- 子网掩码是用来确定IP地址的网络部分和主机部分的工具。作用是通过掩码来区分一个IP地址中的哪些位代表网络地址,哪些位代表主机地址。
- 子网掩码的不同表示方式会影响一个网络中可以划分出的子网数量和每个子网可以容纳的主机数量。
子网掩码应用举例
子网掩码 255.255.255.0:
- 对应的二进制形式是:11111111.11111111.11111111.00000000
- 前 24 位(即 11111111.11111111.11111111)是网络位,后 8 位(即 00000000)是主机位。
- 这意味着网络地址部分是 24 位,剩下的 8 位用于主机地址。也就是说,这种子网掩码适用于较小的网络,能够划分更多的子网,但每个子网中的主机数量较少。
- 每个子网最多可以容纳 254 个主机(由于两个IP地址分别用于网络地址()和广播地址,实际可用IP数是 256 - 2)。
子网掩码 255.255.0.0:
- 对应的二进制形式是:11111111.11111111.00000000.00000000
- 前 16 位(即 11111111.11111111)是网络位,后 16 位(即 00000000.00000000)是主机位。
- 这意味着网络地址部分是 16 位,剩下的 16 位用于主机地址。适用于较大的网络,可以容纳更多的主机,但每个子网的数量较少。
- 每个子网最多可以容纳 65,534 个主机(因为 16 位主机部分,2^16 - 2 = 65,534)。
CIDR (Classless Inter-Domain Routing),无类别域间路由
- 192.168.1.100/24,代表子网掩码有24个1,也就是 255.255.255.0
- 计算工具:https://www.sojson.com/convert/subnetmask.html
#子网划分(避免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
6192.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
13192.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位。
子网和超网的判断方法
- 该网段和默认子网掩码位数多:子网(后移)
- 该网段和默认 子网掩码位数少:超网(前移)