4.ARP:地址解析协议

介绍

image_1chlh8no01e56g1416i4eaailb9.png-30.9kB

内核知道IP也没法将数据传送到目的地址,必须知道MAC地址才能传送,因此须要ARP将IP解析为MAC地址缓存

请求流程

image_1chlipvna1lsq4d26ndp5fqo7m.png-99.6kB

  1. DNS将主机名解析为IP地址
  2. 用IP地址创建链接
  3. 用IP地址发送IP数据包
  4. 若是目的主机在本地网络,那么IP数据报能够直接发送过去;若是目的主机在远程网络,那么IP数据报先通过路由到达本地网络的下一站路由器,让它转发
  5. ARP用于将IP地址转换为MAC地址
  6. 广播ARP请求到该以太网全部主机
  7. 目的主机ARP层收到广播请求,识别出IP地址与本身相同,则回答ARP应答,包含IP地址与MAC地址
  8. 收到ARP应答,就能够传送IP数据报
  9. 将IP数据报发送到目的主机

ARP高速缓存

为了保证ARP高效运行,每一个主机都有ARP高速缓存,存放最近IP地址到MAC地址的映射记录,通常生存时间为20min网络

image_1chljt4nj179q1k2abbrph81odi13.png-20.2kB

ARP分组格式

ARP请求和应答采用相同的分组格式(下图数字单位为字节)代理

image_1chlp22e068e199vgfl1i991vhg1g.png-79kB

  • 以太网目的地址全为1表明广播地址
  • 帧类型:后面的数据类型,0x0806表明ARP请求或应答
  • 硬件类型:硬件地址的类型,值为1表明以太网MAC地址
  • 协议类型:硬件地址映射的协议地址类型,值为0x0800表明IP地址
  • 硬件地址长度:值为6表明MAC地址长度为6字节
  • 协议地址长度:值为4表明IP地址长度为4字节
  • op:四个操做类型,值1表明ARP请求,值2表明ARP应答,值3表明RARP请求,值4表明RARP应答

一个ARP请求,会将首部的以太网目的地址填为全1,表示发起一次广播,而后会将请求体中的目的以太网地址填为全0,预留出来让接收端填充blog

一个ARP相应,会将预留的目的以太网地址填为全0,而后将首部和请求体中的以太网目的地址和以太网源地址进行交换,而且将op改成2,发送回去ip

  • ARP请求是一次广播,ARP响应则是向请求源发起的一次单播

ARP示例

一次链接成功的ARP请求、响应内存

image_1chp94h8318vb7841f6gju9sif1t.png-100.2kB

一次链接超时的ARP请求、响应路由

image_1chp95evp11pqiq518a74d51nq42a.png-32.3kB

没有任何ARP之外的报文,而且超时时间指数退避配置

ARP代理

一个网络向另外一个网络发送ARP请求的时候,中间路由器代理响应ARP请求,就叫ARP代理路由器

经常使用场景是,不少网关设备支持将内网地址映射为公网地址,达到影藏内部网络的做用,这就利用了ARP代理:原本网关的实际IP为内网IP,可是须要提供公网访问IP,这时就须要开启ARP代理功能,接收目的IP为外网IP的ARP请求,并响应内网IP的MAC地址,以便将外网流量转发到内网硬件

免费ARP

免费ARP就是主机发送ARP广播请求查找本身的IP地址。一般在系统在配置网络的时候执行

两个经常使用场景:

  1. 查找网络内是否存在IP冲突的主机。若是发送免费ARP,而且获得响应,说明网络内存在相同IP的主机
  2. 通知网络其余主机,本机的IP和MAC地址映射有所改变。若是主机更换网卡,MAC地址会改变,IP可能仍是维持原状,这时广播一个免费ARP,能够通知其余主机本身的IP和MAC映射改变了,并让他们的ARP高速缓存及时更新

arp命令

-a显示ARP高速缓存全部内容,-d删除其中一项,-s增长一项内容(默认永久),pus和-s可让系统开启ARP代理

相关文章
相关标签/搜索