了解完網(wǎng)絡(luò)協(xié)議,我們會發(fā)現(xiàn),網(wǎng)絡(luò)通信的五層模型里,有兩個(gè)很重要的概念:IP 地址和 MAC 地址。
那么 IP 地址是怎么來的,又是怎么沒的?MAC 地址與 IP 地址又有什么區(qū)別?
這回答上面問題前,先熱下身,大家知道如何查看本機(jī)的 IP 嗎?這個(gè)問題,即便是沒有專業(yè)學(xué)過計(jì)算機(jī)的人,只要折騰過電腦,重裝過系統(tǒng),大多都會知道答案:在 Windows 下是 ipconfig,在 linux 下是 ifconfig。
在 Windows 下輸入 ipconfig,我們會看到這個(gè)界面:
在 linux 下輸入 ifconfig,我們會看到這個(gè)界面:
IP 地址
可以看到,無論是在 Windows 還是在 linux 下,輸入相關(guān)命令都能顯示出這臺機(jī)器上所有的網(wǎng)卡。大部分的網(wǎng)卡都會有一個(gè) IP 地址。就像 192.168.1.73 ,就是我本機(jī)以太網(wǎng)的 IP 地址。
IP 地址是一個(gè)網(wǎng)卡在網(wǎng)絡(luò)世界中的通訊地址,相當(dāng)于我們現(xiàn)實(shí)世界的門牌號碼。
注意,IP 地址是網(wǎng)卡的通訊地址,不是一臺機(jī)器的通訊地址。很多時(shí)候,我們會說一個(gè)電腦只有一個(gè) IP 地址,這種說法實(shí)質(zhì)上并不正確,準(zhǔn)確的來說,應(yīng)該是:
一個(gè)網(wǎng)卡在同一時(shí)段只能有一個(gè) IP 地址,一臺機(jī)器可以有多個(gè) IP 地址。
就像我們的筆記本,一般都會有線網(wǎng)卡和無線網(wǎng)卡,則有線網(wǎng)卡有一個(gè) IP 地址,無線網(wǎng)卡也有一個(gè) IP 地址。
一臺機(jī)器有多個(gè) IP 地址,那 IP 地址會不會重復(fù)呢?其實(shí)我們應(yīng)該會碰到 IP 地址重復(fù)的情況。有時(shí)候我們電腦彈出網(wǎng)絡(luò)地址沖突,出現(xiàn)無法上網(wǎng)的情況,那多半就是 IP 地址沖突了。
格式
就像上面輸出的結(jié)果,192.168.1.73 就是一個(gè) IP 地址。這個(gè)地址被點(diǎn)(。)分割為四個(gè)部分,每個(gè)部分有 8 個(gè) bit,所以 IP 地址總共是 32 位。顯然,32 位產(chǎn)生的 IP 地址在當(dāng)今這個(gè)互聯(lián)網(wǎng)社會,很明顯就是“狼多肉少”。于是就有了 IPv6,也就是上面結(jié)果中的 fe80::515d:5483:ff4d:6db9/64。這個(gè)有 128 位,能滿足我們現(xiàn)在的需求了。至于后面會不會出現(xiàn) IPv8 ,那就看后面互聯(lián)網(wǎng)世界的發(fā)展了。
分類
我們應(yīng)該都聽說過,IP 地址分為 A、B、C、D、E 五類。對于 A、B、C 類,主要分兩部分,前面一部分是網(wǎng)絡(luò)號,后面一部分是主機(jī)號。
下圖是 A、B、C 三類地址所能包含的主機(jī)數(shù)量。
這里面有個(gè)問題,C 類地址包含的主機(jī)數(shù)量太少,而 B 類地址包含的主機(jī)數(shù)量又太多,于是就有了一個(gè)折中的方式叫做無類型域間選路。
無類型域間選路
顧名思義,無類型域間選路(CIDR)基本思想是取消地址的分類結(jié)構(gòu),取而代之的是允許以可變長分界的方式分配網(wǎng)絡(luò)數(shù)。192.168.1.73/24 就是無類型域間選路格式的 IP 地址。這種格式的 IP 地址,將 32 位的 IP 地址一分為二,前面是網(wǎng)絡(luò)號,后面是主機(jī)號。從哪里分呢?如果注意觀察的話可以看到,上面地址中有一個(gè)斜杠,斜杠后一個(gè)數(shù)字 24。這個(gè) 24 的含義就是,前24 位是網(wǎng)絡(luò)號,后 8 位是主機(jī)號。
公有 IP 地址和私有 IP 地址
繼續(xù)看上面的表格。表格最右列是私有 IP 地址段。平時(shí)我們在一個(gè)局域網(wǎng)內(nèi),看到的 IP 地址都是私有 IP 地址。因?yàn)檫@些地址允許組織內(nèi)部的 IT 人員自己管理和分配,而且還可以重復(fù)。所以會出現(xiàn)你局域網(wǎng)的私有 IP 地址段和我局域網(wǎng)的是一樣的。
就像我們上面說的,小明在自己家里給同單元的小伙伴說自己是五單元 101 號,小伙伴能理解,但是他如果這樣和小紅說,小紅就會問,你是哪個(gè)小區(qū)的?這里的小區(qū)實(shí)際上就是公有 IP 地址,而五單元 101 號就是私有 IP 地址。
表格中的 192.168.0.x 是最常見的私有 IP 地址段。就像我們家里的路由器地址一般是 192.168.0.1 一樣。
IP 分配與釋放
IP 分配我們平時(shí)應(yīng)該接觸比較少。還記得在大學(xué)的時(shí)候,剛?cè)雽W(xué)第一件事就是趕緊交網(wǎng)費(fèi)。交網(wǎng)費(fèi)時(shí)會有一個(gè)步驟,網(wǎng)管會讓你提供 MAC 地址,然后把 IP 地址和 MAC 地址綁定,這也就是博主在隔壁宿舍無法通過網(wǎng)線上網(wǎng)的原因。
其實(shí),如果你有相關(guān)的知識積累,可以用命令行自己配置 IP 地址。當(dāng)然,能不能通信就看你的知識儲備量了。
除了命令行配置外,我們平時(shí)應(yīng)該對于 IP 分配應(yīng)該都是用的 “拿來主義”。無論是在學(xué)校還是在辦公室,都會有網(wǎng)絡(luò)管理員把分配好的 IP 給你,直接使用就可以了。但是有時(shí)候也會好奇,網(wǎng)管是怎么分配 IP 的呢?難不成通過命令行一個(gè)個(gè)配置?這時(shí)候就要用到動(dòng)態(tài)主機(jī)配置協(xié)議(DHCP)。
動(dòng)態(tài)主機(jī)配置協(xié)議
這個(gè)協(xié)議的工作原理是怎樣的呢?我們就拿一臺機(jī)器新加入一個(gè)網(wǎng)絡(luò)為例,來走一遍 DHCP 的工作流程。
當(dāng)一臺機(jī)器新加入一個(gè)網(wǎng)絡(luò)時(shí),肯定一臉懵逼,啥情況也不知道,只知道自己的 MAC 地址。沒人理你怎么辦?那不管三七二十一,先吼一聲,告訴所有人,我來了,有人嗎?這時(shí)候的溝通基本靠“吼”。這一步,我們稱為 DHCP Discover。
新來的機(jī)器使用 IP 地址 0.0.0.0 發(fā)送了一個(gè)廣播包,目的 IP 地址是 255.255.255.255。廣播包封裝在 UDP 里面,UDP 封裝在 BOOTP 里面。在這個(gè)廣播包里,新人大喊:我是新來的(Boot Request),我的 MAC 地址是 xxx,我還沒有 IP,誰能給我個(gè) IP 地址?格式就像下面這樣:
這時(shí)候,網(wǎng)絡(luò)里的 DHCP Server 就相當(dāng)于這個(gè)局域網(wǎng)的管理員。他知道來了一個(gè)“新人”,需要給它分配一個(gè) IP 地址,這個(gè)過程就是 DHCP Offer。同時(shí),DHCP Server 保留為此機(jī)器提供的 IP 地址,從而不會再將相同的 IP 地址分配給其它的機(jī)器。而 DHCP Offer 的格式就像下圖,里面有給新人分配的地址。
DHCP Server 仍然使用廣播地址作為目的地址,因?yàn)?,此時(shí)請求分配的新人還沒有自己的 IP 地址。如果一個(gè)局域網(wǎng)中有多個(gè) DHCP Server,這臺新機(jī)器會收到多個(gè) DHCP Offer。
它會選擇其中一個(gè) DHCP Offer,一般是最先到達(dá)的那個(gè),并且會向網(wǎng)絡(luò)發(fā)送一個(gè) DHCP Request 廣播數(shù)據(jù)表,包中包含客戶端的 MAC 地址、接受分配的 IP 地址、提供此 IP 的 DHCP 服務(wù)器地址等,并告訴所有的 DHCP Server 它將接受哪一臺服務(wù)器提供的 IP 地址,告訴其他 DHCP 服務(wù)器撤銷它們提供的 IP 地址,以便提供給下一個(gè) IP 請求分配者。新人廣播包格式如下:
此時(shí),由于還沒有得到 DHCP Server 的最后確認(rèn),新機(jī)器仍然使用 0.0.0.0 為源 IP 地址、255.255.255.255 為目標(biāo)地址進(jìn)行廣播。
當(dāng) DHCP Server 接收到新機(jī)器的 DHCP Request 之后,會廣播返回給新機(jī)器一個(gè) DHCP ACK 消息包,表明已經(jīng)接受新機(jī)器的選擇,并將這一 IP 地址分配信息和其他配置信息都放入該廣播包,發(fā)給新機(jī)器。DHCP ACK 格式如下:
新機(jī)器收到 DHCP ACK 后,會檢測分配的 IP 地址是否能夠適應(yīng),如果不能使用,它就會給 DHCP Server 發(fā)出 DHCP Decline 消息,通知 DHCP Server 禁用這個(gè) IP 地址,然后新機(jī)器就開始新的地址申請過程。
在新機(jī)器使用 IP 租期超過 50% 時(shí),DHCP Client 會以單播形式向 DHCP Server 發(fā)送 DHCP Request 報(bào)文來續(xù)租 IP 地址。如果 DHCP Client 成功收到 DHCP Server 發(fā)送的 DHCP ACK 報(bào)文,則按相應(yīng)時(shí)間延長 IP 地址租期;如果沒有收到 DHCP Server 發(fā)送的 DHCP ACK 報(bào)文,則 DHCP Client 繼續(xù)使用這個(gè) IP 地址。
在新機(jī)器使用 IP 租期超過 87.5% 時(shí),DHCP Client 會以廣播形式向 DHCP Server 發(fā)送 DHCPRequest 報(bào)文來續(xù)租 IP 地址。如果 DHCP Client 成功收到 DHCP Server 發(fā)送的 DHCP ACK 報(bào)文,則按相應(yīng)時(shí)間延長 IP 地址租期;如果沒有收到 DHCP Server 發(fā)送的 DHCP ACK 報(bào)文,則 DHCP Client 繼續(xù)使用這個(gè)IP地址,直到 IP 地址使用租期到期時(shí),DHCP Client 才會向 DHCP Server 發(fā)送 DHCP Release 報(bào)文來釋放這個(gè) IP 地址,并開始新的 IP 地址申請過程。
MAC 地址
在我們查詢 IP 地址的輸出結(jié)果中,有一行:
Link encap:Ethernet HWaddr 28:d2:44:ce:77:51
這個(gè)被稱為 MAC 地址,是一個(gè)網(wǎng)卡的物理地址,用十六進(jìn)制,6 個(gè) byte 表示。
MAC 地址是一個(gè)很容易讓人誤解的地址。因?yàn)?MAC 地址號稱全球唯一,不會存在有相同 MAC 地址的網(wǎng)卡。這就很容易讓我們想,既然全球唯一,那網(wǎng)絡(luò)通信直接用 MAC 地址不行嗎?為什么要加個(gè) IP 地址,多封裝一層,再去通信呢?
當(dāng)然是不行的。我們想把一個(gè)網(wǎng)絡(luò)包從一個(gè)地方傳到另一個(gè)地方,除了有確定的地址外,還需要有定位功能。就像你去廣州找博主一樣,我只告訴你我的身份證號,你能在廣州找到我嗎?這種尋找無異于大海撈針。但是如果我告訴你我的詳細(xì)地址,你就可以直接通過導(dǎo)航找到對應(yīng)的地址,然后再找到我。
IP 地址在一定程度上就承擔(dān)了詳細(xì)地址這種遠(yuǎn)程地位的功能。MAC 地址更像是身份證號,是一個(gè)唯一的標(biāo)識。它的唯一性設(shè)計(jì)是為了組網(wǎng)的時(shí)候,不同的網(wǎng)卡放在一個(gè)網(wǎng)絡(luò)里面,不用擔(dān)心沖突。
當(dāng)然,MAC 地址也有一定的定位功能。就像你來到了博主所在的辦公室,你可以在辦公室喊身份證號是 XXX 的是哪位?博主聽到了,就會站起來回答你。但是如果你在博主聽不到的地方喊,那肯定不會有人應(yīng)你。這就說明,MAC 地址的通信范圍比較小,僅僅局限在一個(gè)子網(wǎng)內(nèi)。
編輯:hfy
-
Linux
+關(guān)注
關(guān)注
87文章
11329瀏覽量
209975 -
MAC地址
+關(guān)注
關(guān)注
1文章
51瀏覽量
11773 -
局域網(wǎng)
+關(guān)注
關(guān)注
5文章
760瀏覽量
46330 -
網(wǎng)絡(luò)協(xié)議
+關(guān)注
關(guān)注
3文章
269瀏覽量
21585
發(fā)布評論請先 登錄
相關(guān)推薦
評論