720 likes | 1.02k Vues
第八章 ARP 與 ICMP. 網路層中除了 IP 協定,常見的 TCP/IP 協定還有 位址解析協定( Address Resolution Protocol , ARP ) 網際網路控制訊息協定( Internet Control Message Protocol , ICMP ). 8-1 MAC Address. IP 位址是使用網路時不可或缺的資訊,封包的傳遞需要有發送端與接收端的 IP 位址才能順利進行 IP 位址是屬於網路層的封包內容,路由器的路由功能需要它 可是在資料連結層運作的交換器或橋接器卻不認識 IP 位址
E N D
網路層中除了IP 協定,常見的TCP/IP 協定還有 • 位址解析協定(Address Resolution Protocol,ARP) • 網際網路控制訊息協定(Internet Control Message Protocol,ICMP)
8-1 MAC Address • IP 位址是使用網路時不可或缺的資訊,封包的傳遞需要有發送端與接收端的IP 位址才能順利進行 • IP 位址是屬於網路層的封包內容,路由器的路由功能需要它 • 可是在資料連結層運作的交換器或橋接器卻不認識IP 位址 • 它們只認識MAC 位址(Media Access Control Address),也稱為硬體位址或實體位址(Physical Address) • 相對的,IP 位址有時也稱為軟體位址、協定位址或邏輯位址(Logical Address)
每片網路卡的MAC 位址都是唯一的,MAC 位址可以當成是網路卡的身分證字號,在出廠時就已經被廠商所設定好。 • MAC 位址使用6 個Bytes 表示 • 前3 個Bytes 為廠商代碼, • 每個製造網路卡的廠商都要先去向IEEE 註冊,申請一個稱為組織唯一識別碼(Organizationally Unique Identifier,OUI)的廠商代碼 • 後面3 個Bytes 則為廠商賦與網路卡的產品流水編號 • MAC 位址的資訊存在資料連結層 • 因此不能跨越運作於網路層的路由器,只能在區域網路中傳遞
在路由過程當中,網路層產生的封包(Packet)內容,在路由過程當中,網路層產生的封包(Packet)內容, • 來源位址放的是發送端的IP 位址 • 目的位址則是接收端的IP 位址 • 在資料連結層將封包封裝成訊框(Frame)時 • 來源位址是發送端負責傳送出去的網路卡之MAC 位址(有時一部主機可能有多片網路卡) • 目的位址則是資料傳送出去遇到的第一台路由器上,負責接收此資料的網路卡的MAC 位址 • 之後陸續傳送過程中時,每經過一個路由器 • 訊框的來源位址與目的位址會變更為傳送線路兩端的網路卡的MAC 位址 • 封包的來源位址與目的位址則不會變動
如圖8-2 所示,PC1 要送資料給PC2,途中會經過R1 與R2 兩台路由器。 • 資料在PC1 到R1 的過程中 • 封包的來源位址是PC1 的網路卡a 的IP 位址,目的位址是PC2 的網路卡f 的IP 位址 • 而訊框的來源位址是PC1 的a 網路卡的MAC 位址,目的位址則是R1 的b 網路卡的MAC 位址
在R1 到R2 的過程中, • 封包的來源位址同樣是PC1 的網路卡a 的IP 位址,目的位址同樣是PC2 的網路卡f 的IP 位址 • 而訊框的來源位址變成是R1 的c 的網路卡的MAC 位址,目的位址則變成是R2 的d 網路卡的MAC 位址
8-2 ARP • ARP 的功能在於利用已知的IP 位址去查詢對應的MAC 位址。 • 在網路上傳輸資料時,已知的資訊多為IP 位址 • 在傳輸過程中,各節點需要利用IP 位址求得相對應之MAC 位址,以供訊框傳輸 • 此時便需利用ARP 的解析功能,將取得的MAC 位址加入訊框中
如之前的圖8-2,PC1 要傳送資料至PC2,已知資訊為PC1 與PC2 的IP 位址 • 當資料要自PC1 傳送到R1 時,PC1 本身的組態設定資訊中,含有預設閘道(Default Gateway)的記錄,這筆記錄便是R1 的b 網路卡IP 位址 • 但因為不知道b 的MAC 位址,PC1 便會利用ARP 去解析,得到的MAC 位址便可加入訊框中
當資料由a 網路卡送出,透過b 網路卡到達R1 • 因為路由器中的路由表記錄了往PC2 的網路需要由c 網路卡送往d 網路卡,內容皆以IP 位址記錄 • R1 便可利用ARP 解析出d 網路卡的MAC 位址 • 以這種方式,每一台路由器重複同樣的動作,便可將資料順利送達目的地,也就是PC2
8-2-1 ARP 的運作方式 • ARP 的解析功能,只需要用兩種封包 • ARP 請求(ARP Request) • ARP 回應(ARP Reply) • 如圖8-3,若電腦A 目前已知IP 位址192.168.100.6,要查詢所對應的MAC位址 • 從圖中可知該IP 位址是電腦F 的,理論上應該是要直接找電腦F,但是實際情況是電腦A 並不知道這組IP 位址是電腦F 的,此時ARP 請求便派上用場
ARP 請求封包是在資料連結層運作的廣播封包 • 電腦A 以廣播方式送出ARP請求封包, • 封包中記錄了電腦A(發送端)的IP 位址、MAC 位址與要查詢的IP位址192.168.100.6 • 封包會送給區域網路內的每一台裝置。 • 區域網路中每一台裝置都會收到同樣的封包,便將裡面要查詢的IP 位址取出來與自己的IP 位址做比對 • 比對不合,知道不是查詢自己的資料,就會把封包丟棄
電腦F 發現要查詢的192.168.100.6 是它的IP 位址 • 就產生一個ARP 回應封包,裡面記錄電腦F(發送端)的IP 位址、AC 位址與電腦A(接收端)的IP 位址、MAC 位址 • 因為它從ARP 請求封包知道是電腦A 所提出的查詢,所以直接將封包指定回傳給電腦A,而不再使用廣播的方式
8-2-2 ARP 快取 • 回到圖8-4,當電腦A 利用ARP 請求查到電腦F 的IP 位址與MAC 位址的對應,便會把資料存到ARP 快取(Cache)中 • 如果之後還有需要查詢電腦F 的MAC 位址時,就可以直接在ARP 快取中得到,而不必再用ARP 請求的廣播封包,避免因為太多廣播在網路上所造成的負擔 • 所以每當有需要查詢IP 位址所對應的MAC 位址時,在產生ARP 請求前,會先檢查是否在ARP 快取中存有資料 • 如果有,就直接使用裡面的資料 • 如果沒有,才會對外送出ARP 請求封包
ARP 快取中記錄的資料,可分為 • 動態 • 靜態 • 動態記錄 • 來自查詢解析出來的結果,自動儲存起來,以提供之後的查詢 • 如果IP 位址與MAC 位址的對應有變動(原來的IP 位址對應到其他MAC 位址或是IP 位址不存在,或者原來的MAC 位址對應到其他IP 位址或是MAC 位址不存在了), • 因為沒有使用ARP 去解析新的對應,ARP 快取中的資料也就不會更新 • 一旦有封包要送往這種位址時,由ARP 快取中得到錯誤的對應,封包送出去時,由於實際IP 位址與MAC 位址對應錯誤,將沒有辦法找到裝置可以處理它 • 所以使用動態記錄時需要有時間的限制,當時間到便將此記錄刪掉,以便更新記錄
靜態記錄 • 預先得知IP 位址與MAC 位址的對應關係,以手動方式記錄於ARP 快取中,以方便使用 • 不論動態與靜態記錄,因為都是ARP 快取資料,而ARP 快取是存在電腦的RAM 中,當電腦關機,記錄就消失了
硬體類型(Hardware Type) • 長度為16 Bits,標示所使用的硬體類型 • 協定類型(Protocol Type) • 長度為16 Bits,標示所使用的是哪一類型協定 • 通常使用的都是IP 協定,對應欄位的值為2048 • 硬體位址長度(Hardware Address Length) • 長度為8 Bits,標示所使用硬體位址的長度,也就是MAC 位址的長度,以Byte 為計量單位 • 若使用乙太網路,這裡的值就是6,因為MAC 位址長度是6 Bytes
協定位址長度(Protocol Address Length) • 長度為8 Bits,標示所使用協定位址的長度,以Byte 為計量單位 • 這個欄位要與協定類型欄位配合 • 當協定類型欄位的值為2048,表示使用IP 協定,這裡就是指IP 位址,因為IP 位址長度為4 Bytes,對應欄位值就是4 • 動作(Operation) • 長度為16 Bits,標示ARP 封包的動作,是ARP Request還是ARP Reply
發送端硬體位址(Sender Hardware Address) • 長度不固定,根據硬體類型與硬體位址長度而定,標示ARP 封包發送端的MAC 位址 • 若是乙太網路,長度便是6 Bytes • 發送端協定位址(Sender Protocol Address) • 長度不固定,根據協定類型與協定位址長度而定,標示ARP 封包發送端的協定位址 • 若是IP 位址,長度便是4 Bytes
目的端硬體位址(Target Hardware Address) • 與發送端硬體位址一樣,長度不固定,根據硬體類型與硬體位址長度而定,標示ARP 封包目的端的MAC位址 • 若是乙太網路,長度便是6 Bytes • 目的端協定位址(Target Protocol Address) • 與發送端協定位址一樣,長度不固定,根據協定類型與協定位址長度而定,標示ARP 封包目的端的協定位址 • 若是IP 位址,長度便是4 Bytes
8-2-4 RARP • 反向位址解析協定(Reverse Address Resolution Protocol,RARP)的功能正好與ARP 相反 • ARP 是已知IP 位址,要解析其對應的MAC 位址 • RARP 則是反過來,已知MAC 位址,要解析相對應的IP 位址 • 與ARP 一樣,RARP 也是只有使用兩種封包 • RARP 請求(RARP Request) • RARP 回應(RARP Reply)
使用RARP 的情況通常發生在無硬碟電腦上 • 因為沒有硬碟裝置儲存IP 位址組態,因此使用時會在一開機便以RARP 封包廣播,向伺服器要求指派IP 位址
8-3 ICMP • 在傳遞所經過的路徑中,各式各樣的狀況都有可能會遇到,如何得知傳輸狀況與所發生的點,進而去尋求解決方式,將狀況解除,才能使得網路運行更加順暢 • 網際網路控制訊息協定(Internet Control Message Protocol,ICMP) • 常用於測試網路連線,網管人員會利用一些工具,送出ICMP 封包,測試網路連線是否正常 • 有時也用於報告錯誤情形,當網路上的裝置(通常是路由器)發現有錯誤產生時,便使用ICMP 封包回報錯誤 • 若是需要解決問題,則要尋求其他方式,因為這不是ICMP 所負責,ICMP 只做通報的工作。
8-3-1 ICMP 封包 • ICMP 的封包分為表頭與資料 • 封裝後會成為IP 的Payload 部分 • 可是ICMP 與IP 是屬於同一層的協定 • ICMP 的資料部份會隨著ICMP 表頭內容的不同而有變化 • 因此資料欄位長度不固定
ICMP 的表頭分為3 個欄位: • 類型(Type) • 長度為8 Bits,定義出各種不同用途的ICMP 封包類型 • 代碼(Code) • 長度為8 Bits,與類型欄位搭配使用,分出細項類別,並非每一種類型都會使用到代碼 • 錯誤檢查碼(Checksum) • 長度為16 Bits,存放ICMP 封包的錯誤檢查碼,提供比對以防止封包在傳送中出現錯誤
回音請求(Echo Request)與回音回應(Echo Reply): • 這兩種封包是成對搭配運作的,主要應用於網路連線測試上 • 如圖8-8,A 電腦產生一個EchoRequest 的ICMP 封包傳送給B 電腦,要求B 電腦如果有接收到封包就要回覆 • 當B 電腦收到Echo Request 封包時,知道A 電腦在等待回覆,便產生一個Echo Reply 的ICMP 封包傳回給A 電腦,告知已經收到A 電腦的封包
要測試網路連線是否正常時 • 會選定一個目標主機,使用者於測試主機端產生一個Echo Request 封包,封裝成IP 封包後,經由網路送至目標主機 • 若是目標主機成功收到此封包,便會產生一個Echo Reply 封包,同樣封裝成IP 封包,再經由網路回傳給測試主機
使用者看到回應就表示 • 目標主機目前是存在的 • 測試主機與目標主機之間的網路連線是正常的 • 如果測試主機到目標主機需要經過IP 路由的話,則表示它們之間的IP 路由是正確的 • 因此,若是在限定時間內沒有收到Echo Reply 封包,便可推測有以上3 種情形至少有一種以上出現問題
目的地無法抵達(Destination Unreachable): • 用於通知發送端無法將資料傳送至目的地。 • 如圖8-9,A 電腦要傳送資料給B 電腦,當封包抵達路由器R3 時,發現通往B 電腦的線路不通 • R3 便回傳一個Destination Unreachable 的ICMP封包傳回給A 電腦,告知無法將封包送給B 電腦
資料在傳輸過程中,路由器發現無法將資料繼續傳送下去,例如網路斷線或是路由表中找不到可用的路徑時,便會傳送Destination Unreachable 的封包給發送端,讓發送端知道資料並沒有送到 • 另外,資料送到了接收端,但是接收端電腦無法處理所收的封包,也會傳送Destination Unreachable 的封包給發送端
目的地無法抵達又細分幾種不同類型,分別使用不同的ICMP 表頭的代碼欄位,常見類型如表8-4。
來源端抑制(Source Quench) • 當路由器所處理的封包量太大,沒有辦法馬上消化掉,就會產生一個Source Quench 的ICMP 封包通知來源端,請來源端暫時停止傳送或是降低傳送的速度
重新導向(Redirect) • 電腦主機與路由器都會保有自己的路由表,電腦在傳送資料時會依據本身的路由表指定傳送給路由器 • 因為電腦並不像路由器有較好的路由更新機制去做路由表的定期更新,有時會發生電腦所選擇的路由並非最佳路徑 • 當資料從電腦送到指定的路由器,路由器發現電腦所指定的路徑並非最佳路徑,便會產生一個Redirect 的ICMP 封包,通知電腦改往最佳路徑的路由方向送
如圖8-12,A 電腦要傳送資料給B 電腦,它本身的路由表記錄的最佳路徑是透過路由器R3,便將資料往R3 送去 • R3 收到資料,比對自己的路由表,發現應該往R1 才是最佳路徑,便產生Redirect 的ICMP 封包,回傳給A 電腦,如圖8-13 • 電腦A 收到R3 的封包,便更改自己的路由表,並重新傳送資料到路由器R1,如圖8-14