摘要:當前的網絡通信是以TCP/IP模型為基礎的,通信離不開的就是封裝,而封裝就是按照模型的體系結構來進行封裝,TCP/IP它是一個協議族,里面包含了很多協議,其中一個協議就是ARP。
關鍵詞:TCP/IP LAN ICMP ARP
ARP全稱就是address resolution protocol,中文意思就是地址解析協議,它工作在TCP/IP模型中的二層即所謂的數據鏈路層,作用就在于將三層的IP地址轉換成二層的MAC地址,在局域網的通信中,它是必不可少的,如果沒有它,局域網內部的通信就無法實現。下面就以一個實例來闡述ARP是如何工作的!
在以太網的局域網的內部有兩臺主機PCA和PCB,直接通過交叉線相連,交叉線經測試,沒有問題,接著在兩臺PC上配置上IP地址,并且兩IP地址在同一個網段,比如都是192.168.10.0/24網段,PCA就是192.168.10.1,PCB就是192.168.10.2,此時就需要在兩臺PC上做通信測試,當然我們在做通信測試的時候常用的工具就是ping,ping只是一個測試工具,它要工作的話肯定也是需要根據TCP/IP模型的體系結構來進行封裝,它是封裝在TCP/IP模型中的網絡層中的ICMP協議內部,現在PCA要訪問PCB,直接在PCA的電腦上點擊“開始----運行---CMD”,在彈出的DOS對話框中輸入 ping 192.168.10.2 ,如果彈出以下提示,就表示兩臺PC通信成功
Request time out
Reply from 192.168.10.2: bytes=32 time=17ms TTL=54
Reply from 192.168.10.2: bytes=32 time=18ms TTL=54
Reply from 192.168.10.2: bytes=32 time=18ms TTL=54
從這里可以看出,一共發出去了四個包,第一個包是超時,就是說沒有成功,后續的三個包就表示通信已成功,當然這個非常簡單,關鍵我們就來看包的封裝,具體的通信過程是如何執行的
首先PCA要發PING包給PCB,PCA需要在本端進行封裝,PING封裝在ICMP里面,封裝之后,接著封裝protocol字段,此字段的意義就在于告訴IP層上層用的是什么協議,就是這里的ICMP,然后再封裝目標IP即所謂的192.168.10.2,再封裝源IP即所謂的192.168.10.1,接著就是二層數據鏈路層的封裝,先封裝TYPE字段(TYPE字段的意義和protocol字段的意義一樣,告訴二層它層面之上的三層用的是什么協議,當然這里的三層協議就是IP協議,然后再繼續封裝 源MAC地址,就是PCA本身的MAC地址(假設就是MA),接著就是目標MAC地址,封裝過程見下
此時,在封裝目標MAC的時候就不知道該封裝什么內容了,那如果不執行封裝,這個包肯定也就過不去,接下來就會觸發今天我們的重點要討論的協議,就是ARP,一旦ARP被觸發,就會產生ARP請求報文,ARP就直接在二層進行封裝,先封裝type字段,接著封裝源MAC即所謂的MA,接著目標MAC地址區域就是 全F,也就是所謂的二層整網廣播,而ARP內部也是一樣,有源IP,源MAC,目標IP,目標MAC由于未知,所以就置為全0,它所表達的意思就是,請問192.168.10.2的MAC地址是多少?接下來就到了物理層轉換為比特流通過網線傳遞給了PCB,當PCB收到之后,就開始進行解封裝!首先檢查目標MAC,由于是全F,廣播,大家都能接收,然后看源MAC,接下來就是查看ARP內容,由于我的IP就是192.168.10.2,此ARP的內容正是針對我的詢問,那我就要對此做答復,把我的MAC地址回應給PCA,接著在PCB端又要針對于ARP的請求報文回應一個應答報文,在發出去之前同樣需要進行封裝,封裝的這個就是 ARP的應答報文!首先完善ARP內部的字段內容,源IP就是192.168.10.2,源MAC就是MB(假設PCB的MAC地址就是MB),目標IP就是192.168.10.1,目標MAC就是MA(因為之前PCA發了一個包過來,當我PCB收到之后,我都會把一些相關的重要信息給存儲起來,比如對端的MAC和對端的IP),封裝完之后就進入物理層轉換為比特流,通過網線傳遞給了PCA,此時作為PCA就知道PCB的MAC地址了,所以后續的PING包都能成功,而第一個PING只所以丟失,是ARP報文導致的!因為任何的通信只有知道對端的MAC地址,才能夠真正和對端進行通信,且這個MAC地址是全球唯一的!
綜上所述,雖說ARP協議是TCP/IP協議簇中的小型協議,但它也是一個非常重要的協議,沒有它,局域網之間的通信也就無法完成!