緯育 2026-0314.2
出自頂極製作所
PING
本次課程以 Ping 與 ICMP 進行網路診斷為主軸,結合 Wireshark 實作從 frame、Ethernet、IPv4 到 ICMP 與 data 的逐層解析,並延伸觀察 ARP 在區域網路中的角色與觸發時機。內容涵蓋封包生成與回覆流程、回應時間(ms)與 TTL 的意義與推論、Ethernet Frame、IP Header、ICMP Header 的欄位細節與作用、不同作業系統(Windows、macOS、Linux)在 Ping 指令與行為上的差異、Wireshark 的介面與分析功能(時間戳、介面識別、顏色規則、標記/忽略、Bytes/ASCII 顯示、Time Shift),以及使用 ARP 查表與清表、Windows 防火牆設定以啟用 ICMPv4 回覆的實務流程。
課程安排完整練習:查詢 Gateway、設定指令、啟動 Wireshark 擷取、執行 Ping(示例四次往返共八個封包)、停止並分析,並在 LAN 情境中以清除 ARP 快取後的 Ping 驗證兩則 ARP(廣播與回覆)的預期行為,確保學員將實務診斷與協定層細節連結。
Ping 與 ICMP 的基礎概念與用途
- Ping 作為基本診斷工具
- 使用 ICMP Echo Request(Type=8)與 Echo Reply(Type=0)進行「我問你、你回我」的互動模型。
- 典型診斷目標:自身 IP、Gateway、他人/服務主機。不同目標代表不同層面的檢查(本機堆疊、到閘道連通性、端到端可達性)。
- ICMP 類型與回應
- Type/Code 可辨識回覆與錯誤;TTL 歸零時路由器可能回傳 ICMP Destination Unreachable 等訊息。
- 回應時間與 TTL 的意義
- ms 延遲由作業系統記錄(非封包欄位)。TTL 每經過一個路由器扣 1,至 0 丟棄;可用回覆 TTL 推論跳數、作業系統預設 TTL與拓樸鄰近性。
- 以延遲與 TTL 共同推論壅塞、線路/路由問題。
- 作業系統差異
- Windows 的 Ping 參數以「/?」查詢,常見 -t、-a;預設執行固定次數。macOS/Linux 預設持續執行,需 Ctrl+C 停止。不同系統的 ICMP Data 內容可能不同(如 Windows 常見「ABCDEFG」)。
Wireshark 基本視圖、顏色規則與協定堆疊
- 詳細視圖與 Bytes 對應:點選 ICMP、IP、Ethernet、frame 層可在右側 Hex/Bytes 對應框選各層範圍,協助核對欄位與長度(如 Total Length)。
- frame 層欄位與時間顯示:Interface ID、Encapsulation Type、Arrival Time/UTC/Epoch、捕獲序號與大小;可使用 Time Shift 調整顯示位移(一般分析少用)。
- 封包標記與忽略:Marked/Ignored 便於聚焦分析。
- Coloring Rules:預設顏色代表社群慣用語義(如 TCP RST、ICMP 等),建議不修改;可在 View > Coloring Rules 檢視與新增自訂規則。
- 協定堆疊:Ethernet > IP > ICMP > Data;ASCII 顯示更清楚呈現載荷。
乙太網路(Ethernet)Frame 結構與 MAC 辨識
- Ethernet II(DIX 2.0):preamble、SFD、目的/來源 MAC(6 bytes)、Type(0x0800 表 IPv4)、FCS。IEEE 802.3 將 Type 改為 Length,實務多採 Ethernet II。
- Wireshark 可顯示 MAC 前 3 碼(OUI)對應廠商,以快速辨識設備類型。
IPv4 Header 詳解與驗證
- Version=4;IHL 常見 20 bytes(無 Options)。
- DS(DiffServ)多由中間設備設定,端主機通常為 0。
- Total Length:包含 Header 與 Data;可於 Bytes 視圖核對實際長度(示例 60 bytes)。
- Identification:封包生成順序遞增;分片時所有分片共享相同 Identification。
- Flags/Fragment Offset:指示分片狀態與位移。
- TTL:每過路由器扣 1;回覆封包若 TTL 未扣減(例如 255),可推論對端在同一子網/鄰近位置。
- Protocol:ICMP=1。
- Header Checksum:可在偏好設定逐協定啟用驗證;過度啟用可能影響效能。
ICMP Header 與 Data 內容
- Type/Code:Echo Request=8/0,Echo Reply=0。
- Checksum、Identifier、Sequence Number:用於配對 request/reply 與統計次序。
- Data:各平台填入內容可能不同;多數設備會原樣回覆請求的 data。可據 ASCII 顯示比對確認往返關聯與設備處理策略。
ARP 在區域網路中的角色與觸發
- 位址與網段判定:主機以自身子網遮罩計算並比較目標是否同網段。
- 同網段:需取得目標 MAC;未知時發送 ARP Request(EtherType=0x0806,Operation=1),收到 ARP Reply(Operation=2)後以該 MAC 封裝傳送。
- 不同網段:封包送至 Gateway;可能詢問/使用 Gateway 的 MAC。
- ARP 欄位:Hardware Type(Ethernet)、Protocol Type(IPv4)、HLEN=6、PLEN=4、Sender/Target 硬體/協定位址、Operation。
- 觸發條件:同網段且未知對方 MAC;若 ARP 快取已存在則不再發送。
Windows 實務操作:ARP/ICMP與防火牆
- ARP 快取:arp -a 檢視;以系統管理員執行 arp -d * 清空以強制觀察 ARP。
- Ping 與擷取預期:清表後 Ping 預期看到兩則 ARP(廣播與回覆);即便 Windows 某些版本不回覆 ICMP Echo,ARP 互動仍可見。
- 防火牆策略(被 Ping 端):首選啟用 ICMPv4 入站規則(進階防火牆 → 入站規則 → 允許 ICMPv4 Echo),不建議全面關閉防火牆;測試後恢復原設定。
- 介面與組態:私人/公用網路為不同組態檔;版本差異可能影響導覽位置。
封包流程、數量預期與多介面捕獲
- 封包往返:本機發送 Echo Request,對端回 Echo Reply;本機計算往返延遲(例 3–4 ms)。
- 封包數量預期:執行 4 次 Ping,理論擷取到 8 個封包(4 出、4 回);若少於預期需調查遺失或過濾原因。
- 多介面捕獲:在 Capture 設定按住 Ctrl 可同時選取多張網卡,觀察 Interface ID 與來源差異;無法在擷取頁面直接加選。
- 過濾與視野管理:Display Filter 精準篩選,必要時以 Ignored 暫時隱藏不相干封包。
實務診斷與應對
- 外包/客服常以簡單 Ping 判定並更換設備;若能提供更深入路由證據,較可能獲得專業處理。
- 建立心中預期與實測比對:觀察 ms、TTL、封包數量與內容,推論壅塞、速度、路由行為、封包遺失,避免被過度簡化結論誤導。
網路封包過濾技巧
- 過濾器的基本使用與常見問題
- 初學者常以 ip.addr 過濾特定 IP(如 ip.addr == 192.168.2.9)。
- 此法僅能篩選具 IP 層的封包(如 ICMP),會遺漏不含 IP 層的封包(如 ARP),因 ARP 本身沒有 IP 層結構,ip.addr 對其無效。
- ARP 專用過濾方式
- 可用 arp. 前綴的過濾器,針對發送者或目標 IP 過濾。
- 因 ARP 請求與回應中發送者/目標角色互換,需兩條規則才能完整捕捉一次 ARP 交換,再加上 ICMP 的規則,合計三條,較為繁瑣。
- 高效整合過濾策略
- 分析 ping 涉及四種封包:ARP 請求(廣播)、ARP 回應(單播)、ICMP 請求(送出)、ICMP 回應(收到)。
- 共同點:皆與本機的 MAC 位址相關。
- 精簡條件式:eth.addr == [我的MAC位址] and (arp or icmp)。
- eth.addr == [我的MAC位址] 確保來源或目的地 MAC 為本機。
- (arp or icmp) 將結果限定為 ARP 與 ICMP,排除 HTTP、DNS 等無關流量。
- 只需一條指令,即可清楚、完整捕捉 ping 相關封包。
ARP 協定運作詳解
- ARP 請求(Request)流程
- 觸發時機:主機需與同網段目標通信,僅知其 IP、未知其 MAC 時發起 ARP 請求。
- 封包結構(Ethernet 層):
- 目的位址:FF:FF:FF:FF:FF:FF(廣播),使同網段所有設備可接收。
- 來源位址:發起主機 MAC。
- 類型(Type):0x0806(ARP)。
- 封包結構(ARP 層):
- 硬體類型:Ethernet (1)。
- 協定類型:0x0800(IPv4)。
- 操作碼(Opcode):1(request)。
- 發送者 MAC/IP:發起主機的 MAC 與 IP。
- 目標 MAC 位址:未知,以 00:00:00:00:00:00 填入。
- 目標 IP 位址:欲查詢的目標 IP。
- 傳送方式:以廣播形式送至網段內所有設備。
- ARP 回應(Reply)流程
- 觸發時機:收到 ARP 請求的設備檢查目標 IP 是否為自身;匹配者才回應。
- 封包結構(Ethernet 層):
- 目的位址:原請求方 MAC(由請求封包取得)。
- 來源位址:回應主機 MAC。
- 封包結構(ARP 層):
- 操作碼(Opcode):2(reply)。
- 發送者 MAC/IP:回應主機之 MAC 與 IP。
- 目標 MAC/IP:原請求方之 MAC 與 IP。
- 傳送方式:以單播(unicast)直接送回請求方。
- ARP 完成後的影響
- 請求方收到 ARP 回應後取得目標 IP 對應之 MAC。
- 後續封包(如 ICMP ping 請求)在 Ethernet 標頭填入該 MAC,完成通信。
- 若 ARP 無回應,因未知目的 MAC,ICMP 封包無法送出。
網路問題判斷
- 不同網段的行為
- 目標位於不同網段時,主機不會對目標 IP 發起 ARP。
- 取而代之,主機將封包送往預設閘道(Gateway),故抓包中不會看到針對目標 IP 的 ARP。
- ARP 失敗的可能原因
- 若送出 ARP 請求(封包 1)而無回應(封包 2),表示目標未回應。
- 可能原因之一:發送方認為目標在同網段,但目標主機因網路設定錯誤,認定與發送方不同網段而不回應。
課後練習與課程預告
- 課後練習
- 四項練習以實際抓包驗證理論:
1. ping 同網段但「不存在」的主機 IP(例:192.168.2.x)。 2. ping 「不存在」且「不同網段」的主機 IP(例:192.168.222.222)。 3. ping 主機自己的 IP(例:192.168.2.86)。 4. ping 本機迴環位址 127.0.0.1。