
程式員的成長之路
網際網路/程式員/技術/資料共享
IP位址和Mac位址産生的目的是友善别人找到自己
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的某個存儲區域内。
Mac位址還可以用很久
有限的Mac位址,不斷的使用,遲早是會消耗完的。但是Mac位址數量足夠多,還可以使用很長一段時間。