Mac地址有點像身份證號碼,而IP位址就像門牌號碼。在茫茫大海中僅憑一個身份證號碼找到一顆別樣的沙粒很難,但如果先找到具體的沙灘,沙灘劃分很小的網格片區,就很容易通過身份證找到這顆別樣的沙粒了。
MAC地址(物理地址、硬體地址)是實實在在的網絡設備出身地址,它是由廠商寫入網絡設備的bios中。
網絡設備廠商也並不能隨意的使用Mac地址,需要向IEEE申請,當然廠商申請需要付費。
Mac地址通常表示為12個16進位數,每2個16進位數之間用冒號隔開,前6位16進位數代表了網絡硬體製造商的編號,由IEEE分配,而後3位16進位數是由網絡產品製造產商自行分配。這樣就可以保證世界上每個網絡設備具有唯一的MAC地址,比如一臺電腦的網卡壞掉了之後,更換一塊網卡之後MAC地址就會變。
IP位址是出於拓撲設計出來的,它為網際網路上每一個網絡和每一臺主機分配一個邏輯地址,以此來屏蔽物理地址的差異。對於路由器、電腦等網絡設備,只要IP位址不重複情況下,IP位址是可以隨意的修改。
早期的乙太網只有集線器(Hub)、沒有交換機(Switch),所以發出去的包能被乙太網內所有的機器監聽到,所以數據包就需要帶上源mac地址和目的mac地址,每個機器只需要接受和自己的MAC地址相匹配的數據包。
區域網數據傳輸並不是通過網絡層的IP位址進行路由和轉發,想要在區域網中發送數據,還需要知道設備的mac地址。比如我們的電腦向其他區域網中的其他電腦發送數據時,它會先通過ARP(地址解析協議)在區域網中獲取目的IP位址所對應的MAC地址。
step1:源主機首先會向區域網中發送ARP的廣播請求,只要目標mac地址是FF:FF:FF:FF:FF:FF,區域網內的所有設備都會受到這個請求。
step2:接收到ARP請求的設備會檢查目的IP位址和自己的IP位址是否一致,不一致就會忽略當前的ARP請求,一致就會向源主機發送ARP響應。
step3:源主機接收到ARP響應後就會更新本地緩存表並繼續向目的主機發送數據。
在區域網中如果採用集線器來連接不同的網絡設備,相同的MAC地址一般不會出現太多的問題,因為在集線器連接的區域網中所有的數據幀都會被廣播給區域網內的全部主機,而如果通過交換機連接不同的網絡設備就會受到影響,因為交換機需要學習區域網中不同設備的Mac地址並將數據幀轉發給特定的主機。
所以Mac地址其實是可以重複使用的,只是不能在同一個區域網中使用相同的MAC地址,而跨區域網的網絡傳輸則需要通過網絡層的IP協議,所以在不同的區域網使用相同的Mac地址就不存在類似的問題。
Mac地址會有重複按照IEEE的協定每個網絡設備出廠都會有全球唯一的Mac地址,並且使用過的也不會再重複使用。但不意味著Mac地址就不會出現重複了,很多小夥伴們都改過Mac地址,有的直接可以通過系統進行修改。
有的網絡設備允許你在管理後臺手動的修改mac地址。
以上這些都是通過虛擬的方式覆蓋原有的Mac地址,並沒有更改掉設備出身時烙印的Mac地址。出身時烙印的Mac地址也並不是不能修改,通過硬體寫入的方式同樣的可以修改Mac地址,本質上Mac地址就是一串二進位數,存放在了bios的某個存儲區域內。