MAC地址、IP地址以及ARP协议详细讲解

MAC地址

MAC地址是以太网的MAC子层所使用的地址

  • 当多个主机连接在同一个广播信道上,要想实现两个主机之间的通信,则每个主机都必须有一个唯一的标识,即一个数据链路层地址。
  • 在每一个主机发送的帧中必须携带标识发送主机和接收主机的地址。由于这类地址是用于媒体接入控制MAC(Media Access Control),因此这类地址被称为MAC地址                                            MAC地址一般被固化在网卡(网络适配器)的电可擦只读存储器EEPROM中,因此MAC            地址也被称为硬件地址          MAC地址有时也被称为物理地址。请注意:这并不意味着MAC地址属于网络体系结构            中的物理层
  • 一般情况下,用户主机会包含两个网络适配器:有线局域网适配器(有线网卡)和无线局域网适配器(无线网卡)。每个网络适配器都有一个全球唯一的MAC地址。而交换机和路由器往往拥有更多的网络接口,所以会拥有更多的MAC地址。综上所述,严格来说,MAC地址是对网络上各设备的唯一标识

IEE 802局域网的MAC地址格式

是由48bit构成,每8个比特为一个字节,从左至右一次为第一字节到第六字节。前三个字节是组织唯一标示符OUI,后三个字节是网络接口标识符。这种地址标识符称为扩展的唯一标识符EUI

 MAC标准表示法,是将每4个比特写成一个十六进制的字符,将每两个字符分为一组

标准表示法:XX-XX-XX-XX-XX-XX             例如:00-0C-CF-93-8C-92

其他表示法:XX:XX:XX:XX:XX:XX       例如:00:0C:CF:93:8C:92

                     XXXX.XXXX.XXXX                             例如:000C.CF93.8C92

当MAC地址中的第一字节的b0为0时是单播、为1时是多播,b1为0时是全球管理、为1时是本地管理

由上述规定可列出下表

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

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

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

单播MAC地址举例

假设主机B要想给主机C发送单播帧,主机B首先要构建该单播帧,在帧首部的目的地址字段填入主机C的MAC地址,在源地址字段填入自己的MAC地址,再加上帧首部中的其他字段、数据载荷以及帧尾部,就构成该单播帧,在B给主机C发送单播帧时,主机A和主机C都会收到该单播帧,主机A的网卡发现该单播帧的目的MAC地址与自己的MAC地址不匹配,就丢弃该帧,主机C的网卡发现该单播帧的目的MAC地址与自己的MAC地址匹配,于是接收该帧,交给上层处理,如下图

 广播MAC地址举例

假设主机B要想发送广播帧,主机B首先要构建该广播帧,在帧首部的目的地址字段填入广播地址地址(也就是十六进制的全F),在源地址字段填入自己的MAC地址,再加上帧首部中的其他字段、数据载荷以及帧尾部,就构成该广播帧,在B发送广播帧时,主机A和主机C都会收到该广播帧,主机A和C发现该帧首部的目的地址字段的内容是广播地址,就知道该帧是广播帧,于是接收该帧,交给上层处理,如下图

 

 多播MAC地址举例

假设主机A要发送多播帧给多播地址 07-E0-12-F6-2A-D8,将该多播地址的左起第一个字节写成8比特 (0000 0111),可以看到最低比特是1,这就表明该地址是多播地址,这里有一个快速判断MAC地址是否是多播地址的方法,第一个十六进制数不能整除2(1,3,5,7,9,B,D,F),即为多播地址。

假设主机B、C、D支持MAC多播,主机A构建多播帧,首先在帧首部的目的地址字段填入多播地址,在源地址字段填入自己的MAC地址,再加上帧首部中的其他字段、数据载荷以及帧尾部,就构成该多播帧,主机B、C、D都会收到该多播帧,主机B和C发现该多播帧的目的MAC地址在自己的多播组列表中,接收该帧并交给上层处理,主机D发现该多播帧的目的MAC地址不在自己的多播组列表中,丢弃该帧,如下图

IP地址

IP地址是TCP/IP体系结构网际层所使用的地址;

IP地址是因特网(Internet)上的主机和路由器所使用的地址,用来标识两部分信息:     

         网络编号:标识因特网数以百万计的网络     

        主机编号:标识同一网络上不同主机(或路由器个接口)

       同一网络网络编号必须相同,主机编号互不相同                        

很显然,之前接收的MAC不具备不同网络的功能     

        如果只是一个单独的网络,不接入因特网,可以只使用MAC地址(这不是一般用户的应用方          式)                                                                                                                                 

       如果主机所在的网络要接入因特网,则IP地址和MAC地址都需要使用。

     

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

由于IP地址属于网络体系结构中网络层的范畴,因此在网络层首部应该封装有源IP地址和目的IP地址。

由于MAC地址属于网络体系结构中数据链路层的范畴,因此在数据链路层首部应该封装有源MAC地址和目的MAC地址

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

数据包转发过程中源IP地址和目的IP地址保持不变

数据包 转发过程中源MAC地址和目的MAC地址逐个链路或(逐个网络)改变

ARP协议

ARP协议属于TCP/IP体系结构的网际层,其作用是已知设备所分配到的IP地址,使用ARP协议可以通过该IP地址获取到设备的MAC地址

工作原理

假设主机B要给主机C发送数据包,主机B知道主机C的IP地址,但不知道它的MAC地址。主机B的数据链路层在封装数据MAC帧时,无法填写目的MAC地址,进而也就无法构建出要发送的MAC帧。 

每台主机都会有一个ARP高速缓存表。下图是主机B的ARP高速缓存表,记录有IP地址和MAC地址的对应关系。例如:第一个是主机B之前获取到的主机A的IP地址和MAC地址的对应关系。当主机B要给主机C发送数据包时,会首先在自己的ARP高速缓存表中查找主机C的IP地址所对应的MAC地址,但未找到主机B发送ARP请求报文。

 请求报文如下图:

 请求报文被封装在MAC帧中发送,主机B发送封装有ARP请求报文的广播帧。总线上其他主机都能收到该广播帧。主机A的网卡收到该广播帧后,上层的ARP进程解析ARP请求报文,发现所询问的IP地址不是自己的IP地址,因此不予理会。主机C的网卡收到该广播帧后,将其送交上层处理。上层的ARP进程解析ARP请求报文,发现所询问的IP地址正是自己的IP地址,主机C首先将ARP请求报文中记录到自己的ARP高速缓存表中;如下图:

 然后主机B发送ARP响应报文,以告知自己的MAC地址。构建ARP响应报文,如下:

 主机C给主机B发送封装有ARP响应报文的单播帧。总线上其他主机都能收到该单播帧。主机A的网卡收到该单播帧后,发现其目的MAC地址与自己的MAC地址不匹配,主机B的网卡收到该单播帧后,发现其目的MAC地址就是自己的MAC地址,将其交付上层处理,上层的ARP进程解析ARP响应报文,将其所包含的主机C的IP地址与MAC地址记录到自己的ARP高速缓存表中。,如下图

 这样主机B现在就可以给主机C发送之前想发送的数据包了。

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

                   动态:自动获取,生命周期默认两分钟,两分钟过后删除

                   静态:手工设置,不同操作系统下的生命周期不同,例如系统重启后不存在或系统重                                  启后依然有效。

ARP协议只能在一段链路或一个网络使用,而不能跨网络使用。ARP的使用是逐段进行的。

 

  • 2
    点赞
  • 27
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

大磊程序员(“hello world”)

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值