ARP的由來
ARP這一種協議它會是在我們HCIA中第一個需要完全掌握的一個協議,不然對于數據通訊來說大家都會一直覺得很繞圈
- 協議棧,網線,網卡,它們組成了我們最小的數據通信的小脈絡
- 注:可以了解ARP攻擊(冒充訪問的目的設備給你錯誤的mac),需要內網中的攻擊防范手段(需中級高級學習)
S-IP
:源IPD-IP
:目的IP
對于IP協議來說是能獲取到對方IP的,但是怎么拿到對方的MAC
對于E2來說我知道源MAC(自己的MAC)
假設左邊的MAC是00-00-01
,右邊的MAC是00-00-02
源mac我是知道的S-MAC:00-00-01
但目的MAC我們不知懂。對于MAC來說是全球唯一,出廠自帶,燒錄進網卡芯片中。那我們怎么拿到這個MAC地址
我們1.1.1.1/24
給1.1.1.2/24
發報文,我們無法通過程序或者從上層的協議感知一下。
我們可以填寫成全1以一個廣播的形式,在我整個廣播域下找對應的設備,當我們目的mac全為1(十六進制全為F)的時候,整個網絡中所有的設備都能收到這樣的一個報文
我不知道怎么到達主機2但是我知道我的數據如何讓你收到(發個廣播)
這種方式在我們整個通信中可以接入我們一個的交換機的,未來會有很多的設備通過交換機與主機相連,通過廣播的形式,會對全部相連的設備都能收到數據(默認交換機是不做配置)這樣主機2確實能收到,但是其他的設備也能收到,這樣的網絡通訊叫多點網絡通信是無法滿足我們單播通訊的條件的。沒有辦法跟設備2進行通信。
所以對我們TCP/IP
通信設計的模型來說是無法僅僅依靠二層(數據鏈路層)完成mac地址的查詢(填寫/封裝),數據僅僅放在E2這里MAC地址封裝不了,所以得開發個協議幫助填寫我們的mac字段;無法封裝mac地址數據無法發送出去(不符合我們數據整體的通信方式)出現的新的協議就是ARP
ARP協議
ARP — 地址解析協議
概念:在已知IP地址的情況下,求與之對應的MAC地址
ARP是基于數據鏈路層封裝的2.5層協議(數據鏈路層之上)
3層需要提供最基礎的IP尋址包括路由的功能;ARP僅在數據封裝時封裝在我們數據鏈路層之上
- 當我數據(PC1,
1.1.1.1/24
)要進行數據通訊,要去訪問PC2的時候(1.1.1.2/24
)首先會檢測對端IP是否在同一網段(對比網絡地址:自己的IP+自己的掩碼,比對對方的IP+自己的掩碼)若網絡地址相同,就會進行第二步,不同 - 借用ARP協議實現獲取對方IP對應的MAC
對于ARP這個新協議來說它的數據幀是
對于ARP而言有四個核心的參數
sender-ip
:發送者IPsendee-mac
:發送者的MACtarget-ip
:目標IPtarget-mac
:目標MAC
未來這個報文會發送到PC2上
target-mac
是不能不填的,如果不填(封裝)是不符合TCP/IP協議棧的封裝標準(發不出去),我們不知道mac又要填MAC,其實我們可以填全0(未知)
我們不知道設備地址在哪,所以我們第一個報文包一定是廣播報文(不怎么好,但是我們沒有辦法)
- E2這里的目的MAC(D-MAC)我們全填F
- 在接收中會有一個廣播域
廣播域:指的是廣播報文所傳遞的范圍;
- 對于交換機而言它所有的端口都處在同一個廣播域(不劃分VLAN的情況下)
- 對于路由器來說所有接口都是一個廣播域
- 廣播報文是無法穿透路由器的三層接口
沖突域:在一定的范圍內,我的數據在發送或者接收的范圍中可能會產生數據的碰撞這樣的范圍就是沖突域
PC2收到廣播報文后,首先看看報文是不是給自己的,如果是廣播包PC2必須強制接收處理;其次要進行FCS/CRC校驗,校驗完后比對FCS字段,表示沒問題交給上層。實際上我需要先把二層給拆了,是一個廣播包(全F)可以看到對方mac地址給我發的一個報文(能夠知道PC1的地址)看完二層就看二層之上的封裝了,上層就是ARP,會看
target-ip(目的IP地址)
是不是我,如果是我,如果是則接下去走(想知道),如果不是則會丟棄報文