读《TCP/IP详解》第4、5章:ARP 地址解析协议和RARP 逆地址解析协议

ARP:地址解析协议,ARP为IP地址到对应的硬件地址之间提供动态映射。
RARP:逆地址解析协议,与ARP相反,RARP为硬件地址到对应的IP地址之间提供动态映射。

发送ftp请求时所执行的操作

  1. FTP客户端通过DNS(域名系统)将主机名转换成相应的IP地址。
  2. FTP客户端使用转换的IP地址,发送TCP请求。
  3. TCP发送一个请求分段到远端主机,如果目的地在本地网络,则直接将请求发送给主机。
  4. 如果是以太网,那么发送端将IP地址转换成以太网地址。
  5. 以广播方式发送ARP请求,请求数据帧中包含目的主机的IP地址,请求目的主机的硬件地址。
  6. 目的主机收到ARP请求之后,匹配IP地址,发送ARP应答,其中包含目的主机的硬件地址。
  7. 发送端主机收到ARP应答之后,即可传送IP数据报至目的主机。

ARP高速缓存是使得ARP高效运行的关键,每项纪录的生存时间一般为20分钟。可以使用arp命令来查看ARP高速缓存中的纪录项,如图所示:
查看arp调整缓存

ARP请求和应答的报文格式如下所示:
读《TCP/IP详解》第4、5章:ARP 地址解析协议和RARP 逆地址解析协议_第1张图片

  • 前面12个字节表示的是以太网目的地址和以太网源地址,目的地址全为1的特殊地址是广播地址
  • 帧类型,表示后面数据的类型,对于ARP请求或应答来说,该字段值为0x0806
  • 硬件类型表示硬件地址的类型,值为1表示以太网地址。
  • 协议类型表示要映射的协议地址类型,值为0x800表示IP协议
  • 硬件地址长度和协议地址长度分别指出了对应的地址的长度,以字节为单位,对于以太网上的ARP请求或应答来说,它们的值分别为6和4。
  • op字段指出四种操作类型,分别是ARP请求(值为1),ARP应答(值为2),RARP请求(值为3),RARP应答(值为4)。
  • 发送端地址:包括发送端的硬件地址和协议地址
  • 目的端地址:包括目的端的IP地址,当目的端收到ARP请求之后,将自己的硬件地址填入到目的以太网地址字段,并替换发送端地址,修改op字段类型为相应的值,再发回给ARP请求发送端。以报告自己的硬件地址。

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

免费ARP:指主机发送ARP请求查找自己的IP地址,通常发生在系统引导期间进行接口配置的时候,主要有两方面的作用:

  1. 一个主机可以通过它来确定另一主机是否设置了相同的IP地址,如果网络中有IP冲突,发送ARP请求之后,就会有别一主机进行回应。这样就可以确定IP地址冲突。
  2. 如果发送免费ARP的主机正好改变了硬件地址,那么该请求可以使其他主机更新对应的ARP缓存。

arp命令的使用:

  1. -a选项:列出arp缓存中的纪录项
  2. -d选项:拥有权限的用户可以用来删除缓存中的一项纪录
  3. -s选项:拥有权限的用户可以用来增加缓存中的一项纪录

ARP服务器相对比较简单,通常在TCP/IP内核中实现,而RARP服务器的设计相对复杂,必须由用户进程提供。

ARP报头定义如下:
读《TCP/IP详解》第4、5章:ARP 地址解析协议和RARP 逆地址解析协议_第2张图片

你可能感兴趣的:(TCP/IP详解)