网络基本知识(1) ARP解析
IP地址是一個32位的二進制數(這里我們說的都是IPV4),通常用 " 點分十進制 " 表示 ?“a.b.c.d”。地址分類的話,其實大多數同學都知道,我就大概的說一下:
A類:0.0.0.0~127.255.255.255.255;
B類:128.0.0.0~191.255.255.255;
C類:192.0.0.0~223.255.255.255;
D類:224.0.0.0~239.255.255.255;
E類:24.0.0.0~247.255.255.255;.
ABC三類地址稱為單播地址,用于標識一個接口,D類地址稱為組播地址,這個后面有機會詳細介紹,E類地址暫時不用。
還有一個特別地址255.255.255.255,稱為廣播地址,可以被所有設備接收。
下面開始講arp協議,以太局域網的內部通信需要知道鏈路層地址,即MAC地址。已經知道了對方的IP地址,怎么才能獲取對方的MAC地址呢?
舉例:A要向B發數據,但是目前只知道B的IP。
A向所有的喊一聲,誰的IP是X.X.X.X,告訴一下MAC地址?(這個就是廣播)
B收到之后就會回給A說,我的IP是X.X.X.X,MAC地址是......(這個是單播)
? ? ? ? 這樣的話A就拿到了B的MAC地址。
每個以太網設備都有一個唯一的屬于自己的MAC地址,叫做單播MAC地址,例如48:EA:33:05:33:45,目的MAC為該地址的以太幀只有它才會接收。有一個特別的MAC地址"FF:FF:FF:FF:FF:FF",它對應于局域網上的所有設備,只要給這個MAC地址發送報文,局域網上的所有設備都會接收,這個MAC地址稱為廣播MAC地址。另外還有一類地址,對應于以太網上的一組特定的設備,這類MAC地址叫做組播MAC地址,目的為組播MAC地址的以太幀,只要加入到這個組播組的設備才會接收。
當A不知道B的MAC地址的時候,他會發送一個ARP請求報文,通常是一個廣播以太幀。大意是“誰知道192.168.1.10的MAC地址是多少,告訴我192.168.1.100”,然后在發送者地址字段填上自己的MAC地址:46:e3:54:21:43:65.既然不知道對方的MAC地址,目的MAC地址的話就填廣播MAC地址“FF:FF:FF:FF:FF”。
當B收到這個報文一看,有人在問我的MAC地址,那就告訴他吧。然后發送一個ARP應答報文,通常是一個單播以太幀。大意就是“192.168.1.10的MAC地址是45:32:56:44:78:21,目的MAC的話就是請求人的MAC地址”。還要把對方的IP和MAC地址保存下來,下一次給A發報文的時候就不要詢問,這個就是ARP表項。
與此同時,同一個局域網內的其他設備都會受到A發送的廣播ARP請求以太幀,雖然他們不會回應,但是也會把A的IP和MAC地址保存下來,下次如果發送的話就不用發送ARP請求了。
上述的ARP學習過程是通過協議動態獲取的,這樣的表項叫做動態ARP,為了節省表項資源,ARP表項需要定期老化清楚。相對動態ARP,也可以手動ARP配置,這個叫做靜態ARP表項。
我們知道,以太幀用于局域網通信,同樣MAC地址只有在局域網內有效,所以只有當設備認為自己與對方處于同一個局域網時候,才會通過ARP協議請求對方的MAC地址,然后將報文直接或通過交換機發送給對端設備,這個過程叫做二層轉發。否則,設備就不會將報文直接發送給對方,而是將報文發送給一個叫“網關”的設備,即路由器,通過網關轉發處于另一個局域網的目的設備,這個過程叫做三層轉發。
其實這里可以說一下,雖然ARP是處理的鏈路層的數據,可是它是網絡層的協議,所以不是一個網段的話只能轉發給網關,即使是連在一個交換機的兩個IP地址。
最后的話說一下免費ARP吧,這個過程的話其實比較簡單,就是明知故問。有什么用呢??
當一個設備獲得了一個IP或剛開機時候,為了確定自己的IP沒有被局域網內的其他設備占用,通常會發送一個免費ARP請求,如果局域網內有其他設備已經使用該IP,就會回應一個ARP應答,于是發送免費ARP的設備就會給予系統提示(例如:IP地址沖突)。還有一種情況的話,就是設備IP對應的MAC地址發生了變化,免費ARP可以使得局域網被的其他設IP設備立刻刷新該設備的ARP表項。
今天就先到這里,2015年12月10日00:04:07。
總結
以上是生活随笔為你收集整理的网络基本知识(1) ARP解析的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: SQL之SELECT语句执行顺序及子句功
- 下一篇: redis入门(02)redis的常见问