四.網路層的兩大協議ICMP和ARP的工作原理
一.ICMP協議
ICMP是(Internet Control Message Protocol)Internet控制報文協議。
它是TCP/IP協議族的一個子協議,用於在IP主機、路由器之間傳遞控制訊息。
控制訊息是指網路通不通、主機是否可達、路由是否可用等網路本身的訊息。
這些控制訊息雖然並不傳輸使用者資料,但是對於使用者資料的傳遞起著重要的作用。
二.Ping工作過程
假定主機A的IP地址是192.168.1.1,主機B的IP地址是192.168.1.2,都在同一子網內,則當你在主機A上執行“Ping 192.168.1.2”後,都發生了些什麼呢?
1.首先,Ping命令會構建一個固定格式的ICMP請求資料包,
2.然後由ICMP協議將這個資料包連同地址“192.168.1.2”一起交給IP層協議(和ICMP一樣,實際上是一組後臺執行的程序),
3.IP層協議將以地址“192.168.1.2”作為目的地址,本機IP地址作為源地址,加上一些其他的控制資訊,構建一個IP資料包,並在一個對映表中查找出IP地址192.168.1.2所對應的實體地址(也叫MAC地址,熟悉網絡卡配置的朋友不會陌生,這是資料鏈路層協議構建資料鏈路層的傳輸單元——幀所必需的),一併交給資料鏈路層。
4.後者構建一個數據幀,目的地址是IP層傳過來的實體地址,源地址則是本機的實體地址,還要附加上一些控制資訊,依據乙太網的介質訪問規則,將它們傳送出去。
5.其中對映表由ARP實現。ARP(Address Resolution Protocol)是地址解析協議,是一種將IP地址轉化成實體地址的協議。ARP具體說來就是將網路層(IP層,也就是相當於OSI的第三層)地址解析為資料連線層(MAC層,也就是相當於OSI的第二層)的MAC地址。
6.主機B收到這個資料幀後,先檢查它的目的地址,並和本機的實體地址對比,如符合,則接收;否則丟棄。
7.接收後檢查該資料幀,將IP資料包從幀中提取出來,交給本機的IP層協議。
8.同樣,IP層檢查後,將有用的資訊提取後交給ICMP協議,後者處理後,馬上構建一個ICMP應答包,傳送給主機A,其過程和主機A傳送ICMP請求包到主機B一模一樣。
即先由IP地址,在網路層傳輸,然後再根據mac地址由資料鏈路層傳送到目的主機
三.ARP工作原理
1.首先,每臺主機都會在自己的ARP緩衝區中建立一個 ARP列表,以表示IP地址和MAC地址的對應關係。
2.當源主機需要將一個數據包要傳送到目的主機時,會首先檢查自己 ARP列表中是否存在該 IP地址對應的MAC地址,如果有,就直接將資料包傳送到這個MAC地址;如果沒有,就向本地網段發起一個ARP請求的廣播包,查詢此目的主機對應的MAC地址。
3.此ARP請求資料包裡包括源主機的IP地址、硬體地址、以及目的主機的IP地址。網路中所有的主機收到這個ARP請求後,會檢查資料包中的目的IP是否和自己的IP地址一致。如果不相同就忽略此資料包;
4如果相同,該主機首先將傳送端的MAC地址和IP地址新增到自己的ARP列表中,如果ARP表中已經存在該IP的資訊,則將其覆蓋,然後給源主機發送一個 ARP響應資料包,告訴對方自己是它需要查詢的MAC地址;
5.源主機收到這個ARP響應資料包後,將得到的目的主機的IP地址和MAC地址新增到自己的ARP列表中,並利用此資訊開始資料的傳輸。如果源主機一直沒有收到ARP響應資料包,表示ARP查詢失敗。
例如:
A的地址為:IP:192.168.10.1 MAC: AA-AA-AA-AA-AA-AA
B的地址為:IP:192.168.10.2 MAC: BB-BB-BB-BB-BB-BB
根據上面的所講的原理,我們簡單說明這個過程:A要和B通訊,A就需要知道B的乙太網地址,於是A傳送一個ARP請求廣播(誰是192.168.10.2 ,請告訴192.168.10.1),當B收到該廣播,就檢查自己,結果發現和自己的一致,然後就向A傳送一個ARP單播應答(192.168.10.2 在BB-BB-BB-BB-BB-BB)。