Wireshark Lab: ICMP Computer Networking: A Topdown Approach, 4th edition.
Wireshark Lab: ICMP In this lab, we’ll explore several aspects of the ICMP protocol ICMP messages generating by the Ping program; ICMP messages generated by the Traceroute(tracert) program The format and contents of an ICMP message. 在整個 TCP/IP 協定家族中,對 "使用者" 來說,ICMP 恐怕是易忽略的協定了。關於前面所討論的協定,真要能發揮工作的前提條件是:"假設一切都沒問題" 。然而,在當今如此複雜的網路環境中,前述條件恐怕是沒辦法保證的:設定可能有誤、線路有可能會斷、設備可能掛點、router 可能負載太高、 .... 等等又等等的狀況,都是我們沒辦法確保的。那麼,我們必需有一套機制來偵測或通知各種各樣可能發生的狀況,這就是 ICMP 協定的目的了。
ICMP Internet Control Message Protocol 偵測遠端主機是否存在 建立及維護路由資料 重導資料傳送路徑 資料流量控制。 ICMP 的全稱是 Internet Control Message Protocol 。從技術教度來說,ICMP 就是一個 "錯誤偵測與回報機制",其目的就是讓我們能夠檢測網路的連線狀況﹐也能確保連線的準確性﹐其功能主要有﹕
ICMP封包
ICMP封包的欄位
Type & Code 定義 ICMP 封包的類型 (功能)。 ICMP 在溝通之中,主要是透過不同的類別( Type )與代碼( Code ) 讓機器來識別不同的連線狀況。常用的類別如下表所列
Code 每種類型可再根據 Code 欄位來定義各 種不同用途。 大部份 ICMP 封包類型 (Type) 只定義一 種 Code 欄位值。 Checksum(錯誤檢查碼): 長度為 2 Bytes,記錄 ICMP 封包的錯誤檢查碼。
常見的 ICMP 類型 Echo Request / Echo Reply Destination Unreachable Source Quench Redirect Time Exceeded ICMP 是個非常有用的協定﹐尤其是當我們要對網路連接狀況進行判斷的時候。下面讓我們看看常用的 ICMP 實例,以更好了解 ICMP 的功能與作用。
Echo Request / Echo Reply 1. A 主動發出回應要求封包給 B。 2. B 收到回應要求後,被動發 出回應答覆給 A。 request reply
Destination Unreachable IP 路由過程中,若出現以下問題,路由器或目的裝置 便發出此類封包通知來源端: 1. 路由器無法將 IP 封包傳送出去。 2.目的裝置無法處理收到的 IP 封包。
Source Quench 當路由器因為來往的 IP 封包太多,以致來不 及處理時,便會發出此類的 ICMP 封包給來 源端裝置。
Redirect 1. A → B 的最佳路徑是 R1 路由器。 2. 若 A 誤將封包送至 R2,則 R2 會發出 Redirect 的 ICMP 封包給 A,使其重送。
Time Exceeded 路由器收到 TTL 值為 1 的 IP 封包時,會將此 IP 封包丟棄,並送出此類 ICMP 封包給來源 裝置。 重組封包的過程中,若時間內未收到全部的 IP Fragment,目的裝置也會發出此類 的 ICMP 封包給來源裝置。
ICMP工具程式 PING TRACERT
關於 PING Figure 1 Command Prompt window after entering Ping command
相關參數 Options: -t Ping the specifed host until interrupted. -a Resolve addresses to hostnames. -n count Number of echo requests to send. -l size Send buffer size. -f Set Don‘t Fragment flag in packet. -i TTL Time To Live. Localhost(127.0.0.1)
In Wireshark
In wireshark Sender : echo-request( type 8 ) Receiver : echo-reply( type 0 )
一、Linux、Solaris....這些 Linux/Unix 的機器,它們的 TTL 值大約都在 240~254 之間 二、Windows系列的機器,它們的 TTL 值大約都在 110~128 之間。 不同作業系統對於 TOS位元所設定的 IP TTL 欄位值,都不一樣,我們可 以用它來作為作業系統的判斷。
TRACERT Option: -d Do not resolve addresses to hostnames. -h maximum Maximum number of hops to search for target. -j host-list Loose source route along host-list. -w timeout Wait timeout milliseconds for each reply.
How to traceroute What’s the “TTL”? Step1 TTL=1 Step 2 TTL=2 Step 3
TRACERT 2
following questions: 1. What is the IP address of your host? What is the IP address of the destination host? 2. Why is it that an ICMP packet does not have source and destination port numbers? 3. Examine one of the ping request packets sent by your host. What are the ICMP type and code numbers? What other fields does this ICMP packet have? How many bytes are the checksum, sequence number and identifier fields? 4. Examine the corresponding ping reply packet. What are the ICMP type and code numbers? What other fields does this ICMP packet have? How many bytes are the checksum, sequence number and identifier fields?
習題﹕ 請問為何要有 ICMP ?其功能是甚麼? 請列舉常見的 ICMP TYPE 有哪些。 請列舉 Distination Unreachable 的 ICMP CODE 有哪些。 請描述 ping 是如何運用 ICMP 機制的。 請描述 traceroute 是如何運用 ICMP 機制的。 請繪制其中一種 ICMP 的封包結構。 請說明 ICMP 與 IP 的關係。