TCP/IP协议学习(二)ARP和RARP

来自网络小白的笔记二

概述

ARP为IP地址到对应的硬件地址之间提供动态映射。
RARP是被哪些没有磁盘驱动器的系统使用,它需要系统管理员进行手工设置。


ARP工作过程

  • ARP发送一份称作ARP请求的以太网数据帧给以太网上的每个主机。这个过程称为广播,ARP请求数据帧中包含目的主机的IP地址,表示“如果你是这个IP地址的拥有者,请回答你的硬件地址”。
  • 目的主机的ARP层收到这份广播后,识别出这是发送端在询问它的IP地址,于是发送一个ARP应答。这个ARP应答包含IP地址和对应的硬件地址。
  • 收到ARP应答后,使ARP进行请求-应答交换的IP数据报现在就可以传送了。

点对点链路(PPP)不使用ARP。


ARP高速缓存

这是ARP高效运行的关键:每个主机上都有一个ARP告诉缓存。这个高速缓存存放了最近Internet地址到硬件地址之间的映射记录。

使用“arp -a”查看系统中高速缓存的内容:

1
2
3
4
5
6
7
8
9
10
# arp -a
? (10.200.100.1) at 9c:6:1b:5:c7:f8 on en0 ifscope [ethernet]
? (10.200.100.10) at c8:ff:28:5c:6e:1d on en0 ifscope [ethernet]
? (10.200.100.55) at 2c:6f:c9:6:ae:5f on en0 ifscope [ethernet]
? (10.200.100.57) at c0:d0:12:d6:28:6c on en0 ifscope [ethernet]
? (10.200.100.71) at d0:25:98:3a:c0:c8 on en0 ifscope [ethernet]
? (10.200.100.198) at a0:99:9b:f:7a:9f on en0 ifscope [ethernet]
? (10.200.100.204) at c8:f6:50:1:a4:e7 on en0 ifscope [ethernet]
? (10.200.100.252) at 34:e1:2d:6b:33:ed on en0 ifscope [ethernet]
? (10.200.101.137) at ac:e0:10:27:2d:bf on en0 ifscope [ethernet]


ARP报文格式

  • 硬件类型:指明了发送方想知道的硬件接口类型,以太网的值为1;
  • 协议类型:指明了发送方提供的高层协议类型,IP为0800(16进制);
  • 硬件地址长度和协议长度:指明了硬件地址和高层协议地址的长度,这样ARP报文就可以在任意硬件和任意协议的网络中使用;
  • 操作类型:用来表示这个报文的类型,ARP请求为1,ARP响应为2,RARP请求为3,RARP响应为4;
  • 发送方硬件地址(0-3字节):源主机硬件地址的前3个字节;
  • 发送方硬件地址(4-5字节):源主机硬件地址的后3个字节;
  • 发送方IP地址(0-1字节):源主机硬件地址的前2个字节;
  • 发送方IP地址(2-3字节):源主机硬件地址的后2个字节;
  • 目标硬件地址(0-1字节):目的主机硬件地址的前2个字节;
  • 目标硬件地址(2-5字节):目的主机硬件地址的后4个字节;
    目标IP地址(0-3字节):目的主机的IP地址。

ARP代理

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


RARP工作原理

1、网络上的每台设备都会有一个独一无二的硬件地址,通常是由设备厂商分配的MAC地址。PC1从网卡上读取MAC地址,然后在网络上发送一个RARP请求的广播数据包,请求RARP服务器回复该PC的IP地址。
2、RARP服务器收到了RARP请求数据包,为其分配IP地址,并将RARP回应发送给PC1。
3、PC1收到RARP回应后,就使用得到的IP地址进行通讯。


小结

在大多数TCP/IP实现中,ARP是一个基础协议,但是它的运行对于应用程序或系统管理员来说一般是透明的。ARP告诉缓存在它的运行过程中非常关键,我们可以用arp命令对高速缓存进行检查和操作。高速缓存中的每一项内容都有一个定时器,根据它来删除不完整和完整的表项。


参考资料:

  1. ARP (地址解析协议)
  2. 反向地址转换协议