网络协议从入门到底层原理学习(二)—— Mac地址/IP地址

文章目录

网络协议从入门到底层原理学习(二)------ 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 类地址的地址范围及含义如下:

  1. A类地址
  • 私有地址范围为 10.0.0.0~10.255.255.255。
  • 保留地址范围为 127.0.0.0~127.255.255.255。
  1. B类地址
  • 私有地址范围为 172.16.0.0~172.31.255.255。
  • 保留地址为 169.254.X.X。
  1. 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类超网

相关推荐
小A15912 分钟前
STM32完全学习——系统时钟设置
stm32·嵌入式硬件·学习
2301_7752811918 分钟前
柯桥生活英语口语学习“面坨了”英语怎么表达?
学习·生活
江梦寻25 分钟前
思科模拟器路由器配置实验
开发语言·网络·网络协议·学习·计算机网络
一只特立独行的程序猿1 小时前
关于GCC内联汇编(也可以叫内嵌汇编)的简单学习
汇编·学习·gcc
虾球xz1 小时前
游戏引擎学习第10天
学习·游戏引擎
Chef_Chen1 小时前
从0开始学习机器学习--Day25--SVM作业
学习·机器学习·支持向量机
L_cl1 小时前
Python学习从0到1 day28 Python 高阶技巧 ⑧ 递归
学习
前端李易安1 小时前
什么是HTTP,什么是HTTPS?HTTP和HTTPS都有哪些区别?
网络协议·http·https
胎粉仔1 小时前
网络初阶——应用层:HTTPS 协议
网络协议·http·https
vortex51 小时前
Vim 编辑器学习笔记
学习·编辑器·vim