当一台主机把以太网数据帧发送到位于同一局域网上的另一台主机时,是根据 48 bit的以太网地址来确定目的接口的。设备驱动程序从不检查 I P数据报中的目的I P地址。

地址解析为这两种不同的地址形式提供映射: 32 bit的I P地址和数据链路层使用的任何类型的地址。

A R P(地址解析协议)和R A R P(逆地址解析协议)。

A R P为I P地址到对应的硬件地址之间提供动态映射。之所以用动态这个词是因为这个过程是自动完成的,一般应用程序用户或系统管理员不必关心。

R A R P是被那些没有磁盘驱动器的系统使用(一般是无盘工作站或 X终端),它需要系统管理员进行手工设置。

2.例子

  1. 敲入下面这个形式的命令:
  2. % ftp bsdi
  3. 会进行以下这些步骤。
  4. 1) 应用程序FTP客户端调用函数g e t h o s t b y n a m e(3)把主机名(bsdi)转换成32 bitIP地址。这个函数在D N S(域名系统)中称作解析器。这个转换过程或者使用DNS,或者在较小网络中使用一个静态的主机文件(/e t c / h o s t s)。
  5. 2) F T P客户端请求T C P用得到的I P地址建立连接。
  6. 3)T C P发送一个连接请求分段到远端的主机,即用上述 I P地址发送一份 I P数据报.
  7. 4) 如果目的主机在本地网络上(如以太网、令牌环网或点对点链接的另一端),那么I P数据报可以直接送到目的主机上。如果目的主机在一个远程网络上,那么就通过 I P选路函数来确定位于本地网络上的下一站路由器地址,并让它转发 I P数据报。在这两种情况下,I P数据报都是被送到位于本地网络上的一台主机或路由器。
  8. 5)假定是一个以太网,那么发送端主机必须把 32 bitI P地址变换成48 bit的以太网地址。
  9. 从逻辑I n t e r n e t地址到对应的物理硬件地址需要进行翻译。这就是 A R P的功能。 A R P本来是用于广播网络的,有许多主机或路由器连在同一个网络上。
  10. 6) A R P发送一份称作 A R P请求的以太网数据帧给以太网上的每个主机。这个过程称作广播,如图 4 - 2中的虚线所示。 A R P请求数据帧中包含目的主机的 I P地址(主机名为b s d i),其意思是“如果你是这个I P地址的拥有者,请回答你的硬件地址。”
  11. 7) 目的主机的 A R P层收到这份广播报文后,识别出这是发送端在寻问它的 I P地址,于是发送一个A R P应答。这个A R P应答包含I P地址及对应的硬件地址。
  12. 8) 收到A R P应答后,使A R P进行请求—应答交换的I P数据报现在就可以传送了。
  13. 9) 发送I P数据报到目的主机。
  14. A R P背后有一个基本概念,那就是网络接口有一个硬件地址(一个 48 bit的值,标识不同的以太网或令牌环网络接口)。在硬件层次上进行的数据帧交换必须有正确的接口地址。但是,T C P / I P有自己的地址: 32 bitI P地址。知道主机的I P地址并不能让内核发送一帧数据给主机。内核(如以太网驱动程序)必须知道目的端的硬件地址才能发送数据。 A R P的功能是在32 bitI P地址和采用不同网络技术的硬件地址之间提供动态映射。
  15. 点对点链路不使用A R P。当设置这些链路时(一般在引导过程进行),必须告知内核链路每一端的I P地址。像以太网地址这样的硬件地址并不涉及。

3.ARP高速缓存

A R P高效运行的关键是由于每个主机上都有一个 A R P高速缓存。这个高速缓存存放了最近I n t e r n e t地址到硬件地址之间的映射记录。高速缓存中每一项的生存时间一般为 2 0分钟,起始时间从被创建时开始算起。

我们可以用a r p命令来检查ARP高速缓存。参数-a的意思是显示高速缓存中所有的内容。

bsdi % arp -a

sun (140.252.13.33) at 8:0:20:3:f6:42

svr4 (140.252.13.34) at 0:0:c0:c2:9b:26

48 bit的以太网地址用6个十六进制的数来表示,中间以冒号隔开。

4.ARP的分组格式

  1. 在以太网上解析 I P地址时, A R P请求和应答分组的格式如图 4 - 3所示(A R P可以用于其他类型的网络,可以解析 I P地址以外的地址。紧跟着帧类型字段的前四个字段指定了最后四个字段的类型和长度)。
  2. 以太网报头中的前两个字段是以太网的源地址和目的地址。目的地址为全 1的特殊地址是广播地址。电缆上的所有以太网接口都要接收广播的数据帧。
  3. 两个字节长的以太网帧类型表示后面数据的类型。对于 A R P请求或应答来说,该字段的值为0 x 0 8 0 6
  4. h a r d w a r e (硬件)和p r o t o c o l (协议)用来描述A R P分组中的各个字段。例如,一个 A R P请求分组询问协议地址(这里是 I P地址)对应的硬件地址(这里是以太网地址)。
  5. 硬件类型字段表示硬件地址的类型。它的值为 1即表示以太网地址。协议类型字段表示要映射的协议地址类型。它的值为 0 x 0 8 0 0即表示 I P地址。它的值与包含 I P数据报的以太网数据帧中的类型字段的值相同
  6. 操作字段指出四种操作类型,它们是 A R P请求(值为1)、A R P应答(值为2)、R A R P请求(值为3)和R A R P应答(值为4)。这个字段必需的,因为 A R P请求和A R P应答的帧类型字段值是相同的。
  7. 接下来的四个字段是发送端的硬件地址(在本例中是以太网地址)、发送端的协议地址(I P地址)、目的端的硬件地址和目的端的协议地址。注意,这里有一些重复信息:在以太网的数据帧报头中和A R P请求数据帧中都有发送端的硬件地址。
  8. 对于一个A R P请求来说,除目的端硬件地址外的所有其他的字段都有填充值。当系统收到一份目的端为本机的 A R P请求报文后,它就把硬件地址填进去,然后用两个目的端地址分别替换两个发送端地址,并把操作字段置为 2,最后把它发送回去。

5.ARP举例

5.1一般例子

为了看清楚A R P的运作过程,我们执行 t e l n e t命令与无效的服务器连接。

  1. 当我们在另一个系统( s u n)上运行带有- e选项的 t c p d u m p命令时,显示的是硬件地址(在我们的例子中是48 bit的以太网地址)。
  2. ![](https://images2018.cnblogs.com/blog/1276762/201806/1276762-20180617190805835-335528109.png)
  3. 在第1行中,源端主机( b s d i)的硬件地址是 0 : 0 : c 0 : 6 f : 2 d : 4 0。目的端主机的硬件地址是ff : ff : ff : ff : ff : ff,这是一个以太网广播地址。电缆上的每个以太网接口都要接收这个数据帧并对它进行处理
  4. 1行中紧接着的一个输出字段是 a r p,表明帧类型字段的值是 0 x 0 8 0 6,说明此数据帧是一个A R P请求或回答。
  5. 在每行中,单词 a r pi p后面的值6 0指的是以太网数据帧的长度。由于 A R P请求或回答的数据帧长都是4 2字节(2 8字节的A R P数据,1 4字节的以太网帧头),因此,每一帧都必须加入填充字符以达到以太网的最小长度要求: 6 0字节。
  6. 1行中的下一个输出字段 arp who-has表示作为A R P请求的这个数据帧中,目的 I P地址是s v r 4的地址,发送端的 I P地址是b s d i的地址。 t c p d u m p打印出主机名对应的默认 I P地址
  7. 从第 2行中可以看到,尽管 A R P请求是广播的,但是 A R P应答的目的地址却是 b s d i 0 : 0 : c 0 : 6 f : 2 d : 4 0)。A R P应答是直接送到请求端主机的,而是广播的。
  8. tcpdump打印出arp reply的字样,同时打印出响应者的主机名和硬件地址。
  9. 3行是第一个请求建立连接的 T C P段。它的目的硬件地址是目的主机 (s v r 4)。

5.2 对不存在主机的ARP请求



5.3 ARP高速缓存超时设置

在A R P高速缓存中的表项一般都要设置超时值。从伯克利系统演变而来的系统一般对完整的表项设置超时值为2 0分钟,而对不完整的表项设置超时值为 3分钟。当这些表项再次使用时,这些实现一般都把超时值重新设为 2 0分钟。

6.ARP代理

如果A R P请求是从一个网络的主机发往另一个网络上的主机,那么连接这两个网络的路由器就可以回答该请求,这个过程称作委托 A R P或A R P代理(Proxy ARP)。这样可以欺骗发起A R P请求的发送端,使它误以为路由器就是目的主机,而事实上目的主机是在路由器的“另一边”。路由器的功能相当于目的主机的代理,把分组从其他主机转发给它。

A R P代理的其他用途:通过两个物理网络之间的路由器可以互相隐藏物理网络。在这种情况下,两个物理网络可以使用相同的网络号,只要把中间的路由器设置成一个 A R P代理,以响应一个网络到另一个网络主机的 A R P请求。这种技术在过去用来隐藏一组在不同物理电缆上运行旧版 T C P / I P的主机。分开这些旧主机有两个共同的理由,其一是它们不能处理子网划分,其二是它们使用旧的广播地址。

7.免费ARP

另一个 A R P特性称作免费 ARP (gratuitous ARP)。它是指主机发送 A R P查找自己的I P地址。通常,它发生在系统引导期间进行接口配置的时候。

在互联网中,如果我们引导主机 b s d i并在主机s u n上运行t c p d u m p命令,可以看到如图4 - 7所示的分组。



免费A R P可以有两个方面的作用:

1) 一个主机可以通过它来确定另一个主机是否设置了相同的 I P地址。

2) 如果发送免费 A R P的主机正好改变了硬件地址(很可能是主机关机了,并换了一块接口卡,然后重新启动),那么这个分组就可以使其他主机高速缓存中旧的硬件地址进行相应的更新。

8.ARP命令

-a来显示A R P高速缓存中的所有内容.

超级用户可以用选项- d来删除A R P高速缓存中的某一项内容.

- s来增加高速缓存中的内容

位于命令行末尾的关键字 p u b和- s选项一起,可以使系统起着主机 A R P代理的作用。

来源: TCP/IP 卷一

04-ARP:地址解析协议的更多相关文章

  1. ARP地址解析协议

    ARP地址解析协议:为IP地址到相应的硬件地址之间提供动态映射. 下面图为例说明地址解析协议的详细工作流程. 结合图中的序号进行说明. client通过FTP协议连接server时,首先解析器会把主机 ...

  2. ARP地址解析协议原理

    概述 网络层以上的协议用IP地址来标识网络接口,但以太数据帧传输时,以物理地址来标识网络接口.因此我们需要进行IP地址与物理地址之间的转化. 对于IPv4来说,我们使用ARP地址解析协议来完成IP地址 ...

  3. 《TCP/IP详解 卷1:协议》第4章 ARP:地址解析协议

    4.1 引言 本章我们要讨论的问题是只对TCP/IP协议簇有意义的IP地址.数据链路如以太网或令牌环网都有自己的寻址机制(常常为48 bit地址),这是使用数据链路的任何网络层都必须遵从的.一个网络如 ...

  4. ARP:地址解析协议

    ARP是地址解析协议,简单语言解释一下工作原理.1:首先,每个主机都会在自己的ARP缓冲区中建立一个ARP列表,以表示IP地址和MAC地址之间的对应关系.2:当源主机要发送数据时,首先检查ARP列表中 ...

  5. arp:地址解析协议(Address Resolution Protocol)(来自维基百科)

    地址解析协议(Address Resolution Protocol),其基本功能为通过目标设备的IP地址,查询目标设备的MAC地址,以保证通信的顺利进行。它是IPv4中网络层必不可少的协议,不过在I ...

  6. 【网络协议】ARP地址解析协议

    地址解析协议ARP 在以太网协议中规定,同一局域网中的一台主机要和另一台主机进行直接通信,必须要知道目标主机的MAC地址.而在TCP/IP协议中,网络层和传输层只关心目标主机的IP地址.这就导致在以太 ...

  7. 【网络基础】ARP地址解析协议

    ARP(Address Rssolution Protocol) 地址解析协议 用于将IP地址解析为MAC地址. MAC地址是设备的物理地址,是被分配给每一个网络接口卡的全球唯一序号. 全球唯一:理论 ...

  8. 网络协议抓包分析——ARP地址解析协议

    前言 计算机之间可以相互通信的前提是要知道对方的地址,才可以发送信息给其他计算机,就像别人要联系你也得先知道你的电话号码一样.这里的地址因为网络分层的原因就包括IP地址和MAC地址(即网卡地址.硬件地 ...

  9. 第二章ARP——地址解析协议

    本章我们要讨论的问题是只对 T C P / I P协议簇有意义的I P地址.数据链路如以太网或令牌环网都有自己的寻址机制(常常为 48 bit地址),这是使用数据链路的任何网络层都必须遵从的.一个网络 ...

  10. 第四章:ARP 地址解析协议

    网络接口有一个硬件地址,48bit的值,在硬件层次上进行的数据帧交换必须有正确的接口地址.tcp/ip有自己的地址,32bit的IP地址. 但是知道主机的IP地址并不能让内核发送一帧数据给主机.内核( ...

随机推荐

  1. Java中final的用法总结

    1.         修饰基础数据成员的final 这是final的主要用途,其含义相当于C/C++的const,即该成员被修饰为常量,意味着不可修改.如java.lang.Math类中的PI和E是f ...

  2. @PropertySouce注解

    1.@ProtertySource @PropertySouce是spring3.1开始引入的基于java config的注解. 通过@PropertySource注解将properties配置文件中 ...

  3. 快速挂载iso文件到虚拟机系统

    在vm软件菜单栏那里选择vm,再选择弹出菜单最下面的设置,如图,找到实体机上的iso文件,保存. 这时候,在虚拟机ls /dev会发现有一个cdrom,这个就是我们的iso文件,不过我们还需要把它挂载 ...

  4. Be Careful When Using Bit Field

    Below illustration is based on MSP430, IAR. See the implementation below. typedef struct { uint8_t g ...

  5. 数学 它的内容,方法和意义 第一卷 (A. D. 亚历山大洛夫 著)

    第一章 数学概观 (已看) 1. 数学的特点 2. 算术 3. 几何 4. 算术和几何 5. 初等数学时代 6. 变量的数学 7. 现代数学 8. 数学的本质 9. 数学发展的规律性 第二章 数学分析 ...

  6. Ts基础

    //typeof 用来判断变量类型 var s: string = 'egret'; var isString: boolean = typeof s === 'string'; console.lo ...

  7. out, ref 和 params 的区别和用法

    1. out 参数. 如果你在一个方法中,返回多个相同类型的值,可以考虑返回一个数组. 但是,如果返回多个不同类型的值,返回数组就不可取.这个时候可以考虑使用out参数. out参数就侧重于在一个方法 ...

  8. 拷贝某个区间(copy,copy_back)

    copy 为outputIterator中的元素赋值而不是产生新的元素,所以outputIterator不能是空的 如要元素安插序列,使用insert成员函数或使用copy搭配insert_itera ...

  9. 在HTML中导入外部的css

    1,标签:<link type="text/css" rel="stylesheet" href="CSS样式文件的绝对地址"> ...

  10. springfox+swagger2生成API文档

    1.建立一个spring mvc工程: 2.添加POM依赖: <properties> <springfoxversion>2.6.1</springfoxversion ...