Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1755655
  • 博文数量: 413
  • 博客积分: 8399
  • 博客等级: 中将
  • 技术积分: 4325
  • 用 户 组: 普通用户
  • 注册时间: 2011-06-09 10:44
文章分类

全部博文(413)

文章存档

2015年(1)

2014年(18)

2013年(39)

2012年(163)

2011年(192)

分类: LINUX

2011-12-13 13:07:08

IP地址到物理地址的映射(ARP)

1. 在第四章中,我们讲到:用网络层来屏蔽掉底层网络硬件的差异。在网络层以及网络层以上通信时,我们使用的是IP地址,不是物理地址。但是通信最终的实现是在物理层和链路层的硬件来实现的,所以肯定存在一个问题:如何将IP地址映射到物理地址。

2. 在从源站到最终目的站的路径上,每一步都要进行地址映射:
1)在交付分组的最好一步,分组必须通过一个物理网络送达它的最终目的站,发送分组的计算机在实现传输前,必须把最终目的站的IP地址映射为目的站的物理地址
2)沿着从源站到目的站的路径,除了最后异步,在任意一点都必须吧分组发送到一个中间路由器。因此,发送方必须把中间路由器的IP地址映射为一个物理地址

3. 把IP地址映射为物理地址的问题称为“地址解析问题”,TCP/IP协议采用两种地址解析技术。因为物理地址有两种基本类型:固定的长地址(比如以太网物理地址)和易配置的短地址。
1)对于短地址,TCP/IP通过直接映射进行解析
2)对于固定的长地址,TCP/IP通过动态绑定进行解析。使用一个底层协议来动态地绑定地址,这个协议称为“地址解析协议”(Address Resolution Protocol, 简称ARP).

基本思路为:当主机A要解析主机B的IP地址IB时,它广播一个特殊的分组,请求IP地址为IB的主机用他的物理地址PB做出响应。包括B在内的所有主机都接收到这个请求,但只有主机B识别出他的IP地址,然后发出一个含有自己的物理地址的回答。当A收到回答后,就使用该物理地址把互联网分组直接发送给B。
注:这是主机A和B在同一个局域网中的简单的情况(“直接交付”),当主机A和B不在同一个局域网中时,必须使用“间接交付”ARP报文:主机A使用ARP协议把数据包交给本地路由器,中间路由器进行一步步转发,最后到达目的网络,目的网络路由器使用ARP协议进行“直接交付”。最后主机A得到主机B的物理地址。
判断是否同一局域网的方法为:
利用子网掩码来获得B的IP地址中的网络号A的IP地址的网络号进行比较来判断。

总之:通过地址解析协议ARP,主机只要知道同一物理网络上某个目的主机的IP地址,就可以找到该目的站的物理地址

4. ARP高速缓存
为了降低通信费用,使用ARP的计算机维护着一个高速缓存,存放最近获得的IP地址到物理地址的绑定。也就是说,当一台计算机发送一个ARP请求并接收到一个ARP回答后,它就在自身的高速缓存中保存IP地址及对应的物理地址信息,以便于日后查询。当计算机要传输一个分组时,在它发出ARP请求之前,总是先在高速缓存中寻找所需的绑定。如果计算机在它的ARP高速缓存中找到了所要的绑定,就不需要在网络上广播ARP请求。

5. ARP高速缓存超时
ARP高速缓存是软状态(soft state)的一个例子,这种技术常用在网络协议中。软状态描述了这样一种情况:信息可能在没有任何警告的情况下变得“陈旧”。
当地址绑定信息被放入ARP缓存时,协议需要设置一个计时器,其典型的超时时间是20分钟。当计时器超时后必须删除这些信息。

6. ARP的改进
协议中包括了几处对ARP的改进。
1)如果主机A因为需要给主机B发送分组而准备使用ARP,那么很有可能主机B在不久以后需要给A发送分组。由于预感到B的这种需要,为避免额外的网络通信量,A在发给B的请求中包含了A的IP到物理地址的绑定。B从请求中取出A的绑定,把它保存在自己的ARP缓存中,然后给A发送回答。
2)因为A广播它的首次请求,所以网络上的所有机器都接收到该请求,并且都可以从中取出A的IP到物理地址的绑定,然后用此绑定来更新自己的ARP缓存中的相应绑定。
3)当计算机的网卡被替换掉时,它的物理地址就变了。地址变更的计算机可以在启动时,通过广播一个无回报的(gratuitous)ARP请求,把新地址通知该其它主机。

7. ARP与其它协议之间的关系
ARP提供一种可以把IP地址映射到物理地址的机制;无论硬件使用的是哪种底层地址机制,ARP只是把一个新的地址方案施加在底层地址机制上。
总之:ARP是一个隐藏底层网络物理编址并允许给每台机器分配任意IP地址的底层协议。我们把ARP看成是物理网络系统的一部分,而不是互联网协议的一部分。

8. ARP报文的封装与标识
当ARP报文从一台机器传到另一台机器时,必须将其放在物理帧中传输。将ARP报文放在该帧的数据字段中。并在帧的类型字段中用一个特殊值来标志为ARP报文。(回忆一下帧的格式:前同步码8字节 + 目标地址6字节 + 源地址6字节 + 帧类型2字节 + 帧数据(46-1500) + CRC 4字节 )

9. ARP的协议格式
ARP协议的目的是屏蔽各种不同的底层硬件的,而各种硬件的物理地址不尽相同。所以ARP没有固定格式,但是
在帧首部开头附近包含一些固定字段,用于指定可在后续字段中找到的地址的长度。(ARP报文包含有硬件地址长度字段和协议地址长度字段)

10. ARP缓存自动重新确认
抖动(jitter)现象:即分组间传输时间的差异。主机A向主机B发送数据包,假设要花费很长的时间,那么就可能产生这样的情况:上一个分组发送完毕,在发送下一个分组时,主机A中的关于主机B的物理地址的缓存超时,被删除了,那么下一个分组和上一个分组之间就存在额外的延迟。因为在发送下一个分组之前必须重新利用ARP协议再次获得主机B的物理地址,才能开始发送下一个分组。

为了避免抖动的产生,引入了提早重新确认技术。即把ARP缓存中的每个表项与两个计数器关联起来:传统的定时器和一个重新确认物理地址的计数器。当重新确认计数器超时时,软件将对表项进行检查,如果还有数据报最近还在使用该表项,软件将发送一个ARP请求并继续使用该表项,当接收到ARP回复时,更新主机B的物理地址,并将两个定时器复位。

11. RARP --- 逆地址解析协议
RARP在internet中的重要性目前已经不再存在,但它过去曾经是没有固定存储的自引导(bootstrap)系统所使用的重要协议。RARP允许系统在启动时获得一个IP地址:
在系统启动时,它广播发送一个RARP请求,然后等待响应,网络上的另一台计算机必须配置成监听RARP请求,并生成含义请求方IP地址的RARP回答。一旦应答达到,系统继续启动,并在所有通信中使用获得的IP地址。

阅读(847) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~