3 位 址 解 析 通 訊 協 定 (ARP) ARP 基 本 觀 念 ARP 封 包 架 構 ARP 運 作 流 程 ARP 快 取 的 使 用 ARP 指 令 利 用 網 路 監 視 器 分 析 封 包 內 容 Proxy ARP
精 通 Windows Server 2003 TCP/IP 位 址 解 析 通 訊 協 定 (Address Resolution Protocol, ARP) 是 定 義 在 RFC 826 中 的 Internet 標 準, 也 是 TCP/IP 通 訊 協 定 組 件 中 的 一 部 份, 它 主 要 是 用 來 解 析 IP 位 址 或 是 主 機 名 稱 所 對 應 的 硬 體 位 址, 以 達 到 資 料 傳 遞 的 功 能 本 章 我 們 將 討 論 有 關 ARP 運 作 原 理, 以 及 如 何 使 用 在 網 路 管 理 方 面 的 部 份 3-1 ARP 基 本 觀 念 若 是 筆 者 說 : 所 有 網 路 通 訊 在 交 換 資 料 時, 唯 一 憑 藉 的 資 訊 是 主 機 的 硬 體 位 址, 可 能 大 多 數 的 讀 者 都 會 對 這 句 話 感 到 懷 疑, 因 為 通 常 我 們 都 會 使 用 IP 位 址 網 域 名 稱 或 是 主 機 名 稱 來 表 示 TCP/IP 網 路 中 的 主 機 位 置 其 實 這 些 用 來 代 表 主 機 的 位 址 或 名 稱 都 是 為 了 方 便 使 用 者 在 網 路 管 理 時 的 邏 輯 觀 念, 也 就 是 說 這 些 位 址 或 名 稱 都 可 以 依 據 管 理 上 的 需 求 而 隨 時 變 更 另 外 一 個 理 由 是 因 為 硬 體 位 址 不 便 記 憶, 所 以 使 用 硬 體 位 址 來 管 理 及 識 別 網 路 上 的 主 機 並 不 是 有 效 率 的 管 理 方 式 舉 例 來 說, 同 一 個 網 路 中 的 二 部 電 腦, 您 可 以 將 它 們 的 IP 位 址 設 為 192.168.1.1 和 192.168.1.2, 由 這 二 個 位 址 很 容 易 判 斷 出 它 們 可 能 是 位 於 同 一 個 網 路 節 區 但 是 這 二 部 電 腦 的 MAC 位 址 可 能 為 00:AA: 00: 3F: 89: 4A 和 01: 3A: EB: 24: 5C: 20, 管 理 員 實 在 很 難 由 它 們 看 出 之 間 存 在 何 種 關 係, 因 此 大 多 數 的 管 理 機 制 並 不 以 MAC 位 址 為 設 計 的 對 象 但 不 論 使 用 何 種 名 稱 來 代 表 主 機 位 置, 在 實 際 交 換 資 料 前, 都 需 轉 變 為 硬 體 位 址, 否 則 無 法 進 行 網 路 的 訊 息 傳 輸, 這 種 解 析 主 機 硬 體 位 址 的 工 作, 就 必 須 利 用 ARP 來 執 行 所 謂 的 硬 體 位 址 是 為 了 在 區 域 網 路 ( LAN) 中 使 用 而 設 計 的 編 碼, 它 必 須 包 含 由 製 造 商 編 碼 在 內 的 唯 一 位 址, 在 Ethernet 和 Token 3-2
位 址 解 析 通 訊 協 定 (ARP) 3 Ring 的 網 路 環 境 中 稱 此 位 址 為 媒 體 存 取 控 制 位 址 ( Media Access Control Address, MAC Address) 而 這 個 位 址 儲 存 在 每 個 實 體 硬 體 裝 置 中 的 ROM 每 個 硬 體 位 址 都 使 用 48 Bits( 6 Bytes) 來 編 碼, 一 般 而 言,MAC 位 址 都 是 使 用 16 進 位 的 格 式 來 表 示, 例 如 00:AA: 00: 3F: 89: 4A 目 前 MAC 位 址 的 授 權 及 登 錄 是 由 電 氣 及 電 子 工 程 師 協 會 ( IEEE) 負 責,IEEE 將 MAC 位 址 的 前 3 個 Bytes 登 錄 並 指 派 給 個 別 的 製 造 商, 而 每 個 製 造 商 可 以 將 MAC 位 址 的 最 後 3 個 Bytes 指 派 給 獨 立 網 路 介 面 卡 使 用 因 為 MAC 位 址 是 一 切 網 路 活 動 的 根 本, 所 以 MAC 位 址 的 解 析 工 作 在 網 路 管 理 上 相 當 重 要, 而 位 址 解 析 通 訊 協 定 正 可 提 供 此 項 服 務 ARP 是 定 義 在 RFC 826 中 的 Internet 標 準, 它 也 是 TCP/IP 通 訊 協 定 組 件 中 的 一 部 份, 主 要 是 用 來 解 析 IP 位 址 或 是 主 機 名 稱 所 對 應 的 硬 體 位 址, 以 達 到 資 料 傳 遞 的 功 能 透 過 ARP 的 運 作, 可 以 找 出 本 地 網 路 中 特 定 主 機 或 裝 置 IP 位 址 所 對 應 的 MAC 位 址 ARP 主 要 的 訊 息 有 二 種 : ARP 要 求 (ARP Request): 藉 由 網 路 廣 播 的 要 求, 以 取 得 某 個 IP 位 址 對 應 的 MAC 位 址 由 於 這 是 一 個 廣 播 訊 息, 所 以 本 地 網 路 中 的 所 有 主 機 都 會 得 到 此 要 求 的 內 容, 而 傳 送 此 類 訊 息 主 機 就 稱 為 ARP 要 求 者 ( ARP Requester) ARP 回 應 (ARP Reply): 此 訊 息 主 要 是 用 來 回 應 ARP 要 求 者 的 要 求, 當 獲 得 回 應 時,ARP 會 將 此 傳 送 端 和 接 收 端 的 記 錄 儲 存 在 稱 為 ARP 快 取 的 本 機 表 格 中, 以 作 為 將 來 回 應 要 求 時 的 參 照, 傳 送 此 類 訊 息 主 機 就 稱 為 ARP 回 應 者 ( ARP Responder) 3-3
精 通 Windows Server 2003 TCP/IP 3-2 ARP 封 包 架 構 和 大 多 數 通 訊 協 定 不 同 的 是,ARP 封 包 並 沒 有 一 個 固 定 型 態 的 架 構, 這 是 為 了 使 ARP 能 在 不 同 網 路 中 發 揮 更 大 的 效 率, 因 此 在 封 包 中 的 每 個 欄 位 長 度 都 會 依 網 路 類 型 的 不 同 而 有 所 不 同, 但 是 每 種 網 路 類 型 的 ARP 封 包 都 很 相 似 下 圖 是 在 Ethernet 中 利 用 ARP 解 析 硬 體 位 址 的 封 包 格 式, 其 中 包 含 許 多 的 欄 位, 而 每 個 欄 位 所 代 表 的 意 義 都 不 同, 它 的 總 長 度 為 224 Bits( 28 Bytes) 圖 3-1 Ethernet 中 利 用 ARP 解 析 硬 體 位 址 的 封 包 格 式 由 上 圖 我 們 可 以 知 道 ARP 封 包 含 有 9 個 不 同 的 欄 位, 而 所 有 的 欄 位 長 度 都 會 因 硬 體 類 型 欄 位 值 的 不 同 而 有 所 差 異, 以 下 是 這 些 欄 位 的 說 明 : 硬 體 類 型 此 欄 位 的 大 小 為 16 bits, 它 表 示 本 地 網 路 的 硬 體 類 型, 例 如 10 Mb 的 Ethernet 是 以 16 進 位 的 0001 為 代 碼 傳 送 端 的 IP Datagram 必 須 完 全 符 合 這 種 硬 體 類 型, 如 果 不 符 合, 這 個 封 包 就 會 被 丟 棄, 而 且 不 會 回 應 任 何 類 型 的 ACK 3-4
位 址 解 析 通 訊 協 定 (ARP) 3 通 訊 協 定 類 型 此 欄 位 的 大 小 為 16 bits, 它 表 示 ARP 可 以 提 供 解 析 的 通 訊 協 定 類 型, 通 常 為 IP 通 訊 協 定,IP 是 以 16 進 位 的 0080 為 代 碼 硬 體 位 址 長 度 此 欄 位 的 大 小 為 8 bits, 它 表 示 該 類 型 的 硬 體 位 址 長 度, 它 是 以 16 進 位 值 來 表 示, 例 如 Ethernet 和 Token Ring 為 04, 而 Frame Relay 為 02 通 訊 協 定 位 址 長 度 此 欄 位 的 大 小 為 8 bits, 它 通 常 表 示 IP 位 址 的 長 度, 它 是 以 16 進 位 值 來 表 示,IPv4 為 06 而 IPv6 為 10 操 作 碼 此 欄 位 的 大 小 為 16 bits, 它 表 示 ARP 封 包 使 用 的 型 態, 它 是 以 16 進 位 值 來 表 示,ARP 要 求 是 0001 而 ARP 回 應 為 0002 傳 送 端 硬 體 位 址 (Sender Hardware Address, SHA) 此 欄 位 的 大 小 為 48 bits, 在 ARP 要 求 時, 這 是 指 廣 播 此 要 求 的 主 機 MAC 位 址, 但 是 在 ARP 回 應 時, 則 表 示 回 應 的 主 機 MAC 位 址 在 本 地 IP 位 址 解 析 時, 這 是 指 回 應 此 要 求 的 主 機 MAC 位 址 而 在 遠 端 IP 位 址 解 析 時, 則 表 示 回 應 此 要 求 的 主 機 閘 道 器 MAC 位 址 傳 送 端 通 訊 協 定 位 址 (Sender Protocol Address, SPA) 此 欄 位 的 大 小 為 32 bits, 在 ARP 要 求 時, 這 是 指 廣 播 此 要 求 的 主 機 IP 位 址, 而 在 ARP 回 應 時, 則 表 示 回 應 的 主 機 IP 位 址 在 本 地 IP 位 址 解 析 時, 這 是 指 回 應 此 要 求 的 主 機 IP 位 址, 但 是 在 遠 端 IP 位 址 解 析 時, 則 表 示 回 應 此 要 求 的 閘 道 器 IP 位 址 3-5
精 通 Windows Server 2003 TCP/IP 接 收 端 硬 體 位 址 (Target Hardware Address, THA) 此 欄 位 的 大 小 為 48 bits, 在 ARP 要 求 時, 此 值 是 000000000000, 因 為 此 時 目 的 地 主 機 的 MAC 位 址 尚 未 成 功 解 析 出 來 而 在 ARP 回 應 時, 則 表 示 廣 播 ARP 要 求 的 主 機 MAC 位 址 接 收 端 通 訊 協 定 位 址 (Target Protocol Address, TPA) 此 欄 位 的 大 小 為 32 bits, 在 ARP 要 求 時, 此 值 是 要 求 解 析 的 IP 位 址, 而 在 ARP 回 應 時, 這 是 廣 播 ARP 要 求 的 主 機 IP 位 址 如 前 所 示, 所 有 欄 位 的 長 度 都 會 因 為 硬 體 類 型 欄 位 中 指 定 的 值 不 同 而 有 所 差 異, 所 以 這 個 欄 位 可 說 是 整 個 ARP 封 包 中 最 重 要 的 資 訊, 下 表 就 是 所 有 可 供 使 用 的 硬 體 類 型 代 碼 說 明 : 代 碼 硬 體 類 型 1( 0x00-01) Ethernet( 10 Mb) 2( 0x00-02) 實 驗 用 Ethernet( 3 Mb) 3( 0x00-03) Amateur Radio AX.25 4( 0x00-04) Proteon ProNET Token Ring 5( 0x00-05) Chaos 6( 0x00-06) IEEE 802 Networks 7( 0x00-07) ARCNET 8( 0x00-08) Hyperchannel 9( 0x00-09) Lanstar 10( 0x00-0A) Autonet Short Address 11( 0x00-0B) LocalTalk 12( 0x00-0C) LocalTalk( IBM PCNet 或 SYTEK LocalNET) 13( 0x00-0D) Ultra Link 14( 0x00-0E) SMDS 3-6
位 址 解 析 通 訊 協 定 (ARP) 3 代 碼 硬 體 類 型 15( 0x00-0F) Frame Relay 16( 0x00-10) Asynchronous Transmission Mode( ATM) 17( 0x00-11) HDLC 18( 0x00-12) Fiber Channel 19( 0x00-13) Asynchronous Transmission Mode( ATM) 20( 0x00-14) Serial Line 21( 0x00-15) Asynchronous Transmission Mode( ATM) 22( 0x00-16) MIL-STD-188-220 23( 0x00-17) Metricom 24( 0x00-18) IEEE 1394.1995 25( 0x00-19) MAPOS 26( 0x00-1A) Twinaxial 27( 0x00-1B) EUI-64 28( 0x00-1C) HIPARP 29( 0x00-1D) IP 和 ARP over ISO 7816-3 下 表 是 可 能 的 操 作 碼 值, 它 可 用 來 表 示 不 同 類 型 的 ARP 封 包 : 操 作 碼 1 REQUEST 2 REPLY 3 Request Reverse 4 Reply Reverse 5 DRARP-Request 6 DRARP-Reply 7 DRARP-Error 8 InARP-Request 9 InARP-Reply 10 ARP-NAK 操 作 碼 說 明 3-7
精 通 Windows Server 2003 TCP/IP 操 作 碼 操 作 碼 說 明 11 MARS-Request 12 MARS-Multi 13 MARS-MServ 14 MARS-Join 15 MARS-Leave 16 MARS-NAK 17 MARS-Unserv 18 MARS-SJoin 19 ARS-SLeave 20 MARS-Grouplist-Request 21 MARS-Grouplist-Reply 22 MARS-Redirect-Map 23 MAPOS-UNARP ARP 封 裝 當 ARP 訊 息 在 網 路 上 傳 送 時, 必 須 將 它 加 入 網 路 框 架 ( Frame) 中 的 Data 部 份, 這 個 動 作 就 稱 為 ARP 封 裝 ( ARP Encapsulation) 圖 3-2 ARP 封 裝 若 要 表 示 框 架 中 包 含 ARP 訊 息, 則 傳 送 端 必 須 在 框 架 表 頭 中 的 類 型 欄 位 部 份, 指 定 某 一 特 定 值, 然 後 再 將 ARP 訊 息 加 入 框 架 中 的 Data 3-8
位 址 解 析 通 訊 協 定 (ARP) 3 部 份 當 這 個 框 架 到 達 目 的 地 電 腦 後, 讀 取 此 框 架 的 網 路 軟 體 就 可 利 用 表 頭 中 的 框 架 類 型, 來 判 斷 出 此 框 架 的 內 容, 但 是 在 大 多 數 的 情 形 下, 所 有 包 含 ARP 訊 息 的 框 架 都 會 使 用 固 定 的 類 型 數 值 3-3 ARP 運 作 流 程 在 本 節 中 我 們 要 探 討 有 關 ARP 實 際 運 作 的 流 程, 依 據 解 析 的 對 象 不 同,ARP 的 運 作 方 式 共 分 為 二 類 : 本 地 網 路 主 機 MAC 位 址 解 析 遠 端 網 路 主 機 MAC 位 址 解 析 以 下 說 明 我 們 將 假 定 主 機 A 正 以 PING 指 令 來 查 詢 主 機 B 的 IP 位 址, 在 輸 入 PING 指 令 後,ICMP 會 要 求 ARP 執 行 主 機 B 的 MAC 位 址 解 析, 以 下 是 詳 細 的 步 驟 說 明 : 本 地 網 路 主 機 MAC 位 址 解 析 - 主 機 A 與 主 機 B 位 於 同 一 區 域 網 路 1 ARP 首 先 檢 查 主 機 A 中 的 快 取, 如 果 可 以 發 現 主 機 B 對 應 的 MAC 位 址, 則 ARP 的 解 析 工 作 即 完 成 2 如 果 在 主 機 A 的 快 取 中 未 發 現 對 應 的 主 機 B MAC 位 址,ARP 即 向 區 域 網 路 上 的 所 有 主 機 廣 播 ARP 要 求 封 包 在 此 封 包 中 包 含 了 來 源 主 機 A 的 MAC 與 IP 位 址 以 及 詢 問 指 定 IP 位 址 對 應 的 MAC 位 址 要 求 因 為 這 是 一 個 廣 播 的 封 包, 所 以 區 域 網 路 上 的 每 部 主 機 都 會 接 收 到 此 ARP 要 求, 然 後 每 部 主 機 會 檢 查 本 身 的 IP 位 址 是 否 符 合 此 要 求 的 內 容 如 果 主 機 並 沒 有 找 到 符 合 的 項 目, 它 會 拒 絕 這 個 ARP 要 求 3-9
精 通 Windows Server 2003 TCP/IP 3 而 符 合 此 要 求 的 主 機 B 會 將 來 源 主 機 A 的 MAC 及 IP 位 址 新 增 到 本 機 的 ARP 快 取 中 4 主 機 B 直 接 將 ARP 回 應 訊 息 傳 送 回 主 機 A, 此 訊 息 中 包 含 主 機 B 的 硬 體 位 址 5 當 主 機 A 收 到 來 自 主 機 B 的 ARP 回 應 訊 息 後, 主 機 A 會 先 將 主 機 B 的 MAC 及 IP 位 址 對 應 新 增 到 本 機 的 ARP 快 取 中, 之 後 主 機 A 即 可 將 此 ICMP 封 包 ( 或 IP 封 包 ) 傳 送 到 主 機 B 圖 3-3 本 地 網 路 主 機 MAC 位 址 解 析 流 程 遠 端 網 路 主 機 MAC 位 址 解 析 - 主 機 A 與 主 機 B 位 於 不 同 區 域 網 路 1 ARP 首 先 檢 查 主 機 A 中 的 快 取, 如 果 可 以 發 現 主 機 B 對 應 的 MAC 位 址, 則 ARP 的 解 析 工 作 即 完 成 2 如 果 在 主 機 A 的 快 取 中 未 發 現 對 應 的 主 機 B MAC 位 址,ARP 即 向 區 域 網 路 上 的 所 有 主 機 廣 播 ARP 要 求 封 包 在 此 封 包 中 包 含 了 來 源 3-10
位 址 解 析 通 訊 協 定 (ARP) 3 主 機 A 的 MAC 及 IP 位 址 以 及 詢 問 指 定 IP 位 址 對 應 的 MAC 位 址 之 要 求 因 為 這 是 一 個 廣 播 的 封 包, 所 以 區 域 網 路 上 的 每 部 主 機 都 會 接 收 到 此 ARP 要 求, 然 後 每 部 主 機 會 檢 查 本 身 的 IP 位 址 是 否 符 合 此 要 求 的 內 容 但 是 本 地 網 路 中 的 所 有 主 機 都 會 拒 絕 這 個 ARP 要 求, 因 為 所 有 的 主 機 都 無 法 符 合 此 要 求 的 內 容 3 路 由 器 在 接 收 到 此 ARP 廣 播 封 包 後, 它 會 檢 查 本 身 的 路 由 表 以 決 定 它 是 否 可 以 存 取 這 個 遠 端 的 子 網 路, 如 果 可 以 存 取 這 個 遠 端 網 路, 它 會 將 來 源 主 機 A 的 MAC 及 IP 位 址 新 增 到 本 機 的 ARP 快 取 中 4 路 由 器 直 接 將 ARP 回 應 訊 息 傳 送 回 主 機 A, 此 訊 息 包 含 路 由 器 的 MAC 位 址 5 當 主 機 A 收 到 來 自 路 由 器 的 ARP 回 應 訊 息 時, 主 機 A 會 先 將 路 由 器 的 MAC 及 IP 位 址 對 應 新 增 到 本 機 的 ARP 快 取 中 在 成 功 解 析 出 路 由 器 的 MAC 位 址 後, 主 機 A 即 可 將 此 ICMP 封 包 ( 或 IP 封 包 ) 傳 送 到 路 由 器, 然 後 路 由 器 會 利 用 與 本 地 網 路 主 機 MAC 位 址 解 析 相 同 的 ARP 處 理 程 序, 來 將 訊 息 轉 送 到 主 機 B 圖 3-4 遠 端 網 路 主 機 MAC 位 址 解 析 流 程 3-11