ARP协议的详细介绍

ARP协议的详细介绍

1. 前言

原来学习过的ARP协议的原理现在回想起来发现忘记了许多细节,当时想做笔记也因为一些事情耽误了。这次温习一下,顺便补上这个笔记吧。

ARP,全称Address Resolution Protocol,中文名为地址解析协议,它工作在数据链路层,在本层和硬件接口联系,同时对上层提供服务。

在TCP/TP协议网络层及其以上,通常是根据IP地址来标识我们想要发送数据包的目标主机。但是在网络最底层数据包传输的过程中,而是根据MAC地址来决定发送的目标主机。互联网中每台主机均有着单独唯一的MAC地址作为标识。

ARP为IP地址到对应的MAC地址之间提供动态映射。

2. ARP原理

我们能够知道,对于一个IP数据报,其要么被发送到本地网络中的其他主机,要么被转发为本地网络中的路由器。所以,在ARP协议中解析的IP地址一定在是本地网络中的。

对于一个IP地址,获得其MAC地址的具体过程如下:

  1. 查询ARP高速缓存表。每台主机/路由器上都有一个ARP高速缓存表,ARP高速缓存表存放着最近IP地址到MAC地址之间的映射记录。如果ARP高速缓存中存放着对应IP地址的MAC地址就可以直接取用。否则进行步骤2。
  2. 广播发送ARP请求到以太网上的每个主机。ARP请求中包含目的主机的IP地址。其含义为“如果你是这个IP地址的拥有者,请回答你的MAC地址”。
  3. 目的主机的ARP层收到这份广播报文后,识别出这是发送端在询问它的IP地址,于是单播回复一个ARP应答,包含本机的目的IP地址和硬件地址。并且将源主机的IP地址和MAAC值存放如ARP缓存表。
  4. 本机收到ARP应答后就将目的主机的IP地址和MAC地址存入ARP缓存表。同时使用ARP进行请求-应答交换的IP数据报现在就可以传送了。

3. ARP 的分组格式

如上步骤中有两个概念,ARP请求数据包和ARP应答数据包。

首先介绍ARP的报文格式:

  1. 以太网目的地址:目地MAC地址,目的地址全为1就代表广播地址
  2. 以太网源地址: 源MAC地址
  3. 帧类型: 表示后面数据的类型,对于ARP请求或者应答来说,该字段值为0x0806
  4. 硬件类型:表示硬件地址的类型。它的值为1表示以太网地址
  5. 协议类型:表示要映射的协议地址类型。它的值为0x0800即表示IP地址
  6. 硬件地址长度和协议地址长度分别指出硬件地址和协议地址的长度,以字节为单位。对于以太网上IP地址的ARP请求或应答来说,它们的值分别为6和4
  7. 操作类型(OP):1表示ARP请求,2表示ARP应答,3表示RARP请求,4表示RARP应答
  8. 发送端MAC地址:发送方设备的硬件地址
  9. 发送端IP地址:发送方设备的IP地址
  10. 目标MAC地址:接收方设备的硬件地址
  11. 目标IP地址:接收方设备的IP地址

举个具体的例子,假设同一网段下有着如下两台主机:

主机 A IP:192.168.1.A MAC: AA-AA-AA-AA-AA-AA
主机 B IP:192.168.1.B MAC: BB-BB-BB-BB-BB-BB
其他主机的IP和MAC地址忽略。

主机A发送了一个请求主机BMAC地址的ARP请求包。其包的具体内容如下:

主机B收到了这个ARP请求包,就将发送ARP回应包给主机A,对于其他收到这个ARP请求包的主机,由于目的MAC地址不是自己,就会被简单的抛弃。

比较ARP请求包和ARP回应包,发现如下:

  1. ARP请求包的目的MAC地址是0xFFFFFFFFFFFF,为广播发送。ARP应答包的目的MAC地址为0xAAAAAAAAAAAA,为单播发送。
  2. ARP请求包中的目的MAC地址被置空,表示不知道。ARP应答中将目地MAC地址,源MAC地址等待都填充完全。

4. ARP高速缓存

ARP请求报文到达目的主机的时候,目的主机会将相应的IP地址和MAC地址存入ARP高速缓存中。

当主机收到目标主机发送的ARP高速缓存后,主机会将目标主机的IP地址和MAC地址同样的存入ARP高速缓存内。

存放在ARP高速缓存中包括动态表项和静态表项,动态表项就是如上由ARP协议进行维护。这些表项都设置了一个超时值,如果在超时值内无人使用,将会被删除。如果再次被使用,将会重新更新超时值的值。

对于ARP高速缓存中的静态表项,一般是由管理员来进行设置,无超时值,永久生效。

5. ARP代理

如果ARP协议中的请求主机A和目的主机B是在同一个网段内,但是却处在不同的物理网络中。主机A将广播发送ARP请求包到以太网中,此时连接两个网络的路由器可以代替主机B应答该请求。这个过程就被称为ARP代理。这样子可以欺骗发起ARP请求的发送端,让它误以为路由器就是目的主机,然而事实上目的主机是在路由器的“另一边”。

为什么要有ARP代理?

路由器的一个重要功能是把局域网广播包限制在该网内,不让扩散,否则会造成网络风暴。ARP 请求是个广播包,它询问的对象若在同一个局域网内,就会回答。但如果查询对象不在同一个局域网,就会由路由器提供的代理ARP服务来解决。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值