一、IP地址跟MAC地址的区别

1)结构层次

MAC地址是数据链路层和物理层使用的地址;

IP是网络层和以上各层使用的地址。


发送数据时,数据从高层下到低层,然后才到通讯链路上传输。使用IP地址的IP数据报一旦交给了数据链路层,就会被封装成MAC帧。MAC帧在传输时使用的源地址和目的地址都是硬件地址,写在MAC帧的首部。

二、ARP

ARP协议是以太网等数据链路层的基础协议,负责完成IP地址到硬件地址的映射。

1.ARP报文格式


物理网络类型

协议类型

物理地址长度

协议地址长度

操作

发送方物理地址(八位组0~3

发送方物理地址(八位组4~5

发送方IP地址(八位组0~1

发送方IP地址(八位组2~3

目标物理地址(八位组0~1

目标物理地址(八位组2~5

目标IP地址(八位组0~3





l物理网络类型:也称为硬件类型,指明硬件类型,以太网为1

l协议类型:指明发送者映射到数据链路标识的网络协议的类型,IP对应0x0806.

l硬件地址长度:MAC地址长度为6.,单位字节。

l协议地址长度:网络层地址的长度,即IP地址长度为4,单位字节。

l操作:操作指明ARP的操作类型,ARP请求为1ARP响应为2RARP请求为3RARP响应为4

l在以太网环境下的ARP报文,硬件地址为48位(6个八位组)。




3.ARP类型


ARP4种典型的情况

(1)发送方是主机,要把IP数据报发送到本网络上的另一个主机。这时用ARP找到目的主机的硬件地址。

(2)发送方是主机,要把IP数据报发送到另一个网路上的一个主机。这时用ARP找到本网路上的一个路由器的MAC地址。剩下的工作由这个路由器来完成。

(3)发送方是路由器,要把IP数据报转发到本网路上的一个主机。这时用ARP找到目的主机的硬件地址。

(4)发送方是路由器,要把IP数据报转发到另一个网络上的一个主机。这时用ARP找到本网络上的一个路由器的MAC地址,剩下的工作由这个路由器来完成。


3.ARP协议的工作机制

每个主机都设有一个ARP高速缓存(ARP cache),里面有本局域网上的各主机和路由器的IP地址到物理地址的映射表(运行——cmd——arp –a可以查看)。

具体的工作过程如下:

假如当主机A要向本局域网中的某个主机B发送IP数据报时,如果在ARP高速缓存中查看有无主机B的IP地址。如有,就在ARP高速缓存中查出其对应的硬件地址,在把这个硬件地址写入MAC帧中,然后通过局域网把该MAC帧发送到此硬件地址。

但是在高速缓存中,也可能查不到主机B的IP地址的项目。可能是主机B才入网,或者是主机A才刚开启,其高速缓存还是空的。这时,主机A会自动运行ARP,然后按照以下步骤找到主机B的硬件地址。

(1)当主机A需要解析一个IP地址对应的MAC地址时,ARP进程在本局域网上会广播发送ARP请求报文。如图所示。

(2)在本局域网上的所有主机上运行的ARP进程都收到此ARP请求报文。当主机B收到主机A发送的ARP请求报文,并看到自己的IP地址后,会进行应答,即向主机A发送ARP响应报文,该报文是单播报文。同时,就把主机A的地址映射写入主机B自己的ARP高速缓存中,方便主机B向主机A发送数据。如图所示:

(3)发起请求的主机A接收到主机B的ARP响应报文后,同样会将响应报文中发送者的IP地址和MAC地址的映射关系写入ARP高速缓存中。

ARP把保存在高速缓存中的每一个映射地址项目都设置生存时间,凡是超过生存时间的项目就从高速缓存中删除掉。用于防止存入高速缓存中的主机物理地址突然改变(例如主机B的网络适配器突然坏掉,B立即更换了一块,其硬件地址就改变了)。

三、局域网交互过程

1.同一个局域网

如图所示,有多台主机在同一个局域网内。现在主机A要向主机B发送一个IP数据报。首先主机A在ARP高速缓存内查找是否有主机B的IP地址。如有,就在ARP高速缓存中查出其对应的硬件地址,在把这个硬件地址写入MAC帧中,然后通过局域网把该MAC帧发送到此硬件地址。

如果在ARP高速缓存内没有查找到主机B的IP地址,主机A就会广播ARP请求报文。在该局域网内的所有主机都会收到该ARP请求报文,并对照自己的IP。当主机B收到该报文时,对照IP发现是自己。就会向主机A发送ARP响应报文。机A接收到主机B的ARP响应报文后,同样会将响应报文中发送者的IP地址和MAC地址的映射关系写入ARP高速缓存中。同时会把硬件地址写入MAC帧中,然后通过局域网把该MAC帧发送到此硬件地址。

2.不同局域网。

如图,有两个局域网用一个路由器R1连接起来。现在主机A要跟主机B连接。两台主机的IP地址为IP1和IP2,而MAC地址分别为HA1和HA4(HA标识Hardware Address)。通讯路径是A ->经过R1转发 ->B。路由器R1因为连接两个局域网上,所以会有两个MAC地址,即HA2和HA3。

现在主机A要向主机B发送一个IP数据报。首先主机A在ARP高速缓存内查找是否有网关的IP地址。如有,就在ARP高速缓存中查出其对应的硬件地址,在把这个硬件地址写入MAC帧中,然后通过局域网把该MAC帧发送到此硬件地址。

如果在ARP高速缓存内没有查找到网关的IP地址,主机A就会广播ARP请求报文。在该局域网内的所有网络设备都会收到该ARP请求报文,并对照自己的IP。当网关收到该报文时,对照IP发现是自己。就会向主机A发送ARP响应报文。机A接收到主机B的ARP响应报文后,会将响应报文中发送者的IP地址和MAC地址的映射关系写入ARP高速缓存中。同时会把硬件地址写入MAC帧中,然后通过局域网把该MAC帧发送到此硬件地址。

当路由器R1收到该MAC帧后,经过解析,得到目的IP2,目的IP不为网关IP,则进行数据转发。经过查询路由表,路由器直接连接主机B,可以进行直接交付,即把目的主机地址转换为具体的硬件地址(使用ARP得到),把数据封装成MAC帧,在发送此帧。