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