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