《TCP/IP 卷1》笔记:ARP协议

ARP协议

引言

只讨论对TCP/IP协议族有意义的IP地址。地址解析是为两中不同地址形式提供映射:32bit的ip地址和数据链路层使用 的任何类型地址。ARP为ip和对应的硬件地址之间提供动态映射。无需关心。RARP是需要手动设置的。

一个例子

《TCP/IP 卷1》笔记:ARP协议

  1. ftp是应用层协议。使用tcp/ip通信
  2. 输入域名时,会通过DNS的解析器,转变成32bit的ip地址
  3. ftp客户端请求tcp用ip地址建立连接
  4. tcp三次握手
  5. 目标主机在本地网络上可以直接连接,如果在远程网络上,要通过ip路由来确定下一站路由地质,并让它换发ip数据报
  6. 如果是以太网,则需要需要使用ARP协议,发送一个带有目标ip地址的arp数据报进行广播。(以太网广播地址ff:ff:ff:ff:ff:ff)
  7. 目标主机的ARP层收到广播报文,会发送arp应答,包含本机ip地址和硬件地址。
  8. ip数据报就可以通过链路层发送到目标主机了

ARP高速缓存

每台主机都有高速缓存,这个缓存存放了ip地址和硬件地址的映射记录。缓存的有效时间一般为20分钟,起始时间从被创建时开始算起。
可以使用arp -a 查看

《TCP/IP 卷1》笔记:ARP协议
ARP请求的帧
《TCP/IP 卷1》笔记:ARP协议

  • 6字节的广播以太网地址,6字节的ARP请求者的以太网地址
  • 帧类型:arp协议的值是0x0806
  • 硬件类型:硬件地址的类型,1表示以太网地址
  • 协议类型:表示本arp请求获取的什么协议的目标以太网地址。ipv4
  • 是0x0800
  • hardware type:表示硬件地址的长度,字节为单位
  • protocol type:表示协议地址的长度,字节为单位
  • op:arp请求时1,arp应答是2,rarp请求是3,rarp应答是4
  • 发送端以太网地址:arp请求时发送端的以太网地址
  • 发送端协议地址:arp请求时根据协议获取以太网地址的协议地址
  • 目标端以太网地址:arp响应时填充响应端的以太网地址
  • 目标端协议地址:arp请求时要获取以太网地址的协议地址

使用arp -d * 删除arp缓存,就能收到ARP的响应分组
《TCP/IP 卷1》笔记:ARP协议

ARP代理

如果ARP请求是从一个网络的主机发往另一个网络的主机,连接这两个网络的路由器就可以回答该请求,这个过程称作委托ARP或ARP代理(Proxy ARP)。

《TCP/IP 卷1》笔记:ARP协议

  • gemini主机要发送ARP请求给140.252.1.29
  • netb路由器发现该ip地址是它的拨号主机。则把本机硬件地址作为目标硬件地址响应了arp请求
  • gemini主机把数据报发送给netb路由器,netb路由器通过slip传输给sun主机

arp -a的列表中发现ip地址不同,硬件地址相同就表明是ARP代理。

免费ARP

一个ARP特性:免费ARP。是指主机发送ARP查找自己的IP地址。
作用:

  1. 一个主机可以通过它来确定另一主机是否设置了相同的IP地址。如果收到请求会在终端日志显示错误信息。
  2. 如果主机收到某个IP地址的ARP请求,而且它已经在接收者的高速缓存中,那么就要用ARP请求中的发送端硬件地址对高速缓存进行更新。

小结

TCP/IP中,ARP协议只是基础协议,获取ip。ARP的功能:委托ARP,免费ARP。

习题
4.1 当输入命令以生成类似图4-4那样的输出时,发现本地ARP快速缓存为空以后,输入命令bsdi % rsh svr4 arp -a如果发现目的主机上的ARP快速缓存也是空的,那将发生什么情况? (该命令将在svr4主机上运行arp -a命令)。
:ARP缓存为空,则需要向以太网广播地址发出ARP请求分组,目标主机svr4收到请求后,记录到本地高速缓存,返回ARP响应分组。发送数据报,然后建立tcp连接。

4.2 请描述如何判断一个给定主机是否能正确处理接收到的非必要的ARP请求的方法。
:啥叫非必要的ARP请求,就当作是ARP请求中的目标IP不是本机。我们要做的就是测试没必要的ARP请求是否会更新高速缓存。

  1. 那么就先发送目标IP是给定主机的ARP请求。给定主机中的高速缓存中就有了本机的映射。
  2. 给本机换一个网卡接口,ip不变。发送免费ARP请求。
  3. 查看给定主机的高速缓存是否有更新本机的硬件地址

4.3 由于发送一个数据包后ARP将等待响应,因此 4.2节所描述的步骤7可能会持续一段时间。你认为ARP将如何处理在这期间收到相同目的IP地址发来的多个数据包?
:阅读主机需求(Host Requirement)RFC的2.3.2.2节和本书中的11.9节。

4.4 在4 . 5节的最后,我们指出Host Requirements RFC和伯克利派生系统在处理活动ARP表目的超时时存在差异。那么如果我们在一个由伯克利派生系统的客户端上,试图与一个正在更换以太网卡而处于关机状态的服务器主机联系,这时会发生什么情况?如果服务器在引导过程中广播一份免费ARP,这种情况是否会发生变化?
:当服务器关闭时,保存了服务器的高速缓存,那么访问时会刷新20分钟的定时,直至20分钟后该表目删除。如果广播了免费的ARP,那么会刷新高速缓存中的服务器ip映射的内容