TCP/IP详解—— ARP:地址解析协议(4)

数据链路【如:以太网或令牌环网都有自己的寻址机制】,这是使用数据链路的任何网络层都必须遵从的。一个网络【如:以太网】可以同时被不同的网络使用。

例如:一组使用TCP/IP协议的主机和另一组使用某种PC网络软件的主机可以共享相同的电缆。

  1. ARP 为IP地址到对应的硬件地址之间提供动态映射。【之所以用动态,因为这个过程是自动完成的,一般应用程序用户或系统管理员不必关心】
  2. RARP 是被那些没有磁盘驱动器的系统使用【一般是误判工作站或X终端】,它需要系统管理员进行手工设置。
> ftp bsdi 过程
  1. ftp 调用函数gethostbyname 把主机名转换成32bit的IP地址。【 DNS中的解析器;这个转换过程中或者使用DNS或者在较小网络中使用一个静态的主机文件(/etc/hosts)】
  2. FTP 客户端请求TCP用得到的IP地址建立连接 (这个只是对下面步骤的概述)
  3. TCP发送一个链接请求分段到远端的主机(即 用上述的IP地址发送一份IP数据包)
  4. 《1》如果目的主机在本地网络上(eg:以太网、令牌环网、点对点链路的另一端),那么IP数据包可以直接发送到目的主机上。
    《2》如果目的主机在一个远程网络上,那么就通过IP选路函数来确定位于本地网络上的下一站路由器地址,并让它转发IP数据报。
    ——> I P 数据报都是被送到位于本地网络上的一台主机或路由器。
  5. 假定是个以太网,发送端主机必须将32bit的IP地址转换为48bit的以太网地址。从逻辑IP地址到对应物理地址需要进行翻译(ARP功能),ARP本来是用于广播网络的,有许多主机或路由器连在同一网络上。
  6. ARP发送一份称作ARP请求的以太网数据帧给以太网上的每个主机—— 这个过程称作广播;【ARP请求数据帧中包含盲目地主机的IP地址(主机名为bsdi)】,意思是: 如果你是这个IP地址的拥有者,请回答你的硬件地址。
  7. 目的主机的 A R P 层收到这份广播报文后,识别出这是发送端在寻问它的 I P 地 址 , 于 是 发送一个 A R P 应答。这个 A R P 应答包含 I P 地址及对应的硬件地址。
  8. 收到 A R P 应答后,使 A R P 进 行 请 求 — 应 答 交 换 的 I P 数 据 报 现 在 就 可 以 传 送 了 。
  9. 发送 I P 数 据 报 到 目 的 主 机 。
    —— 这个ARP广播翻译的过程,应该就是使用了网络层的路由选择等算法操作;

FTP里面是否是基于TCP这个协议来处理的?
在ARP背后有一个基本概念,那就是网络接口有一个硬件地址(一个 4 8 b i t 的 值 ,标识不同的以太网或令牌环网络接口)。在硬件层次上进行的数据帧交换必须有正确的接口地址。但是,TCP/IP有自己的地址: 32bit的IP地址。直到主机的IP地址并不能让内核发送一帧数据给主机。 内核(eg:以太网驱动程序)必须知道目的端的硬件地址才能发送数据。 ARP的功能是在32bbit的IP地址和采用不同挽留过技术的硬件地址之间提供动映射。 点对点链路不使用呢ARP。 当设置这些链路时(一般在引导过程进行),必须告知内核链路每一端的IP地址。像以太网地址这样的硬件地址并不涉及。

4.3 ARP高速缓存
A R P 高效运行的关键是由于每个主机上都有一个 A R P 高 速 缓 存 。 这 个 高 速 缓 存 存 放 了 最 近 I n t e r n e t 地 址 到 硬 件 地 址 之 间 的 映 射 记 录 。 高 速 缓 存 中 每 一 项 的 生 存 时 间 一 般 为 2 0 分钟,起 始时间从被创建时开始算起。

高 速 缓 存 存 放 了 最 近 I n t e r n e t 地 址 到 硬 件 地 址 之 间 的 映 射 记 录???为什么这样说? 不应该是靠近我们发送数据的IP主机么?

arp -a 查看高速缓存

4.4 ARP的分组格式


1)ARP 可以解析IP地址以及其他地址。
2)经跟着帧类型字段的钱四个字段指定了最后四个字段的类型和长度。

*)以太网的原地址和目的地址,目的地址全为1的特殊地址是广播地址,电缆上的所有设备都接收广播数据帧
*)帧类型(2byte)表示后面数据的类型,对于ARP来说,改字段值是0x0806
*)hardware硬件类型和protocol(协议类型)用来描述ARP分组中的各个字段。 eg: 一个ARP请求分组询问协议地址(IP地址)对应的硬件地址(以太网地址)
*)硬件类型字段:表示硬件地址的类型,它的值为1即表示以太网地址。
*)协议累心字段表示要映射的协议地址类型。它的值为0x0800即表示IP地址它的值与包含IP数据报的以太网数据帧中的类型字段的值相同,这个是有意设计的???为什么?统一、好记?
*)硬件地址长度: 硬件地址的长度 (byte为单位),以太网地址是6byte
*)协议地址长度:协议地址的长度 (byte为单位) ip地址长度是4byte
*)操作字段 1 :ARP请求 2)arp应答 3)RARP请求 4)RARP应答的帧类型字段值是相同的
*) 接下来的四个字段是发送端的硬件地址、发送端的协议地址(IP地址)、目的端的硬件地址、目的端的协议地址

!有一些重复信息:在以太网的数据帧报头中和 A R P 请 求 数 据 帧 中 都 有 发 送 端 的 硬 件 地 址

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


4.5 ARP举例

tcpdump 命令 -e ,会显示硬件地址(eg:48bit的以太网地址)

第0行:源端主机硬件地址: 0 : 0 : c 0 : 6 f : 2 d : 4 0,目的端主机:f f : ff : ff : ff : ff : f f , —— 这是一个以太网广播地址;电缆上的每个以太网接口都要接受这个数据帧并对它精心处理。

第1行:紧接着的一个输出字段是 a r p ,表明帧类型字段的值是 0 x 0 8 0 6 , 说 明 此 数 据 帧 是 一个 A R P 请 求 或 回 答 。
单词ARP或IP后面的值60指的是以太网数据帧的长度。 由于ARP请求或应答的数据帧长度都是42字节(28字节的ARP数据,14字节的以太网帧头),因此,每帧都需要加入填充字符以达到以太网的最小长度要求:60byte

第2行: ARP瘾大的目的地址是0 : 0 : c 0 : 6 f : 2 d : 4 0,ARP应答是直接发送到请求端主机的,而不是广播;
第3行:第1个请求建立连接的TCP段。 它的目的硬件地址是目的主机(svr4).

每 一 行 中 , 行 号 后 面 的 数 字 表 示 t c p d u m p 收 到 分 组 的 时 间 ( 以 秒 为 单 位 )

4.5.2 对不存在主机的ARP请求


可以看到ARP经过不同的时间段进行了ARP的多次请求, 请求到75S之后才放弃,一般TCP链接请求是75秒。

4.5.3 ARP高速缓存超时设置
在ARP告诉缓存中的表现一般 都要设置超时值。
从 伯 克 利 系 统 演 变 而 来 的 系 统 一 般 对 完 整 的表项设置超时值为 2 0 分钟,而对不完整的表项设置超时值为 3 分 钟 。

4.6 ARP代理

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

这个过程有点没时间看清楚, 需要慢慢消化一下


4.7 免费ARP( g r a t u i t o u s A R P )

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

4.8 arp命令

-a 显示高速缓存中的所有内容

-d 删除ARP高速缓存中的某一项内容

-s 增加告诉缓存中的内容; 这个参数需要主机名和以太网地址:对应与主机名的IP地址和以太网地址被增加到告诉缓存中。
新增加的内容是永久性的,除非在命令行的末尾附上关键字temp;
位于命令行末尾的关键字 p u b 和- s选项一起,可以使系统起着主机 A R P 代理的作用。

PS: 小结
A R P 是 一 个 基 础 协 议 , 但 是 它 的 运 行 对 于 应 用 程 序 或 系 统 管 理 员 来 说 一 般 是 透 明 的 。
A R P 高 速 缓 存 在 它 的 运 行 过 程 中 非 常 关 键 , 我 们 可 以 用 a r p 命令对高 速缓存进行检查和操作。
高速缓存中的每一项内容都有一个定时器,根据它来删除不完整和 完整的表项。
a r p 命令可以显示和修改 A R P 高 速 缓 存 中 的 内 容 。
委托 A R P ( 当 路 由 器 对 来 自于另一个路由器接口的 A R P 请求进行应答时)和免费 A R P (发送自己 I P 地址的 A R P 请求, 一般发生在引导过程中)。

你可能感兴趣的:(TCP/IP详解—— ARP:地址解析协议(4))