每一個網卡都有一個IP和MAC,是在網路世界的通訊地址,相當於現實中家家戶戶的門牌號碼
警察要找你,他是怎麼透過你的身分證找到你的呢?
藉由身分證上的戶籍地址(IP),找到了你的家,按下你家的門鈴後,大喊了身分證號碼(MAC),你到了門口,警察就這樣找到你了
IP地址
IP地址就像是電腦網卡裡家家戶戶的門牌號碼。有了IP,資料就能一層層路由到目的地電腦。我們要怎麼查電腦裡的IP門牌號碼呢?
在Linux,有兩個指令可以查詢,分別為ifconfig
和ip addr
。
ifconfig
1 | #> ifconfig |
ip addr
1 | #> ip addr |
ifconfig
來自於Linux的net-tools,而ip addr
來自於iproute2。net-tools起源於BSD,自2001年起,Linux社群已經對其停止維護,而iproute2旨在取代net-tools,並提供了一些新功能。一些Linux發行版已經停止支援net-tools,只支援iproute2。net-tools通過procfs(/proc)和ioctl system call去訪問和改變kernel網路設定,而iproute2則通過netlink socket interface與kernel通訊。net-tools中工具的名字比較雜亂,而iproute2則相對整齊和直觀,基本是ip command加後面的sub-command。不過這麼多年過去了,net-tool依然還在被廣泛使用,最好還是兩套指令都掌握吧。
IP地址是門牌號碼,所以不能大家都一樣,不然就會起衝突。舉個例子,132.128.200.32
是一個IP地址,由三個”.”分成四個部分,每個部分有8個bit,四個部分加起來總共有32個bit,也就是最多只能產生2**32
個門牌號碼。因為不夠用,所以有了IPv6,也就是上面的輸出結果fe80::ca61:d665:1750:e806
,總共有128位,看起來應該是夠了。
現有的32bit IP地址不夠用,於是IP地址分為私人IP(內網IP)和公共IP(任何地方都能連的IP,例如Google)。私人IP地址的目的是為了安全以及讓更多電腦能有自己的IP地址。試想一下,如果大家都能訪問你的電腦,如果你的電腦被植入了惡意程式,某個port被打開,是如此的不安全。下面的IP地址範圍就是私人地址:
地址範圍 | 數量 |
---|---|
10.0.0.0–10.255.255.255 | 16,777,216 |
172.16.0.0–172.31.255.255 | 1,048,576 |
192.168.0.0–192.168.255.255 | 65,536 |
所以下次你跑ip addr
看到你的IP是192.168.2.132
,不用懷疑,你在私人IP裡,外面的電腦無法和你的電腦連結。
MAC地址
MAC地址是一個容易和IP地址誤解的地址,因為MAC地址號稱全世界唯一,那既然唯一了,為何我們還要IP地址呢?其實MAC地址與其說是個地址,不如說它是個網路ID。
舉個例子,我們要找一個人,他的身分證是A123456789,身分證上面寫的地址是台北市文山區興隆路五段9弄18號4樓
。後面的地址就像是電腦的IP,而身分證就是這個人。
MAC地址其實是可以改的,只要不要在同個內網下有多個相同的MAC地址。就像是同個家庭,不要有重複的”身分證”。從上面的ip addr
指令,我們可以看到MAC地址是02:42:ac:11:00:03 brd ff:ff:ff:ff:ff:ff
。
總結
本篇文章講述了IP地址和MAC地址的差別,以及怎麼查詢我們的IP和MAC地址:
- IP地址 - 電腦的門牌地址,目的是路由,常見於TCP/IP五層的第三層
- MAC地址 - 電腦的唯一ID,目的是最終指向目的地電腦,常見於TCP/IP五層的第二層(鏈接層)