ARP协议详解

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了ARP协议详解相关的知识,希望对你有一定的参考价值。

ARP协议简介

IP地址属于网络层,但ip地址在传输的时候需要跨越不同的物理网络进行交换,此时如果一台主机要将一个帧发送到另一台主机,光知道其ip地址是不够的,还需要知道其有效的“硬件地址”。

ARP(地址解析协议)就提供了一种在32位IPv4地址和以太网的48位MAC地址(硬件地址)之间的映射。

 

ARP提供的是网络层地址到相关硬件地址的“动态映射”,即:会自动执行和随时间变化,而不需要系统管理员的配置。(如一台一台主机改变了它的网卡后(mac地址改变),ARP可以在一定延时后继续正常工作)

 

整体流程

http://10.0.01当本地计算机在浏览器中浏览一个网页时:

本地计算机先是判断该服务是位于本地(看ip地址是否位于同一子网)还是远程。

如果是远程,且发送端与远程接收端之间是“直接交付”(拥有相同的ip地址前缀)的形式,

整体流程如下图:

 技术分享

 

(1)浏览器调用一个特殊的函数来解析URL,看其是否包含域名(主机名)。(此例子使用的是IPv4地址)

(2)应用程序要求TCP协议建立一条到10.0.0.1的连接。

(3)TCP尝试向远程主机发送一个连接请求(此时由于假定的是直接交付,所以中途不经过任何路由器)。

(4)、(5)查看本地主机的“ARP缓存(或表)”中是否已经缓存了ip地址与mac地址之间的映射,如果没有缓存,则进入下面的步骤。

(6)在一个共享的链路层网段上(ARP协议多用于局域网内的直接交付),ARP向“所有主机”发送一个称为“ARP请求”的以太网帧。这种行为被称为“以太网广播”(也叫链路层广播)。而“ARP请求”的目的是:如果某主机接收了该ARP请求,且该主机IPv4地址也与10.0.0.1一致,那么这台主机请返回给我你的MAC地址。(ARP协议就是用这种方式,知道了10.0.0.1地址所对应的MAC地址)。(IP地址不匹配的主机会主动丢弃掉ARP请求)

(7)假设找到了“使用10.0.0.1作为IPv4地址”的主机,那么该主机的ARP协议需要响应一个“ARP应答”。该应答包含该主机的IPv4地址和MAC地址。该应答会直接发送给请求的发送方。

(8)“ARP应答”被原始请求的发送方接收。

(9)发送方将数据报封装在以太网帧中,使用通过ARP协议获取到的接收方的MAC地址,直接将以太网帧发送给接收方。

 

由此该以太网帧仅指向正确的目的主机,其他主机或路由不会接收到这个数据报。

通过这个流程,我们也能明白:当仅使用直接交付时,并不需要经过路由器。

 

APR缓存

为了使ARP高效运行,每个主机或路由器上都维护有一张“ARP缓存表”。

该缓存存储了每个接口从网络层地址(ip地址)到硬件地址(mac地址)的最新映射关系。

缓存正常的到期时间为:条目创建开始后的20分钟。(管理员也可设置缓存条目永不超时)

 

每个映射的缓存条目包含5个元素:

主机名(对应一个ip地址)、硬件地址类型、硬件地址、标志、本地网络接口。

 

其中“标志”包含了一个符号:C、M或P.

C表示,该缓存条目是由ARP协议自己“动态学习”得来的。

M表示,该缓存条目是手工输入的。

P表示,该缓存条目是“发布的”。对于任何P类的缓存条目,主机对输入的ARP请求都返回一个ARP相应。该选项用于配置代理ARP。

 

ARP帧格式

 技术分享

 

前14个字节(MAC头部)是一个标准的以太网帧头部,DST表示目的MAC地址,SRC表示源MAC地址,长度或类型用于确定头部后面的数据类型,常见的值包括:0x0800(IPv4)、0x86DD(IPv6)、0x0806(ARP)

 

前14个字节之后,由ARP协议来定义,ARP帧的前8个字节时通用的:

硬件类型字段指出硬件地址类型,对于以太网,该值为1.

 

协议类型字段指出映射的协议地址类型,对于IPv4地址,该值为0x0800。(当以太网帧包含“IPv4数据报”时,长度或类型字段与协议字段可能一样,即都是0x0800)

 

硬件大小和协议大小分别指出硬件地址和协议地址的字节数。(对于以太网中使用IPv4地址的ARP应答,其值为6和4)

 

Op字段指出该操作是:ARP请求(值为1)、ARP应答(2)、RARP请求(3)、RARP应答(4)

 

代理ARP

代理ARP是一个系统(通常是一个路由器)可回应不同主机的ARP请求(简单的说就是不管你找的是不是我,我都响应你,把我的mac地址告诉你,这样你下次再访问该ip时,通过arp缓存表,自动就访问到我这台冒名的主机上了)。

以上是关于ARP协议详解的主要内容,如果未能解决你的问题,请参考以下文章

17.ARP协议的工作机制详解

ARP协议报文详解

ARP协议详解

TCP-IP协议详解(3) IP/ARP/RIP/BGP协议

TCP/IP详解学习笔记IP协议ARP协议和RARP协议

TCP/IP协议——ARP详解