• 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地址也被称为硬件地址

image.png

  • MAC地址有时也被称为物理地址。请注意:这并不意味这MAC地址属于物理层
    • 一般情况下,用户主机会包含两个网络适配器:有线局域网适配器(有线网卡)和无线局域网适配器(无线网络卡)。每个网络适配器都有一个全球唯一的MAC地址。而交换机和路由器往往拥有更多网络接口,所以会拥有更多的MAC地址。综上所述,严格来说,MAC地址是对网络上个接口的唯一标识,而不是对网络上设备的唯一标识

IEEE 802局域网的MAC格式

一共六个字节,从左至右分别为第一字节到第六字节

  • 前三个字节是组织唯一标识符OUI(有IEEE的注册管理机构分配)
  • 后三个字节是获得OUI的厂商可自行随意分配
  • 这种地址标识符称为拓展的唯一标识符EUI,对于48比特(6字节)的MAC地址,可称为EUI-48

image.png
image.png

  • 由上两图,MAC地址有四种

    IEEE 802局域网的MAC地址发送顺序

  • 字节发送顺序:第一字节->第六字节

  • 字节内比特发送顺序b0->b7

    MAC地址举例

    单播MAC地址举例

    image.png
    B在数据帧中放入自己的MAC地址,和目的地址(C的地址),发送出来,A和C接收到A的地址和目的地址不匹配,对其,C的匹配,接收,交给上层

    广播MAC地址的举例

    B要发送广播帧,在目的地址填入广播地址,即全F,源地址字段填自己的MAC地址,再加上帧首部的其他字段和帧尾,构成该帧。发出去后,A和C都收到,发现是个广播地址,全部接收,交给上层。

    多播MAC地址

    image.png
    image.png
    A生成帧的时候吧多播地址填入目的地址,假设BCD支持多播,受到该帧后,在自己的多播组列表中查找该多播地址,查到就接收,查不到就丢弃。

  • 给主机配置多播组列表进行私有应用时,不能使用共有多播地址

IP地址(介绍作用)

  • IP地址属于网络层范畴
  • IP地址是因特网上的主机和路由器所使用的地址,用于标识两部分信息:
    • 网络编号:用来标识因特网上数以百万计的网络
    • 主机编号:标识同一网络上的不同主机(或路由器各接口)
    • 同一个网络上的各主机和路由器的各接口的IP地址的网络号部分应该相同,而主机号部分应该互不相同
  • MAC地址不具备区分不同网络的功能
    • 如果只是一个单独的网络,不接入因特网,可以只使用MAC地址(这不是一般用户的应用方式)
    • 如果要接入因特网,两个地址都要使用

从网络体系结构看IP地址和MAC地址

IP地址输入网络层范畴,所以网络层首部中封装源IP地址和目的IP地址
MAC地址属于数据链路层范畴,所以数据链路层首部中封装源MAC地址和目的MAC地址
image.png

数据包转发过程中IP地址和MAC地址的变化情况

  • 数据包转发过程中,源IP地址和源MAC地址保持不变
  • 源MAC地址和目的MAC地址逐个链路改变

地址解析协议ARP

如何起作用

  • 每个主机都有自己的一个ARP高速缓存表,里面有别的主机的IP地址和MAC地址的对应关系
  • B想给C发送数据,但是只有IP地址,没有MAC地址
  • 于是B发一个ARP请求报文
    • 报文内容封装在MAC帧中,目的地址为全F广播地址
    • 内容是自己的IP地址+自己的MAC地址+想知道MAC地址的主机的IP地址

image.png

  • A收到报文,发现不是想要自己的MAC地址,不理会
  • C收到报文

    • 发现想要自己的MAC地址,先把B的IP地址和MAC地址存入自己的ARP高速缓存表中
    • 给B发送ARP响应报文,封装在MAC帧中,告知自己的MAC地址

      • 告知B自己的IP地址和MAC地址

        image.png

    • 其他主机也都能收到该单播帧,其他主机收到后,发现MAC地址不匹配,直接丢弃,B收到发现匹配,向上层交付,进行解析,然后将C的IP和MAC地址加入缓存表里,之后就可以发数据包了

  • ARP高速缓存表中的每一条记录,都有其类型

    • 自动:自动获取,生命周期默认为两分钟;
    • 静态:手工设置,不同操作系统下的生命周期不同,例如系统重启后不存在或者仍然有效
  • ARP的作用范围:逐链路或逐个网络使用

  • 除ARP请求和响应外,ARP还有其他类型的报文,例如检查IP地址冲突的“无故ARP,免费ARP”
  • ARP没有安全验证机制,存在ARP欺骗(攻击)问题