网络协议二:MAC地址与IP地址
MAC地址
简介
- 每一个网卡都有一个6字节(48bit)的MAC地址(Media Access Control Adress),即MAC地址就是网卡地址
- MAC地址全球唯一,固化在了网卡的ROM中,由IEEE802标准规定
- 前3字节:OUI(Organizationally Unique Identifier)组织唯一标识符
- 由IEEE的注册管理机构分配给厂商
- 后3字节:网络接口标识符
- 由厂商自行分配
- 即:只要同一个厂商生产的网卡,每个网卡的前三个字节的MAC地址是一样的
-
举例:
//组织唯一标识符 网络接口标识符 40-55-82-0A-8C-6D
- 前3字节:OUI(Organizationally Unique Identifier)组织唯一标识符
- OUI查询:可以查询出一个MAC地址属于哪个厂商
MAC地址的表示格式
- 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
- 当发送ARP广播时,发送的数据有:源PC的IP地址-目的PC的IP地址、源PC的MAC地址-
FF-FF-FF-FF-FF-FF
等 - 即只要发送到一个PC的数据中目的MAC地址为
FF-FF-FF-FF-FF-FF
,说明这个发送是ARP广播,是来想目的IP对应的PC索要MAC地址的
- 当发送ARP广播时,发送的数据有:源PC的IP地址-目的PC的IP地址、源PC的MAC地址-
MAC地址的操作
- 查看MAC地址:ipconfig /all
- 修改MAC地址
- 更改适配器选项-属性-配置-高级-网络地址
- 填写的时候需要把减号(-)去掉
- 有时可以通过修改MAC地址蹭网
- 疑问:MAC地址不是固定写死在网卡硬件中的吗? 为何可以修改呢?
- 网卡中的MAC地址是固定地址,操作系统也可以设置虚拟的MAC地址
- 如果操作系统没有设置MAC地址,那么就用网卡的固定MAC地址,如果设置则使用设置地址
MAC地址的获取
- 当不知道对方主机的MAC地址时,可以通过发送ARP广播获取对方的MAC地址
- 获取成功后,会缓存IP地址、MAC地址的映射信息(在PC本机中缓存),俗称:ARP缓存
- 通过ARP广播获取的MAC地址,属于动态(dynamic)缓存
- 存储时间比较短(默认是2分钟),过期了就自动删除
-
相关命令(PC的终端查询)
arp -a [主机地址]:查询ARP缓存 arp -d [主机地址]:删除ARP缓存 arp -s 主机地址 MAC地址:增加一条缓存信息(这是静态缓存,存储时间较久,不同系统的存储时间不同)
ARP
- ARP(Adress Resolution Protocol),译为:地址解析协议
- 作用: 通过IP地址获取MAC地址
- RARP(Reverse Adress Resolution Protocol),译为:逆地址解析协议
- 使用与ARP相同的报头结构
- 作用与ARP相反,用于将MAC地址转换为IP地址
- 后来被BOOTP、DHCP所取代
ICMP
- ICMP(Internet Control Message Protocol),译为:互联网控制消息协议
- IPv4中的ICMP被称作ICMPv4,IPv6中的ICMP则被称作ICMPv6
- 通常用于返回错误信息
- 比如 值过期、目的不可达
- ICMP的错误消息总是包括了源数据并返回给发送者
IP地址
- 简介
- IP地址(Internet Protocol Address):互联网上的每一个主机都有一个IP地址
- 最初是IPv4版本,32bit(4字节),2019年11月25日,全球的IP地址已经用完
- 后面推出了IPv6版本,128bit(16字节)
- IP地址(Internet Protocol Address):互联网上的每一个主机都有一个IP地址
- IP地址的组成
- IP地址由2部分组成:网络标识(网络ID)、主机标识(主机ID)
- 同一网段的计算机,网络ID相同
- 通过子网掩码(subnet mask)可以计算出网络ID:子网掩码 & IP地址
- 主机所在的网段 = 网络ID = 子网掩码 & IP地址
- 计算机和其他计算机通信前,会先判断目标主机和自己是否在同一网段
- 同一网段:不需要由路由器进行转发
- 不同网段:交由路由器进行转发
-
举例:
IP地址: 130.168.1.10 子网掩码: 255.255.0.0 网段: 130.168.0.0 主机ID为: 0.0.1.10
- IP地址由2部分组成:网络标识(网络ID)、主机标识(主机ID)
IP地址的分类
- A类地址:默认子网掩码是255.0.0.0
- 前8位为网络ID,而且必须以0开头;后24位用来分配主机ID
8 bit 24 bit 网络ID 主机ID 0开头
- B类地址:默认子网掩码是255.255.0.0
- 前16位为网络ID,而且必须以10开头;后16位用来分配主机ID
16bit 16bit 网络ID 主机ID 10开头
- C类地址:默认子网掩码是255.255.255.0
- 前24位为网络ID,而且必须以110开头;后8位用来分配主机ID
24bit 8bit 网络ID 主机ID 110开头
- D类地址:以1110开头,多播地址
- E类地址:以1111开头,保留为今后使用
- 只有A\B\C类地址才能分配给主机
- 主机ID为全0,表示主机所在的网段:
192.168.1.0
- 主机ID为全1,表示主机所在网段的全部主机(广播)
- 可以尝试用ping给某个网段的全部主机发数据:
ping 192.168.1.255
- 可以尝试用ping给某个网段的全部主机发数据:
- 主机ID为全0,表示主机所在的网段:
A类地址
- 网络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:主机ID全为0,代表网段; 主机ID全为1代表整个网段的主机,这两个不能分配给主机)
B类地址
- 网络ID
- 可以分配给主机的
- 第1部分的取值范围是:128~191
- 第2部分的取值范围是:0~255
- 主机ID
- 第3、4部分的取值范围是:0~255
- 每个B类网络能容纳的最大主机数是:256 * 256 – 2 = 2的16次方 – 2 = 65534
C类地址
- 网络ID
- 可以分配给主机的
- 第1部分的取值范围是:192~223
- 第2、3部分的取值范围是:0~255
- 主机ID
- 第4部分的取值范围是:0~255
- 每个C类网络能容纳的最大主机数是:256 – 2 = 254
D类地址、E类地址
- D类地址:没有子网掩码,用于多播(组播)地址
- 第1部分取值范围是:224~239
- E类地址:保留为今后使用
- 第1部分取值范围是:240~255
子网掩码
子网掩码的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
- 注意:子网与子网掩码
- 子网就是网络ID,即主机部分全部为0
- 子网掩码就是网络ID所占据的位全部为1,主机部分全部为0
为什么要进行子网划分?
- 如果需要让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地址数量可以是不一样的
- 子网划分器:http://www.ab126.com/web/3552.html
- 子网划分的步骤
- 确定子网的子网掩码长度
- 确定子网中第1个、最后1个主机可用的IP地址
等长子网划分
1.C类网段的等长子网划分
C类特点:192.168.0.0/24
前24位是一个网段,后8位是主机地址
- 等分成2个子网
- 将主机位的最高位也作为网段地址,即第25位,而且取值只能是0、1,正好将192.168.1.0这个网段分成两半,那么网络ID就成了25位,主机ID为7位
- 分配好的2个网段地址为:192.168.0.0/25、192.168.0.128/25
- 图分析:
- A子网:
- 子网掩码:255.255.255.128/25
- 主机可用IP地址:192.168.0.1~192.168.0.126
- B子网
- 子网掩码:255.255.255.128/25
- 主机可用IP地址:192.168.0.129~192.168.0.254
- A子网:
- 等分成4个子网
- 将主机位的最高2位也作为网段地址,即第26位,而且取值只能是00、01、10、11这4个值,正好将192.168.1.0这个网段分成4个,那么网络ID就成了26位,主机ID为6位
- 分配好的4个网段地址为:192.168.0.0/26、192.168.0.64/26、192.168.0.128/26、192.168.0.192/26
- 图分析:
- 4个子网的子网掩码都是:255.255.255.192/26
- A子网的主机可用IP地址:192.168.0.1~192.168.0.62
- B子网的主机可用IP地址:192.168.0.65~192.168.0.126
- C子网的主机可用IP地址:192.168.0.129~192.168.0.190
- D子网的主机可用IP地址:192.168.0.193~192.168.0.254
- 等分成4个子网的广播地址
- 等分成8个子网
- 同理类推,主机的3个二进制位取值为8个,作为网络ID,等分为8个子网
- 图分析:
- 4个子网的子网掩码都是:255.255.255.224/27
- A子网:192.168.0.1~192.168.0.30
- B子网:192.168.0.33~192.168.0.62
- C子网:192.168.0.65~192.168.0.94
- D子网:192.168.0.97~192.168.0.126
- E子网:192.168.0.129~192.168.0.158
- F子网:192.168.0.161~192.168.0.190
- G子网:192.168.0.193~192.168.0.222
- H子网:192.168.0.225~192.168.0.254
2.B类子网划分、A类子网划分
变长子网划分
- 如果一个子网地址块的长度是原网段的(1/2)^n,那么
- 子网的子网掩码,就是在原网段的子网掩码基础上向右移动增加n个1;比如:如果A子网是原来网段的1/2(二等分),那么子网掩码就是原来的子网掩码255.255.255.0向右移动1位,就是255.255.255.128
- 不等长的子网,它们的子网掩码也不同
- 假设上图是对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
- C网段是原网段的1/2,所以255.255.255.0/24向右移动一位是255.255.255.128/25
- B网段是原网段的1/4(即(1/2)^2),所以255.255.255.0/24向右移动2位是255.255.255.192/26
- 同理,….
问题
- 题1:
-
IP地址1:
IP地址: 192.168.0.10 子网掩码: 255.255.255.128
-
IP地址22:
IP地址: 192.168.0.132 子网掩码: 255.255.255.128
-
请问IP地址1与IP地址2能直接通信吗?
- 不能,由子网掩码可以看出,子网掩码为25位,即将C类子网2等分,这两个IP地址分别在不同的网段,IP地址1在192.168.0.0这个网段,IP地址2在192.168.0.128这个网段
-
- 重点:这2台设备之间能正常通信么?PC1: 192.168.0.10/24、PC2:192.168.10.10/16
- 答案是不能正常通信
- PC1的网段地址为: 192.168.0.0,子网掩码为255.255.255.0
- PC2的网段地址为: 192.168.0.0,资额昂掩码为255.255.0.0
- PC1与PC2属于同一网段,表面看起来能正常通信,但是仍然不能通信
- 两台PC进行通信的前提是:PC1先判断PC2的IP地址是否跟自己在同一个网段,判断的方法是用PC1的子网掩码(因为拿不到PC2的子网掩码,自能用自己的) & PC2的IP地址得出网段地址与自己的网段地址进行比较
- PC1计算PC2的网段地址:255.255.255.0 & 192.168.10.10 = 192.168.10.0;PC1的网段地址为192.168.0.0,因此判断不在同一网段,因此不能正常通信。
- 题2: 请问
10.172.168.1/24
是A类、还是B类、C类地址?- 是A类地址划分的子网段
- 24表示子网掩码24位
- 10代表A类地址,在0-127之间
总结
- IP地址 = 网络ID + 主机ID
- IPV4地址为32位
- 子网掩码:就是用来划分网段的,规定哪些位置为网络ID位,哪些位置为主机ID位置
- 子网掩码的表示形式:网络ID位全部为1,主机ID位全部为0
- 网段地址=网络ID+主机ID全部为0 = 子网掩码 & IP地址
超网
- 超网:跟子网反过来,它是将多个连续的网段合并成一个更大的网段
- 需求:原本有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位),此时的子网掩码为255.255.128.0 ,主机为变为9位,可容纳500多台PC
- 思考:
- 192.168.0.255/23这个IP地址,可以分配给计算机使用么?
- 可以,因为网络ID为23位,子网掩码为255.255.128.0,网段地址为192.168.0.0,广播地址为192.168.1.255,而不是192.168.0.255
- 192.168.0.255/23这个IP地址,可以分配给计算机使用么?
合并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网段
合并网段的规律
- 假设n是2的k次幂(k≥1)
- 子网掩码左移k位能够将能够合并n个网段
- 如果第一个网段的网络号能被n整除,那么由它开始连续的n个网段,能通过左移k位子网掩码进行合并
- 比如
- 第一个网段的网络号以二进制0结尾,那么由它开始连续的2个网段,能通过左移1位子网掩码进行合并
- 第一个网段的网络号以二进制00结尾,那么由它开始连续的4个网段,能通过左移2位子网掩码进行合并
- 第一个网段的网络号以二进制000结尾,那么由它开始连续的8个网段,能通过左移3位子网掩码进行合并
判断一个网段是子网还是超网
- 首先
- 看看该网段的类型,是A类网络、B类网络、C类网络?
- 默认情况下,A类子网掩码的位数是8,B类子网掩码的位数是16,C类子网掩码的位数是24
- 然后
- 如果该网段的子网掩码位数比默认子网掩码多,就是子网
- 如果该网段的子网掩码位数比默认子网掩码少,则是超网
- 比如
- 25.100.0.0/16是一个A类子网
- 200.100.0.0/16是一个C类超网