文章目录
- 网络协议从入门到底层原理学习(二)—— Mac地址/IP地址
- 1、MAC地址
- 2、MAC地址的表示格式
- 3、MAC地址表
- 4、MAC地址操作
- 5、MAC地址的获取
- 6、ARP
- 7、ICMP
- 8、IP地址
- 9、IP地址的分类和格式
- 10、不同分类的IP地址的范围
- 11、特殊 IP 地址
- 12、子网掩码
- 13、子网划分
- 14、超网
网络协议从入门到底层原理学习(二)—— Mac地址/IP地址
1、MAC地址
MAC地址(Media Access Control Address)也称为硬件地址或物理地址(Physical Address),它是一个用来确认网络设备位置的位址。在OSI模型中,第三层网络层负责IP地址,第二层数据链路层则负责MAC位址 。MAC地址用于在网络中唯一标示一个网卡,一台设备若有一或多个网卡,则每个网卡都需要并会有一个唯一的MAC地址。
MAC地址由网络设备制造商生产时烧录在网卡(Network lnterface Card)的EPROM(一种闪存芯片,通常可以通过程序擦写)。IP地址与MAC地址在计算机里都是以二进制表示的,IP地址是32位的,而MAC地址则是48位的。
组织唯一标识符(OUI)由IEEE(电气和电子工程师协会)分配给厂商,它包含24位。厂商再用剩下的24位(EUI,扩展唯一标识符)为其生产的每个网卡分配一个全球唯一的全局管理地址,一般来说大厂商都会购买多个OUI。
I/G(Individual/Group)位,如果I/G=0,则是某台设备的MAC地址,即单播地址;如果I/G=1,则是多播地址(组播+广播=多播)。
G/L(Global/Local,也称为U/L位,其中U表示Universal)位,如果G/L=0,则是全局管理地址,由IEEE分配;如果G/L=1,则是本地管理地址,是网络管理员为了加强自己对网络管理而指定的地址。
2、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
MAC地址可以分为3种类型:
-
物理MAC地址:这种类型的MAC地址唯一的标识了以太网上的一个终端,该地址为全球唯一的硬件地址;
-
广播MAC地址:全1的MAC地址为广播地址(FF-FF-FF-FF-FF-FF),用来表示LAN上的所有终端设备;
-
组播MAC地址:除广播地址外,第8bit为1的MAC地址为组播MAC地址(例如01-00-00-00-00-00),用来代表LAN上的一组终端。
3、MAC地址表
MAC地址表记录了交换机学习到的其他设备的MAC地址与接口的对应关系,以及接口所属VLAN等信息。设备在转发报文时,根据报文的目的MAC地址查询MAC地址表,如果MAC地址表中包含与报文目的MAC地址对应的表项,则直接通过该表项中的出接口转发该报文;如果MAC地址表中没有包含报文目的MAC地址对应的表项时,设备将采取广播方式在所属VLAN内除接收接口外的所有接口转发该报文。
MAC地址表的分类
MAC地址表中的表项分为:动态表项、静态表项和黑洞表项。另外交换机的MAC地址表中还存在一种业务类型的MAC地址表项,譬如:安全MAC、MUX MAC、Authen MAC、Guest MAC等。该类MAC地址表项是由对应业务维护的,一般是通过动态表项转换来的。
MAC地址表的组成
MAC地址表是以MAC地址和VLAN ID或VSI为索引来唯一标识。当一台目的主机属于多个VLAN或VSI时,在MAC地址表中就会存在相同MAC地址拥有多个不同VLAN ID或VSI的情况。
MAC地址表的作用
MAC地址表用于指导报文进行单播转发。如图中,PC1发往PC3的报文,在到达交换机Switch时,根据报文中的目的MAC地址MAC3和VLAN10查询交换机的MAC地址表,获取出接口Port3,然后报文直接从接口Port3转发到PC3,完成数据的转发。
4、MAC地址操作
-
查询方法
在命令提示符下输入命令“ipconfig /all”回车之后就会显示当前计算机的一些网络信息,其中“Physical Address”(物理地址)字样的这一项就是当前计算机中网卡的 MAC地址。
- 修改 MAC 地址
更改适配器选项 —— 属性 —— 配置 —— 高级 —— 网络地址
- 填写的时候需要把减号(-)去掉
5、MAC地址的获取
当不知道对方主机的 MAC 地址时,可以通过发送 ARP 广播获取对方的 MAC 地址
-
获取成功后,会缓存IP地址、MAC地址的映射信息,俗称:ARP缓存
-
通过ARP广播获取的MAC地址,属于动态(dynamic)缓存
✓ 存储时间比较短(默认是2分钟),过期了就自动删除
相关命令
-
arp -a [主机地址]:查询ARP缓存
-
arp -d [主机地址]:删除ARP缓存
-
arp -s 主机地址 MAC地址:增加一条缓存信息(这是静态缓存,存储时间较久,不同系统的存储时间不同)
6、ARP
地址解析协议,即ARP(Address Resolution Protocol),是根据IP地址获取物理地址的一个TCP/IP协议。
在局域网中,网络中实际传输的是“帧”,帧里面是有目标主机的MAC地址的。在以太网中,一个主机和另一个主机进行直接通信,必须要知道目标主机的MAC地址。但这个目标MAC地址是如何获得的呢?它就是通过地址解析协议获得的。所谓“地址解析”就是主机在发送帧前将目标IP地址转换成目标MAC地址的过程。ARP协议的基本功能就是通过目标设备的IP地址,查询目标设备的MAC地址,以保证通信的顺利进行。
RARP(Reverse Address Resolution Protocol),译为:逆地址解析协议
-
使用与ARP相同的报头结构
-
作用与ARP相反,用于将MAC地址转换为IP地址
-
后来被BOOTP、DHCP所取代
7、ICMP
ICMP(Internet Control Message Protocol),译为:互联网控制消息协议
-
IPv4中的ICMP被称作ICMPv4,IPv6中的ICMP则被称作ICMPv6
-
通常用于返回错误信息
- 比如 TTL 值过期、目的不可达
-
ICMP的错误消息总是包括了源数据并返回给发送者
ICMP 报文结构
ICMP 报文一般为 8 个字节,包括类型、代码、校验和扩展内容字段。ICMP 报文基本结构如图所示。
其中,类型表示 ICMP 的消息类型,代码表示对类型的进一步说明,校验和表示对整个报文的报文信息的校验。
在 ICMP 报文中,如果类型和代码不同,ICMP 数据包报告的消息含义也会不同。常见的类型和代码的 ICMP 含义如表所示。
类型 | 代码 | 含义 |
---|---|---|
0 | 0 | 回显应答(ping 应答) |
3 | 0 | 网络不可达 |
3 | 1 | 主机不可达 |
3 | 2 | 协议不可达 |
3 | 3 | 端口不可达 |
3 | 4 | 需要进行分片,但设置不分片位 |
3 | 5 | 源站选路失败 |
3 | 6 | 目的网络未知 |
3 | 7 | 目的主机未知 |
3 | 9 | 目的网络被强制禁止 |
3 | 10 | 目的主机被强制禁止 |
3 | 11 | 由于服务类型 TOS,网络不可达 |
3 | 12 | 由于服务类型 TOS,主机不可达 |
3 | 13 | 由于过滤,通信被强制禁止 |
3 | 14 | 主机越权 |
3 | 15 | 优先中止失效 |
4 | 0 | 源端被关闭(基本流控制) |
5 | 0 | 对网络重定向 |
5 | 1 | 对主机重定向 |
5 | 2 | 对服务类型和网络重定向 |
5 | 3 | 对服务类型和主机重定向 |
8 | 0 | 回显请求(ping 请求) |
9 | 0 | 路由器通告 |
10 | 0 | 路由器请求 |
11 | 0 | 传输期间生存时间为 0 |
11 | 1 | 在数据报组装期间生存时间为 0 |
12 | 0 | 坏的 IP 首部 |
12 | 1 | 缺少必需的选项 |
13 | 0 | 时间戳请求 |
14 | 0 | 时间戳应答 |
17 | 0 | 地址掩码请求 |
18 | 0 | 地址掩码应答 |
8、IP地址
IP地址(Internet Protocol Address):互联网上的每一个主机都有一个IP地址
-
最初是IPv4版本,32bit(4字节),2019年11月25日,全球的IP地址已经用完
-
后面推出了IPv6版本,128bit(16字节)
IP地址的基本构成
为了便于寻址,了解目标主机的位置,每个 IP 地址包括两个标识码(ID),即网络 ID 和主机 ID。同一个物理网络上的所有主机都使用同一个网络 ID,网络上的一个主机(包括网络上的工作站、服务器和路由器等)有一个主机 ID 与其对应。
网络 ID 和主机 ID 含义如下:
- 网络 ID:用于识别主机所在的网络,网络 ID 的位数直接决定了可以分配的网络数量。
- 主机 ID:用于识别该网络中的主机,主机 ID 的位数则决定了网络中最大的主机数量。
通过子网掩码(subnet mask)可以得知网络ID 、主机ID
- 主机所在的网段 = 子网掩码 & IP地址
计算机和其他计算机通信前,会先判断目标主机和自己是否在同一网段
-
同一网段:不需要由路由器进行转发
-
不同网段:交由路由器进行转发
9、IP地址的分类和格式
大型网络包含大量的主机,而小型网络包含少量的主机。根据用户需求不同,一个网络包含的主机数量也会不同。为了满足不同场景的需要,网络必须使用一种方式来判断 IP 地址中哪一部分是网络 ID,哪一部分是主机 ID。
IP 地址为 32 位地址,被分为 4 个 8 位段。为了方便对 IP 地址的管理,将 IP 地址基本分为三大类,每类地址的分类与含义如下:
- A 类:前 8 位表示网络 ID,后 24 位表示主机 ID;该地址分配给政府机关单位使用。
- B 类:前 16 位表示网络 ID,后 16 位表示主机 ID;该地址分配给中等规模的企业使用。
- C 类:前 24 位表示网络 ID,后 8 位表示主机 ID;该地址分配给任何需要的人使用。
除了上述的 A、B、C 三类地址以外,还有两类隐藏地址,即 D 类地址和E类地址:
- D 类:不分网络 ID 和主机 ID;该地址用于多播。
- E 类:不分网络 ID 和主机 ID;该地址用于实验。
从上图中可以看出,每类 IP 地址都是以 32 位的二进制格式显示的,每类地址的区别如下:
- A类:网络 ID 的第一位以 0 开始的地址。
- B类:网络 ID 的第一位以 10 开始的地址。
- C类:网络ID的第一位以 110 开始的地址。
- D类:地址以 1110 开始的地址。
- E类:地址以 11110 开始的地址。
10、不同分类的IP地址的范围
由于每类地址的开头是固定的,因此每类地址都有自己的范围:
- A类:IP 地址范围为 0.0.0.0~127.255.255.255。
-
网络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
-
-
B类:IP 地址范围为 128.0.0.0~191.255.255.255。
-
网络ID
-
可以分配给主机的
-
第1部分的取值范围是:128~191
-
第2部分的取值范围是:0~255
主机ID
-
第3、4部分的取值范围是:0~255
-
每个B类网络能容纳的最大主机数是:256 * 256 – 2 = 2的16次方 – 2 = 65534
-
-
C类:IP 地址范围为 192.0.0.0~223.255.255.255。
-
网络ID
-
可以分配给主机的
-
第1部分的取值范围是:192~223
-
第2、3部分的取值范围是:0~255
主机ID
-
第4部分的取值范围是:0~255
-
每个C类网络能容纳的最大主机数是:256 – 2 = 254
-
-
D类:IP 地址范围为 224.0.0.0~239.255.255.255。
-
没有子网掩码,用于多播(组播)地址
第1部分取值范围是:224~239
-
E类:IP 地址范围为 240.0.0.0~255.255.255.254。
-
保留为今后使用
第1部分取值范围是:240~255
11、特殊 IP 地址
在进行 IP 地址分配时,有一些 IP 地址具有特殊含义,不会分配给互联网的主机。例如,保留了一些 IP 地址范围,用于私有网络,这些地址被称为私有地址。再如,保留一部分地址用于测试,被称为保留地址。
A 类、B 类、C 类地址的地址范围及含义如下:
- A类地址
- 私有地址范围为 10.0.0.0~10.255.255.255。
- 保留地址范围为 127.0.0.0~127.255.255.255。
- B类地址
- 私有地址范围为 172.16.0.0~172.31.255.255。
- 保留地址为 169.254.X.X。
- C类地址
- 私有地址范围为 192.168.0.0~192.168.255.255。
12、子网掩码
CIDR 无类域间路由(Classless Inter-Domain Routing,CIDR)
子网掩码的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.htm
为什么要进行子网划分?
如果需要让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地址资源?
- 合理进行子网划分
无类域间路由(Classless Inter-Domain Routing,CIDR)可以将路由集中起来,在路由表中更灵活地定义地址。它不区分 A 类、B 类、C 类地址,而是使用 CIDR 前缀的值指定地址中作为网络 ID 的位数。
这个前缀可以位于地址空间的任何位置,让管理者能够以更灵活的方式定义子网,以简便的形式指定地址中网络 ID 部分和主机 ID 部分。
CIDR 标记使用一个斜线/
分隔符,后面跟一个十进制数值表示地址中网络部分所占的位数。例如,205.123.196.183/25 中的 25 表示地址中 25 位用于网络 ID,相应的掩码为 255.255.255.128。
13、子网划分
子网划分:借用主机位作子网位,划分出多个子网
可用分为
-
等长子网划分:将一个网段等分成多个子网,每个子网的可用IP地址数量是一样的
-
变长子网划分:每个子网的可用IP地址数量可以是不一样的
子网划分器:http://www.ab126.com/web/3552.html
子网划分的步骤
-
确定子网的子网掩码长度
-
确定子网中第1个、最后1个主机可用的IP地址
等长子网划分——等分成2个子网
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
等长子网划分——等分成4个子网
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个子网
8个子网的子网掩码都是: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
等长子网划分——B类子网划分
等长子网划分——A类子网划分
变长子网划分
如果一个子网地址块的长度是原网段的(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
思考题
这2台设备能正常通信么?
答:不可以, 计算机1可以发信息给计算机0, 计算机1不能发信息给计算机0,不算是可以通信
14、超网
超网:跟子网反过来,它是将多个连续的网段合并成一个更大的网段
需求:原本有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地址,可以分配给计算机使用么?
答: 可以。主机位并不是全为1,并不是广播地址,所以可以分配给计算机使用
合并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位进行合并么?
合并网段的规律
假设n是2的k次幂(k≥1)
子网掩码左移k位能够将能够合并n个网段
假设n是2的k次幂(k≥1)
- 如果第一个网段的网络号能被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类超网