MAC地址、IP地址以及ARP协议
MAC地址是以太网的MAC子层所使用的地址; 数据链路层
IP地址是TCP/IP体系结构网际层所使用的地址; 网际层
ARP协议属于TCP/IP体系结构的网际层,其作用是已知设备所分配到的IP地址,使用ARP协议可以通过该IP地址获取到设备的MAC地址; 网际层
尽管IP地址和ARP协议属于TCP/IP体系结构的网际层(而不属于数据链路层),但是它们与MAC地址存在一定的关系,并且我们日常的网络应用都离不开MAC地址、IP地址以及ARP协议。因此,我们将这三者放在一起讨论。
MAC地址
使用点对点信道的数据链路层不需要使用地址
使用广播信道的数据链路层必须使用地址来区分各主机
当多个主机连接在同一个广播信道上,要想实现两个主机之间的通信,则每个主机都必须有一个唯一的标识,即一个数据链路层地址;
在每个主机发送的帧中必须携带标识发送主机和接收主机的地址。由于这类地址是用于媒体接入控制MAC(Media Access Control),因此这类地址被称为MAC地址;
-
MAC地址一般被固化在网卡(网络适配器)的电可擦可编程只读存储器EEPROM中,因此MAC地址也被称为硬件地址;
-
MAC地址有时也被称为物理地址。请注意:这并不意味着MAC地址属于网络体系结构中的物理层!
一般情况下,用户主机会包含两个网络适配器:有线局域网适配器(有线网卡)和无线局域网适配器(无线网卡)。每个网络适配器都有一个全球唯一的MAC地址。而交换机和路由器往往拥有更多的网络接口,所以会拥有更多的MAC地址。综上所述,严格来说,MAC地址是对网络上各接口的唯一标识,而不是对网络上各设备的唯一标识。
IEEE 802局域网的MAC地址格式
IEEE 802局域网的MAC地址发送顺序
单播MAC地址举例
在帧首部的目的地址字段填入C的MAC地址,源地址字段填入自己的MAC地址,再加上帧首部的其他字段,数据载荷以及帧尾部,就构成了该单播帧。
广播MAC地址举例
在帧首部的目的地址字段填入广播地址,源地址字段填入自己的MAC地址,再加上帧首部的其他字段,数据载荷以及帧尾部,就构成了该单播帧。
判断一个地址首部是不是多播地址
随机MAC地址
棱镜门事件,斯诺登爆料,美国国家安全局有一套系统,通过监视电子设备的MAC地址,来跟踪城市中每个人的行动。
随后,苹果,window10,安卓6.0,内核版本3.18的linux开始提供随机MAC地址的功能。目前大部分移动设备都采取了随机MAC地址的功能。
IP地址
IP地址是因特网(Internet)上的主机和路由器所使用的地址,用于标识两部分信息:
-
网络编号:标识因特网上数以百万计的网络
-
主机编号:标识同一网络上不同主机(或路由器各接口)
很显然,之前介绍的MAC地址不具备区分不同网络的功能。
-
如果只是一个单独的网络,不接入因特网,可以只使用MAC地址(这不是一般用户的应用方式)。
-
如果主机所在的网络要接入因特网,则IP地址和MAC地址都需要使用。
从网络体系结构看IP地址与MAC地址
数据包转发过程中IP地址与MAC地址的变化情况
数据包转发过程中源IP地址和目的IP地址保持不变;
数据包转发过程中源MAC地址和目的MAC地址逐个链路(或逐个网络)改变.
由ARP协议解决
ARP协议
B知道C的IP地址 B不知道C的MAC地址 B的数据链路层封装MAC帧时,无法填写目的MAC地址!
每一个主机都有ARP高速缓存表
类型:
-
动态:自动获取,生命周期默认为两分钟;
-
静态:手工设置,不同操作系统下的生命周期不同,例如系统重启后不存在或系统重启后依然有效。
第一行即对应主机A的地址。但是没有C的相关地址信息,使用需要发送ARP请求报文。
主机C
1.将B的IP地址与MAC地址记录到自己的ARP高速缓存表中; 2给B发送ARP响应,以告知自己的MAC地址。
ARP不能跨网络使用,对于本例,只能逐链路使用。