2020-07-28 IP 基礎(chǔ)知識“全家桶”——「 IP 地址的基礎(chǔ)知識 」

來自公眾號:小林coding

在 TCP/IP 網(wǎng)絡(luò)通信時,為了保證能正常通信,每個設(shè)備都需要配置正確的 IP 地址,否則無法實現(xiàn)正常的通信。

IP 地址(IPv4 地址)由 32 位正整數(shù)來表示,IP 地址在計算機是以二進制的方式處理的。

而人類為了方便記憶采用了點分十進制的標記方式,也就是將 32 位 IP 地址以每 8 位為組,共分為 4 組,每組以「.」隔開,再將每組轉(zhuǎn)換成十進制。

點分十進制

那么,IP 地址最大值也就是


IP 地址最大值

也就說,最大允許 43 億臺計算機連接到網(wǎng)絡(luò)。

實際上,IP 地址并不是根據(jù)主機臺數(shù)來配置的,而是以網(wǎng)卡。像服務(wù)器、路由器等設(shè)備都是有 2 個以上的網(wǎng)卡,也就是它們會有 2 個以上的 IP 地址。

每塊網(wǎng)卡可以分配一個以上的IP地址

因此,讓 43 億臺計算機全部連網(wǎng)其實是不可能的,更何況 IP 地址是由「網(wǎng)絡(luò)標識」和「主機標識」這兩個部分組成的,所以實際能夠連接到網(wǎng)絡(luò)的計算機個數(shù)更是少了很多。

可能有的小伙伴提出了疑問,現(xiàn)在不僅電腦配了 IP, 手機、IPad 等電子設(shè)備都配了 IP 呀,照理來說肯定會超過 43 億啦,那是怎么能夠支持這么多 IP 的呢?
因為會根據(jù)一種可以更換 IP 地址的技術(shù) NAT,使得可連接計算機數(shù)超過 43 億臺。NAT 技術(shù)后續(xù)會進一步討論和說明。

IP 地址的分類

互聯(lián)網(wǎng)誕生之初,IP 地址顯得很充裕,于是計算機科學(xué)家們設(shè)計了分類地址。

IP 地址分類成了 5 種類型,分別是 A 類、B 類、C 類、D 類、E 類。

IP地址分類

上圖中黃色部分是分類號,用以區(qū)分 IP 地址類別。

什么是 A、B、C 類地址?
其中對于 A、B、C 類主要分為兩個部分,分別是網(wǎng)絡(luò)號和主機號。這很好理解,好比小GO是 A 小區(qū) 1 棟 101 號,你是 B 小區(qū) 1 棟 101 號。
我們可以用下面這個表格, 就能很清楚的知道 A、B、C 分類對應(yīng)的地址范圍、最大主機個數(shù)。

A、B、C 分類地址


A、B、C 分類地址最大主機個數(shù)是如何計算的呢?
最大主機個數(shù),就是要看主機號的位數(shù),如 C 類地址的主機號占 8 位,那么 C 類地址的最大主機個數(shù):

image

為什么要減 2 呢?
因為在 IP 地址中,有兩個 IP 是特殊的,分別是主機號全為 1全為 0的地址。
image

  • 主機號全為 1 指定某個網(wǎng)絡(luò)下的所有主機,用于廣播
  • 主機號全為 0指定某個網(wǎng)絡(luò)
    因此,在分配過程中,應(yīng)該去掉這兩種情況。

廣播地址用于什么?
廣播地址用于在同一個鏈路中相互連接的主機之間發(fā)送數(shù)據(jù)包
學(xué)校班級中就有廣播的例子,在準備上課的時候,通常班長會喊:“上課, 全體起立!”,班里的同學(xué)聽到這句話是不是全部都站起來了?這句話就有廣播的含義。
當(dāng)主機號全為 1 時,就表示該網(wǎng)絡(luò)的廣播地址。例如把 172.20.0.0/16二進制表示如下:
10101100.00010100.00000000.00000000
將這個地址的主機部分全部改為 1,則形成廣播地址:
10101100.00010100.11111111.11111111
再將這個地址用十進制表示,則為 172.20.255.255。

廣播地址可以分為本地廣播直接廣播兩種。

  • 在本網(wǎng)絡(luò)內(nèi)廣播的叫做本地廣播。例如網(wǎng)絡(luò)地址為 192.168.0.0/24 的情況下,廣播地址是 192.168.0.255 。因為這個廣播地址的 IP 包會被路由器屏蔽,所以不會到達 192.168.0.0/24 以外的其他鏈路上。
  • 在不同網(wǎng)絡(luò)之間的廣播叫做直接廣播。例如網(wǎng)絡(luò)地址為 192.168.0.0/24 的主機向 192.168.1.255/24 的目標地址發(fā)送 IP 包。收到這個包的路由器,將數(shù)據(jù)轉(zhuǎn)發(fā)給192.168.1.0/24,從而使得所有 192.168.1.1~192.168.1.254 的主機都能收到這個包(由于直接廣播有一定的安全問題,多數(shù)情況下會在路由器上設(shè)置為不轉(zhuǎn)發(fā))。


    本地廣播與直接廣播

什么是 D、E 類地址?
而 D 類和 E 類地址是沒有主機號的,所以不可用于主機 IP,D 類常被用于多播,E 類是預(yù)留的分類,暫時未使用。

D、E 分類地址


多播地址用于什么?
多播用于將包發(fā)送給特定組內(nèi)的所有主機
還是舉班級的栗子,老師說:“最后一排的同學(xué),上來做這道數(shù)學(xué)題。”,老師是指定的是最后一排的同學(xué),也就是多播的含義了。
由于廣播無法穿透路由,若想給其他網(wǎng)段發(fā)送同樣的包,就可以使用可以穿透路由的多播(組播)。

單播、廣播、多播通信

多播使用的 D 類地址,其前四位是 1110 就表示是多播地址,而剩下的 28 位是多播的組編號。
從 224.0.0.0 ~ 239.255.255.255 都是多播的可用范圍,其劃分為以下三類:

  • 224.0.0.0 ~ 224.0.0.255 為預(yù)留的組播地址,只能局域網(wǎng)中,路由器是不會進行轉(zhuǎn)發(fā)的
  • 224.0.1.0 ~ 238.255.255.255 為用戶可用的組播地址,可以用于 Internet 上
  • 239.0.0.0 ~ 239.255.255.255 為本地管理組播地址,可供內(nèi)部網(wǎng)在內(nèi)部使用,僅在特定的本地范圍內(nèi)有效

IP 分類的優(yōu)點
不管是路由器還是主機解析到一個 IP 地址時候,我們判斷其 IP 地址的首位是否為 0,為 0 則為 A 類地址,那么就能很快的找出網(wǎng)絡(luò)地址和主機地址。
其余分類判斷方式參考如下圖:

IP 分類判斷

所以,這種分類地址的優(yōu)點就是簡單明了、選路(基于網(wǎng)絡(luò)地址)簡單


IP 分類的缺點

  • 缺點一
    同一網(wǎng)絡(luò)下沒有地址層次,比如一個公司里用了 B 類地址,但是可能需要根據(jù)生產(chǎn)環(huán)境、測試環(huán)境、開發(fā)環(huán)境來劃分地址層次,而這種 IP 分類是沒有地址層次劃分的功能,所以這就缺少地址的靈活性。
  • 缺點二
    A、B、C類有個尷尬處境,就是不能很好的與現(xiàn)實網(wǎng)絡(luò)匹配。
    C 類地址能包含的最大主機數(shù)量實在太少了,只有 254 個,估計一個網(wǎng)吧都不夠用。
    而 B 類地址能包含的最大主機數(shù)量又太多了,6 萬多臺機器放在一個網(wǎng)絡(luò)下面,一般的企業(yè)基本達不到這個規(guī)模,閑著的地址就是浪費。
    這兩個缺點,都可以在 CIDR無分類地址解決。

無分類地址 CIDR

正因為 IP 分類存在許多缺點,所有后面提出了無分類地址的方案,即 CIDR。
這種方式不再有分類地址的概念,32 比特的 IP 地址被劃分為兩部分,前面是網(wǎng)絡(luò)號,后面是主機號。


怎么劃分網(wǎng)絡(luò)號和主機號的呢?
表示形式a.b.c.d/x,其中/x表示前 x 位屬于網(wǎng)絡(luò)號, x 的范圍是0 ~ 32,這就使得 IP 地址更加具有靈活性。
比如 10.100.122.2/24,這種地址表示形式就是 CIDR/24 表示前 24 位是網(wǎng)絡(luò)號,剩余的 8 位是主機號。

image.png

還有另一種劃分網(wǎng)絡(luò)號與主機號形式,那就是子網(wǎng)掩碼,掩碼的意思就是掩蓋掉主機號,剩余的就是網(wǎng)絡(luò)號。
將子網(wǎng)掩碼和 IP 地址按位計算 AND,就可得到網(wǎng)絡(luò)號。
image.png


為什么要分離網(wǎng)絡(luò)號和主機號?
因為兩臺計算機要通訊,首先要判斷是否處于同一個廣播域內(nèi),即網(wǎng)絡(luò)地址是否相同。如果網(wǎng)絡(luò)地址相同,表明接受方在本網(wǎng)絡(luò)上,那么可以把數(shù)據(jù)包直接發(fā)送到目標主機,
路由器尋址工作中,也就是通過這樣的方式來找到對應(yīng)的網(wǎng)絡(luò)號的,進而把數(shù)據(jù)包轉(zhuǎn)發(fā)給對應(yīng)的網(wǎng)絡(luò)內(nèi)。

IP地址的網(wǎng)絡(luò)號


怎么進行子網(wǎng)劃分?
在上面我們知道可以通過子網(wǎng)掩碼劃分出網(wǎng)絡(luò)號和主機號,那實際上子網(wǎng)掩碼還有一個作用,那就是劃分子網(wǎng)。
子網(wǎng)劃分實際上是將主機地址分為兩個部分:子網(wǎng)網(wǎng)絡(luò)地址子網(wǎng)主機地址。形式如下:

image.png

由于子網(wǎng)網(wǎng)絡(luò)地址被劃分成 2 位,那么子網(wǎng)地址就有 4 個,分別是 00、01、10、11,具體劃分如下圖:
image.png

劃分后的 4 個子網(wǎng)如下表格:
image.png

公有 IP 地址與私有 IP 地址

在 A、B、C 分類地址,實際上有分公有 IP 地址和 私有 IP 地址。


image.png

平時我們辦公室、家里、學(xué)校用的 IP 地址,一般都是私有 IP 地址。因為這些地址允許組織內(nèi)部的 IT 人員自己管理、自己分配,而且可以重復(fù)。因此,你學(xué)校的某個私有 IP 地址和我學(xué)校的可以是一樣的。
就像每個小區(qū)都有自己的樓編號和門牌號,你小區(qū)家可以叫 1 棟 101 號,我小區(qū)家也可以叫 1 棟 101,沒有任何問題。但一旦出了小區(qū),就需要帶上中山路 666 號(公網(wǎng) IP 地址),是國家統(tǒng)一分配的,不能兩個小區(qū)都叫中山路 666。
所以,公有 IP 地址是有個組織統(tǒng)一分配的,假設(shè)你要開一個博客網(wǎng)站,那么你就需要去申請購買一個公有 IP,這樣全世界的人才能訪問。并且公有 IP 地址基本上要在整個互聯(lián)網(wǎng)范圍內(nèi)保持唯一。


公有 IP 地址與私有 IP 地址

公有 IP 地址由誰管理呢?
私有 IP 地址通常是內(nèi)部的 IT 人員值管理,公有 IP 地址是由ICANN組織管理,中文叫「互聯(lián)網(wǎng)名稱與數(shù)字地址分配機構(gòu)」。
IANA 是 ICANN 的其中一個機構(gòu),它負責(zé)分配互聯(lián)網(wǎng) IP 地址,是按州的方式層層分配。

image.png

  • ARIN 北美地區(qū)
  • LACNIC 拉丁美洲和一些加勒比群島
  • RIPE NCC 歐洲、中東和中亞
  • AfriNIC 非洲地區(qū)
  • APNIC 亞太地區(qū)
    其中,在中國是由 CNNIC 的機構(gòu)進行管理,它是中國國內(nèi)唯一指定的全局 IP 地址管理的組織。

IP 地址與路由控制

IP地址的網(wǎng)絡(luò)地址這一部分是用于進行路由控制。
路由控制表中記錄著網(wǎng)絡(luò)地址與下一步應(yīng)該發(fā)送至路由器的地址,在主機和路由器上都會有各自的路由器控制表。
在發(fā)送 IP 包時,首先要確定 IP 包首部中的目標地址,再從路由控制表中找到與該地址具有相同網(wǎng)絡(luò)地址的記錄,根據(jù)該記錄將 IP 包轉(zhuǎn)發(fā)給相應(yīng)的下一個路由器。如果路由控制表中存在多條相同網(wǎng)絡(luò)地址的記錄,就選擇相同位數(shù)最多的網(wǎng)絡(luò)地址,也就是最長匹配。
下面以下圖的網(wǎng)絡(luò)鏈路作為例子說明:

IP 地址與路由控制

  1. 主機 A 要發(fā)送一個 IP 包,其源地址是10.1.1.30和目標地址是 10.1.2.10,由于沒有在主機 A 的路由表找到與目標地址10.1.2.10 的網(wǎng)絡(luò)地址,于是把包被轉(zhuǎn)發(fā)到默認路由(路由器 1
  2. 路由器 1 收到 IP 包后,也在路由器1 的路由表匹配與目標地址相同的網(wǎng)絡(luò)地址記錄,發(fā)現(xiàn)匹配到了,于是就把 IP 數(shù)據(jù)包轉(zhuǎn)發(fā)到了 10.1.0.2這臺路由器2
  3. 路由器2收到后,同樣對比自身的路由表,發(fā)現(xiàn)匹配到了,于是把 IP 包從路由器210.1.2.1 這個接口出去,最終經(jīng)過交換機把 IP 數(shù)據(jù)包轉(zhuǎn)發(fā)到了目標主機

環(huán)回地址是不會流向網(wǎng)絡(luò)
環(huán)回地址是在同一臺計算機上的程序之間進行網(wǎng)絡(luò)通信時所使用的一個默認地址。
計算機使用一個特殊的 IP 地址 127.0.0.1 作為環(huán)回地址,與該地址具有相同意義的是一個叫做localhost 的主機名。
使用這個 IP 或主機名時,數(shù)據(jù)包不會流向網(wǎng)絡(luò)。

IP 分片與重組

每種數(shù)據(jù)鏈路的最大傳輸單元 MTU 都是不相同的,如 FDDI 數(shù)據(jù)鏈路 MTU 4352、以太網(wǎng)的 MTU 是 1500 字節(jié)等。
每種數(shù)據(jù)鏈路的 MTU 之所以不同,是因為每個不同類型的數(shù)據(jù)鏈路的使用目的不同。使用目的不同,可承載的 MTU 也就不同。
其中,我們最常見數(shù)據(jù)鏈路是以太網(wǎng),它的 MTU 是 1500 字節(jié)。
那么當(dāng) IP 數(shù)據(jù)包大小大于 MTU 時, IP 數(shù)據(jù)包就會被分片。
經(jīng)過分片之后的 IP 數(shù)據(jù)報在被重組的時候,只能由目標主機進行,路由器是不會進行重組的。
假設(shè)發(fā)送方發(fā)送一個 4000 字節(jié)的大數(shù)據(jù)報,若要傳輸在以太網(wǎng)鏈路,則需要把數(shù)據(jù)報分片成 3 個小數(shù)據(jù)報進行傳輸,再交由接收方重組成大數(shù)據(jù)報。

分片與重組

在分片傳輸中,一旦某個分片丟失,則會造成整個 IP 數(shù)據(jù)報作廢,所以 TCP 引入了 MSS 也就是在 TCP 層進行分片不由 IP 層分片,那么對于 UDP 我們盡量不要發(fā)送一個大于 MTU 的數(shù)據(jù)報文。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

友情鏈接更多精彩內(nèi)容