美文网首页
TCP/IP详解—— ARP:地址解析协议

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

作者: helinyu | 来源:发表于2021-04-25 15:58 被阅读0次

数 据 链 路 如 以 太 网 或 令 牌 环网都有自己的寻址机制(常常为 48 bit地址),这是使用数据链路的任何网络层都必须遵从 的。一个网络如以太网可以同时被不同的网络层使用。例如,一组使用 T C P / I P 协 议 的 主 机 和 另一组使用某种 P C网络软件的主机可以共享相同的电缆。


1)A R P 为I P 地 址 到 对 应 的 硬 件 地 址 之 间 提 供 动 态 映 射 。 我 们 之所以用动态这个词是因为这个过程是自动完成的,一般应用 程序用户或系统管理员不必关心。
2)R A R P 是 被 那 些 没 有 磁 盘 驱 动 器 的 系 统 使 用 ( 一 般 是 无 盘 工 作 站 或 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)【这里有个疑问,ARP的过程和IP发送数据报的过程有什么区别?】假定是个以太网,发送端主机必须将32bit的IP地址转换为48bit的以太网地址。从逻辑IP地址到对应物理地址需要进行翻译(ARP功能),ARP本来是用于广播网络的,有许多主机或路由器连在同一网络上。
  1. A R P 发送一份称作 A R P 请 求 的 以 太 网 数 据 帧 给 以 太 网 上 的 每 个 主 机 。 这 个 过 程 称 作 广
    播;(A R P 请求数据帧中包含目的主机的 I P 地址(主机名为 b s d i ), 其 意 思 是 “ 如 果 你 是 这 个 I P 地 址 的 拥 有 者 , 请 回 答 你 的 硬 件 地 址 。”??? 感觉这个有点怪异)
  2. 目的主机的 A R P 层收到这份广播报文后,识别出这是发送端在寻问它的 I P 地 址 , 于 是 发送一个 A R P 应答。这个 A R P 应答包含 I P 地址及对应的硬件地址。
  3. 收到 A R P 应答后,使 A R P 进 行 请 求 — 应 答 交 换 的 I P 数 据 报 现 在 就 可 以 传 送 了 。
  4. 发送 I P 数 据 报 到 目 的 主 机 。
    —— 这个ARP广播翻译的过程,应该就是使用了网络层的路由选择等算法操作;

FTP里面是否是基于TCP这个协议来处理的? (这里还是不太清晰)
在 A R P 背后有一个基本概念,那就是网络接口有一个硬件地址(一个 4 8 b i t 的 值 , 标 识 不
同的以太网或令牌环网络接口)。在硬件层次上进行的数据帧交换必须有正确的接口地址。但 是, T C P / I P 有自己的地址: 3 2 b i t 的 I P 地址。知道主机的 I P 地 址 并 不 能 让 内 核 发 送 一 帧 数 据 给 主机。内核(如以太网驱动程序)必须知道目的端的硬件地址才能发送数据。 A R P 的功能是 在 32 bit 的 I P 地 址 和 采 用 不 同 网 络 技 术 的 硬 件 地 址 之 间 提 供 动 态 映 射 。 ——寻址、TCP/UDP IP DNS 这个过程要清楚

点 对 点 链 路 不 使 用 A R P 。 当 设 置 这 些 链 路 时 ( 一 般 在 引 导 过 程 进 行 ), 必 须 告 知 内 核 链 路每一端的 I P 地址。像以太网地址这样的硬件地址并不涉及。 (???? 不太理解)

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 请求, 一般发生在引导过程中)。

相关文章

  • Python网络编程1--实现ARP欺骗

    一、ARP报文结构    ARP(地址解析协议)是根据IP地址获取物理地址的一个TCP/IP协议。报文结构 字段解...

  • 4.ARP_RIP_OSPF_BGP

    一、ARP(地址解析协议) 1.ARP (1)简介 是根据IP地址获取物理地址的一个TCP/IP协议。那个口也不绑...

  • ARP,局域网运维必需理解的知识

    ARP(Address Resolution Protocol),地址解析协议,TCP/IP协议族中的一员。我们知...

  • iOS网络编程

    问题 DNS域名解析协议IP地址和MAC地址ARP地址解析协议工作原理TCP和UDP区别?TCP三次握手和四次挥手...

  • ARP/RARP

    ARP (address resolution protocol,地址解析协议)是一个位于TCP/IP 协议栈中的...

  • TCP/IP详解—— ARP:地址解析协议

    数 据 链 路 如 以 太 网 或 令 牌 环网都有自己的寻址机制(常常为 48 bit地址),这是使用数据链路的...

  • 网络基础

    1.OSI,TCP/IP,五层协议的体系结构,以及各层协议 2.IP地址的分类 3.ARP是地址解析协议,简单语言...

  • 计算机网络几种协议

    一、ARP协议 地址解析协议,即ARP(Address Resolution Protocol),是根据IP地址获...

  • ARP 与 RARP 协议

    ARP协议 地址解析协议,即ARP(Address Resolution Protocol),是根据IP地址获取物...

  • 中间人攻击arp欺骗攻击

    什么是ARP协议 ARP(Address Resolution Protocol)地址解析协议,目的是实现IP地址...

网友评论

      本文标题:TCP/IP详解—— ARP:地址解析协议

      本文链接:https://www.haomeiwen.com/subject/dsocrltx.html