TCP/IP学习笔记(4)

第四章 ARP:地址解析协议

ARP地址解析协议

APR为IP地址到对应的硬件地址之间提供动态映射(一般应用程序用户或系统管理员不必关心)。注意:RARP是那些没有磁盘驱动器的系统使用的,需要系统管理员进行手工设置。

ARP过程

以FTP命令为例
ftp XXX

  1. 应用程序FTP调用gethostname函数获得XXX的IP地址,这个函数一般在DNS中称为解析器。

  2. FTP客户端请求TCP用得到的IP地址简历连接。

  3. TCP发送一个连接请求分段到远端的主机,利用上述获得的IP地址发送一份IP数据报。
  4. 如果目的主机在本地网络上,那么IP数据报可以直接到达目的主机,如果在远程网络上,就需通过IP选路函数来确定位于本地网络上 的下一站路由器地址,让其转发IP数据报。这两种情况下,IP数据报都是被送到位于本地网络上的一台主机或服务器。
  5. 假如是一个以太网,那么发送端的主机必须把32bit的IP地址转换成48bit以太网地址。以逻辑Internet地址到对应的物理硬件地址需要进行翻译。(这就是ARP的功能)。ARP本来就是用于广播网络的,有许多主机或者路由器连在同一个网络上。
  6. ARP发送一份称作ARP请求的以太网数据帧给以太网上的每个主机,这个过程称作广播(告诉其他主机,如果你是这个IP地址请答复硬件地址)。
  7. 目的主机的ARP层收到这份广播报文之后,识别出这事发送端在询问其IP地址,于是发送一个ARP应答。这个ARP应答包含IP地址及对应的硬件地址。
  8. 收到ARP应答之后,使ARP进行请求-应答交换的IP数据报可以传送了。
  9. 发送数据报到目的主机。

ARP的功能就是在32bit的IP地址和采用不同网络技术的硬件地址之间提供动态映射。
注意:点对点链路不适用ARP,当设置这些链路的时候(在引导过程进行),必须告知内核链路每一端的IP地址。想以太网地址这样的硬件并不涉及。

ARP高速缓存

每个主机上都有一个ARP高速缓存(arp -a 可以查看到本机上的ARP高速缓存),这个缓存存放了最近Internet地址到硬件地址之间的映射记录。高速缓存中每项的生存时间一般是20分钟。

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

ARP的分组格式


硬件类型字段:表硬件地址的类型,1标志是以太网地址。
协议类型字段:表示要映射的协议地址类型。0x0800表示IP地址。
操作字段:支出四种操作类型,分别是ARP请求(1),ARP应答(2),RARP请求(3),RARP应答(4)。

注意:对于ARP请求来说,除了目的端硬件地址外的所有其他的字段都有填充值。当系统收到一份目的端为本机的ARP请求报文后,它就把硬件地址填进去,然后用两个目的端地址分别替换两个发送端地址,并且把操作字段置为2,发送出去。

ARP代理

如果ARP请求是从一个网络的主机发往另一个网络的主机,那么连接这两个网络的路由器就可以回答这个请求,这个过程就是ARP代理。这样可以欺骗ARP请求的发送端,使其误以为路由器就是目的主机,实际上目的主机在路由器另一边。路由器就是一个代理,把分组从其他主机转发给它。

免费的ARP

它是指主机发送ARP查找自己的IP 地址。通常发生在系统引导期间进行接口配置的时候。

  • 免费ARP的作用
    • 一个主机可以通过其来确定另一个主机是否设置了相同的IP地址。这个时候是不希望收到回答的,收到回答时候会在终端日志上产生错误消息“以太网地址:X:X:X:X发送来重复的IP地址”,这可以警告系统管理员,某个系统又不正确的配置。
    • 如果发送免费ARP的主机正好更改了硬件地址,那么这个分组就可以是其他主机告诉缓存中的旧的硬件的地址进行相应的更新。如果某个主机接收某个IP地址的ARP请求,而且已经在接受者的高速缓存之中,那么需要用ARP请求中的发送端硬件地址对告诉缓存中的相应的内容进行更新。

第五章 RARP:逆地址解析协议

概述

具有本地磁盘系统引导时,一般是从磁盘上的配置文件读取IP地址,但是无盘机,则需要其他方式获得IP地址。

RARP的分组格式与ARP分组基本一致,只是RARP的请求的操作码为3,应答的操作码4

RARP的请求以广播方式传递,但是RARP的应答却是以单播的方式传递。