一、MAC地址
MAC地址也叫局域网地址,由网络设备制造商烧录在网卡中,具有唯一性,如果一台设备由一个或多个网卡,那么每一个网卡都需要一个MAC地址来唯一标识它。它是用来确认网络设备位置的,数字链路层负责MAC地址,一共有48位。
只要网络适配器(一般指网卡)没有改变,MAC地址就不会改变,不受地理位置和局域网的改变影响。
二、MAC帧
帧格式:
- 以太网V2
- 802.3标准
以太网V2格式的MAC帧:
- 目的地址:目的MAC地址
- 源地址:发送主机的MAC地址
- 类型:上层网络层使用的是什么协议,为十六进制格式,方便接收方在收到数据帧时交给上一层的该协议
在数据帧传输的过程中,比如从主机H1(HA1)到R1(HA2),R1到R2(HA3),R2到H2(HA4)的过程中,数据帧中的源MAC地址和目标MAC地址是一直被改变的。
H1 ---> R1:源MAC地址为HA1,目标MAC地址为HA2。
R1 ----> R2:源MAC地址为HA2,目标MAC地址为HA3。
R2 ----> H2:源MAC地址为HA3,目标MAC地址为HA4。
三、ARP地址解析协议
网络中要传输数据帧时,除了要知道IP地址之外,还必须要知道硬件地址,也就是MAC地址,不能将IP地址和MAC地址简单映射的原因:
- IP地址为32位,MAC地址是48位,格式不同。
- MAC地址是会改变的,比如更换网络适配器。
所以我们要使用ARP地址解析协议在解决这个问题,解决这个问题的方法就是在主机的ARP高速缓存表中存放IP地址和MAC地址的映射表,并且动态更新,新增或者删除。
对于一个新的主机来说,它的ARP高速缓存表是空的,那么它是如何得到这些映射关系的呢?
前提:当主机A向本局域网中的主机B发送IP数据报。
- 当发现ARP高速缓存表为空,或者没有该主机B的IP到MAC的映射关系时,主机A就会自动以广播的形式发送一个ARP请求分组,分组的主要内容就是主机A的IP地址和MAC地址,以及主机B的IP地址,询问主机B的IP地址对应的MAC地址。
- 当其他主机在接收到这个ARP请求分组之后,发现要查询的IP地址和自己的IP地址不一致,就会不理这个请求。
- 当主机B接收到了之后,发现IP一致,收下该请求,并对主机A做出响应,告诉主机A,自己的IP地址是多少,MAC地址是多少。响应完了之后,主机B还会将主机A的IP地址和MAC地址的映射关系添加到自己的ARP高速缓存表中。
- 主机A收到响应之后,将主机B的MAC地址写进MAC帧中。
如果ARP高速缓存表中有该映射关系,则会直接写到MAC帧中。
总结:ARP地址解析协议就是已知IP,找到MAC地址。
补充:
- 逆地址解析协议DHCP
逆地址解析也就是已知MAC地址,解析出IP地址,RARP(比较老)和DHCP都可以实现。
- ARP地址解析协议到底在OSI模型的哪一层?
因为是IP协议使用了ARP地址解析协议解析出MAC地址,所以通常ARP被划分在网络层,但是解析出来的MAC地址,是在数据链路层使用的,所以可以将ARP地址解析协议划分到数据链路层。