4.ARP:地址解析协议

2019独角兽企业重金招聘Python工程师标准>>> hot3.png

介绍

4.ARP:地址解析协议_第1张图片

内核知道IP也无法将数据传送到目的地址,必须知道MAC地址才能传送,所以需要ARP将IP解析为MAC地址

请求流程

4.ARP:地址解析协议_第2张图片

  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请求和应答采用相同的分组格式(下图数字单位为字节)

4.ARP:地址解析协议_第3张图片

  • 以太网目的地址全为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,预留出来让接收端填充

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

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

ARP示例

一次连接成功的ARP请求、响应

4.ARP:地址解析协议_第4张图片

一次连接超时的ARP请求、响应

4.ARP:地址解析协议_第5张图片

没有任何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代理

转载于:https://my.oschina.net/u/1378920/blog/1841979

你可能感兴趣的:(4.ARP:地址解析协议)