网络协议系列三 - MAC地址/IP地址/子网掩码
Posted 1024星球
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了网络协议系列三 - MAC地址/IP地址/子网掩码相关的知识,希望对你有一定的参考价值。
MAC/IP/子网掩码在网络中非常重要,只要有网络的地方必然都会涉及这三个概念。
一、MAC
每一个网卡都有一个6字节(48bit)的MAC地址(Media Access Control)。
-
全球唯一,固化在了网卡的ROM中,由IEEE802标准规定
- 前3个字节:OUI(Organizationally Unique Identifier),组织唯一标识符,由IEEE的注册管理机构分配给厂商
- 后三个字节:网络接口标识符,由厂商自行分配
-
OUI查询
- http://standards-oui.ieee.org/oui.txt
- https://mac.51240.com/
1.1. MAC地址的表示格式
- Windows
- 32-06-52-3C-4F-2E
- Linux、android、Mac、ios
- 32:06:52:3C:4F:2E
- Packet Tracer
- 3206.523C.4F2E
- 当48位全为1时,代表广播地址(给同一个网段的所有设备)
- FF-FF-FF-FF-FF-FF
1.2. MAC地址操作
查看MAC地址(终端):
- Windows:
ipconfig
- Linux/Mac:
ifconfig
有时可以通过修改MAC地址达到上网的目的(有些公司的内网路由器设定了MAC地址白名单,我司就是这样,手机都无法连接无线)。
1.3. MAC地址的获取
当不知道对方主机的MAC地址时,可以通过发送ARP广播获取对方的MAC地址
- 获取成功后,会缓存IP地址、MAC地址的映射信息,俗称:ARP缓存
- 通过ARP广播获取的MAC地址,属于动态(dynamic)缓存。存储时间比较短(默认2分钟),过期会自动删除。
当找不到对应MAC地址时会再次发送ARP广播,所以不需要担心更换网卡后无法上网的问题。
相关命令:
arp -a [主机地址]
:查询ARP缓存arp -d [主机地址]
:删除ARP缓存arp -s [主机地址] [MAC地址]
:增加一条缓存信息(这是静态缓存,存储时间比较久,不同系统的存储时间不同)
二、IP
IP地址(Internet Protocol):互联网上的每一个主机都有一个IP地址
最初是IPv4版本,32bit(4字节),2019年11月25日,全球的IP地址已经用完。后面推出了IPv6版本,128bit(16字节)。
2.1. IP地址的组成
IP地址由2部分组成:网络标识(网络ID)、主机标识(主机ID)
同一网段的计算机,网络ID相同
通过子网掩码(subnet mask)可以计算出网络ID:IP地址 & 子网掩码
按位与(&)计算技巧:遇1就是原来的,遇0就是0。
案例一:
IP地址:192.168.1.10
子网掩码:255.255.255.0
计算网段:
1100 0000.1010 1000.0000 0001.0000 1010 -> 192.168.1.10(10进制)
&
1111 1111.1111 1111.1111 1111.0000 0000 -> 255.255.255.0(10进制)
--------------------------------------------------------------
= 1100 0000.1010 1000.0000 0001.0000 0000 -> 192.168.1.0(10进制)
192.168.1 代表网络ID,后面一部分代表主机ID。
案例二:
IP地址:192.168.1.10
子网掩码:255.255.0.0
计算网段:
1100 0000.1010 1000.0000 0001.0000 1010 -> 192.168.1.10(10进制)
&
1111 1111.1111 1111.0000 0000.0000 0000 -> 255.255.0.0(10进制)
--------------------------------------------------------------
= 1100 0000.1010 1000.0000 0000.0000 0000 -> 192.168.0.0(10进制)
192.168 代表网络ID,后面两部分位代表主机ID。
注意:主机ID要去除全0和全255,因为0代表网段(例:192.168.0.0),255代表广播地址(例:192.168.255.255)。
计算机和其他计算机通信前,会先判断目标主机和自己是否在同一网段
- 同一网段:不需要由路由器进行转发
- 不同网段:交由路由器进行转发
2.2. IP地址的分类
2.2.1. A类地址:默认子网掩码是255.0.0.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
2.2.2. B类地址:默认子网掩码是255.255.0.0
网络ID:
- 可以分配给主机的
- 第1部分的取值范围是:
128~191
- 第2部分的取值范围是:
0~255
- 第1部分的取值范围是:
主机ID:
- 第3、4部分的取值范围是:
0~255
- 每个B类网络能容纳的最大主机数是:
256 * 256 - 2 = 2的16次方 - 2 = 65534
2.2.3. C类地址:默认子网掩码是255.255.255.0
网络ID:
- 可以分配给主机的
- 第1部分的取值范围是:
192~223
- 第2、3部分的取值范围是:
0~255
- 第1部分的取值范围是:
主机ID:
- 第4部分的取值范围是:
0~255
- 每个C类网络能容纳的最大主机数是:
256 - 2 = 2的8次方 - 2 = 254
2.2.4. D类地址:以1110
开头,多播地址
D类地址没有子网掩码,用于多播(组播)地址。
第1部分取值范围是:224~239
。
2.2.5. E类地址:以1111
开头,保留为今后使用
E类地址保留为今后使用。
第1部分取值范围是:240~255
。
只有A/B/C类地址才能分配给主机。
- 主机ID为全0,表示主机所在的网段
- 主机ID为全1,表示主机所在网段的全部主机(广播)
- 可以尝试用ping给某个网段的全部主机发数据
三、子网掩码
3.1. 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
3.2. 子网划分
为什么要进行子网划分?
如果需要让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地址数量是一样的。
- 比如
172.16.0.0/16
划分4个子网段,每个段可用IP地址就是6553个。
- 比如
- 变长子网划分: 每个子网的可用IP地址数量可以是不一样的。
- 比如
191.100.0.0/16
划分3个子网段,第1段给512个IP地址,第2段给2048个IP地址,剩余的给最后一个网段。
- 比如
- 等长子网划分: 将一个网段等分成多个子网,每个子网的可用IP地址数量是一样的。
子网划分器:http://www.ab126.com/web/3552.html
子网划分的步骤:
- 确定子网的子网掩码长度
- 确定子网中第1个、最后1个主机可用的IP地址
3.2.1. 等长子网划分
等分成2个子网:
A子网:
- 网段:
192.168.0.0
- 子网掩码:
255.255.255.128/25
- 广播:
192.168.0.127
- 主机范围:
192.168.0.1 ~ 192.168.0.126
B子网:
- 网段:
192.168.0.128
- 子网掩码:
255.255.255.128/25
- 广播:
192.168.0.255
- 主机范围:
192.168.0.129 ~ 192.168.0.254
等分成4个子网:
A子网:
- 网段:
192.168.0.0
- 子网掩码:
255.255.255.192/26
- 广播:
192.168.0.63
- 主机范围:
192.168.0.1 ~ 192.168.0.62
B子网:
- 网段:
192.168.0.64
- 子网掩码:
255.255.255.192/26
- 广播:
192.168.0.127
- 主机范围:
192.168.0.65 ~ 192.168.0.126
C子网:
- 网段:
192.168.0.128
- 子网掩码:
255.255.255.192/26
- 广播:
192.168.0.191
- 主机范围:
192.168.0.129 ~ 192.168.0.190
D子网:
- 网段:
192.168.0.192
- 子网掩码:
255.255.255.192/26
- 广播:
192.168.0.255
- 主机范围:
192.168.0.193 ~ 192.168.0.254
B类子网划分:
A类子网划分:
规律:要将子网等分为
2^n
个更小的子网,则子网掩码在原来基础上右移n
位。
思考:下面两台设备是否能够正常通信?
答案:不能,因为不在同一个网段,计算机0的网段是192.168.0.0
,计算机1的网段是192.168.0.128
。要想让这两台设备进行通信,需要添加一个路由器即可。
3.2.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
思考:下面两台设备是否能够正常通信?
答案:不能,因为不在同一个网段,计算机0的网段是192.168.0.0
,计算机1的网段是192.168.10.0
。要想让这两台设备进行通信,需要添加一个路由器即可。
分析:计算机0和计算机1通信时,只有计算机1的IP地址,没有计算机1的子网掩码,最终是拿着对方的IP地址和自己的子网掩码按位与计算出的网段,所以计算机1的网段是192.168.10.0
,和计算机0不在同一个网段,也就无法进行通信。如果是计算机1和计算机0进行通信,两台设备的IP和计算机1的子网掩码按位与计算后网段都是192.168.0.0
,可以向计算机0发送消息,但由于计算机0计算和计算机1不在同一个网段,计算机0就无法向计算机1回复消息,所以无法正常通信。
注意:IP地址的分类是看IP地址的第一部分属于哪一类的范围,子网掩码和IP地址分类没有任何关系。子网划分只能是2的指数。
3.3. 超网
超网:跟子网反过来,它是将多个连续的网段合并成一个更大的网段。
3.3.1. 合并2个网段
把网络部分划分出来给主机使用。上图划分后主机位后,192.168.0.0
和192.168.1.0
的网段都是192.168.0.0
,并且由于主机位高位增加了1位,所以主机数比之前多了一倍(具体还是要减2的—去除网段和广播地址)。
需求:原来有200台计算机使用192.168.0.0/24
网段,现在希望增加200台设备到同一个网段。
- 200台在
192.168.0.0/24
网段,200台在192.168.1.0/24
网段 - 合并
192.168.0.0/24
、192.168.1.0/24
为一个网段:192.168.0.0/23
(子网掩码往左移动1位)
思考:192.168.0.255/23
这个IP地址可以分配给计算机使用么?
答案:可以。因为主机部分实际是9位,此时主机位高位是0,并不是全部为1,因此这个IP地址不是广播地址,最终是可以分配给计算机使用的。如果把主机部分的高位变为1,实际的IP地址就是192.168.1.255/23
(广播地址),这时候就不能分配给计算机使用了。
3.3.2. 合并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
网段。
思考:下面的2个网段,能通过子网掩码向左移动1位进行合并么?
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-4hNInB7L-1623118463945)(http://blog.idbeny.com/sjjgj.png@normal)]
答案:不可以。因为192.168.2.0
要想和192.168.1.0
合并为同一个网段,必须向左移动两位才可以。
3.3.3. 合并网段的规律
假设n是2的k次幂(k≥1)
- 子网掩码左移k位将能够合并n个网段
- 如果第一个网段的网络号能被n整除,那么由它开始连续的n个网段,能通过左移k位子网掩码进行合并
比如:
- 第一个网段的网络号以二进制0结尾,那么由它开始连续的2个网段,能通过左移1位子网掩码进行合并
- 第一个网段的网络号以二进制00结尾,那么由它开始连续的4个网段,能通过左移2位子网掩码进行合并
0 192.168.0.0/24 192.168.0000 00|0|0.0
1 192.168.1.0/24 192.168.0000 00|0|1.0
2 192.168.2.0/24 192.168.0000 00|1|0.0
3 192.168.3.0/24 192.168.0000 00|1|1.0
上面就很容易看出,1和2左移1位是不能合并到同一个网段的。左移1位,0和1可以合并,2和3可以合并。左移2位,0到3可以合并。
一旦使用超网,其实就没有必要划分地址分类了。当然具体还是根据需求进行定制。
3.4. 判断一个网段是子网还是超网
- 首先
- 看该网段的类型(IP地址分类)
- 默认情况下,A类子网掩码的位数是8(
255.0.0.0
),B类子网掩码的位数是16(255.255.0.0
),C类子网掩码的位数是24(255.255.255.0
)
- 然后
- 如果该网段的子网掩码位数比默认子网掩码多,就是子网
- 如果该网段的子网掩码位数比默认子网掩码少,就是超网
例:
25.100.0.0/16
是一个A类子网;200.100.0.0/16
是一个C类超网。
以上是关于网络协议系列三 - MAC地址/IP地址/子网掩码的主要内容,如果未能解决你的问题,请参考以下文章