地址解析协议ARP
ARP协议是已知一个主机的IP地址,找到该主机的MAC地址
每一个主机都设有一个ARP高速缓存,里面有本局域网上的各主机和路由器的IP地址到MAC地址的映射,这是主机知道的一些地址,那么还有些主机不知道的MAC地址,它就会自动运行ARP
通过以下例子来说明:
主机A向本局域网上的主机B发送数据,首先在其ARP高速缓存里查找B的IP地址,如果找到了就把这个地址写入MAC帧的首部(可参考下图),在通过局域网把该MAC帧发往此硬件地址,如果没找到主机B的IP地址,主机A就会自动运行ARP,在本局域网上广播发送一个ARP请求分组,内容为:“我的IP地址是:192.168.1.106,硬件地址是00:0C:29:87:90:18,我想知道IP地址为192.168.1.101主机的硬件地址”,在本局域网上的所有主机上运行的ARP进程都受到此ARP请求分组,主机B在ARP请求分组中见到自己的IP地址,就向A发送ARP响应,并写入自己的硬件地址,其他主机不予理睬这个请求,ARP响应分组的内容主要是:“我的IP地址是:192.168.1.101,我的硬件地址是00:0c:29:2c:57:ce”,主机A收到B发送的响应分组后,就在其APR高速缓存中写入主机B的IP地址到硬件地址的映射,B也会把A的IP地址到硬件值得的映射写到它自己的ARP的高速缓存中
前14个字节是以太网的首部,其中的以太网目的地址和以太网源地址这两个字段是指MAC地址(物理地址),源地址是已知的,目的地址是未知的,用ff ff ff ff ff ff填充 类型是指上层协议的类型,有3种值(0800是IP,0806是ARP请求/应答,8035是RARP请求/应答),这里以ARP请求/应答为例
硬件类型是指链路层网络链路,以太网是1
协议类型是指要转换的协议类型(即交给谁),IP为0800
硬件地址长度和协议地址长度(相对于以太网来说)分别是6和4
op指明ARP是请求还是应答,1为请求,2为应答
一个具体的例子:
上图中第一行是请求帧
以太网首部的地址是MAC地址(6个字节),由于目的主机的物理地址是未知的,因此用全f填充(采用广播地址)
OP字段 00 01 表示为请求帧
目的主机 MAC地址全0待填写
第二行是应答帧(此时目的主机和源主机是反过来的,也就说原来的目的主机是现在的源主机)
以太网首部的目的MAC地址为请求帧中的源地址,源MAC地址为此时源主机的MAC地址
OP字段 00 02 表示为应答帧