banner
leaf

leaf

It is better to manage the army than to manage the people. And the enemy.
follow
substack
tg_channel

IP的知識

一、對 IP 地址

基本的認識 IP 地址

在 TCP/IP 地址 參考模型中處於第三層,也就是網絡層。

網絡層的主要作用是:實現主機與主機之間的通信,也叫點對點(end to end)通信。

image

  • 網絡層與數據鏈路層有什麼關係呢? 有的小夥伴分不清 IP 地址(網絡層) 和 MAC (數據鏈路層)之間的區別和關係。

其實很容易區分,在上面我們知道 IP 地址 的作用是主機之間通信用的,而 MAC 的作用則是實現「直連」的兩個設備之間通信,而 IP 地址 則負責在「沒有直連」的兩個網絡之間進行通信傳輸。

舉個生活的栗子,小林要去一個很遠的地方旅行,制定了一個行程表,其間需先後乘坐飛機、地鐵、公交車才能抵達目的地,為此小林需要買飛機票,地鐵票等。

飛機票和地鐵票都是去往特定的地點的,每張票只可以在某一限定區間內移動,此處的「區間內」就如同通信網絡中數據鏈路。

在區間內移動相當於數據鏈路層,充當區間內兩個節點傳輸的功能,區間內的出發點好比源 MAC 地址,目標地點好比目的 MAC 地址。

整個旅遊行程表就相當於網絡層,充當遠程定位的功能,行程的開始好比源 IP 地址,行程的終點好比目的 IP 地址。

image

如果小林只有行程表而沒有車票,就無法搭乘交通工具到達目的地。相反,如果除了車票而沒有行程表,恐怕也很難到達目的地。因為小林不知道該坐什麼車,也不知道該在哪裡換乘。

因此,只有兩者兼備,既有某個區間的車票又有整個旅行的行程表,才能保證到達目的地。與此類似,計算機網絡中也需要「數據鏈路層」和「網絡層」這個分層才能實現向最終目標地址的通信。

還有重要一點,旅行途中我們雖然不斷變化了交通工具,但是旅行行程的起始地址和目的地址始終都沒變。

其實,在網絡中數據包傳輸中也是如此,源 IP 地址和目標 IP 地址在傳輸過程中是無法變化的(前提:沒有使用 NAT 網絡),只有源 MAC 地址和目標 MAC 一直在變化。

二、IPv4 協議 在 TCP/IP 地址 網絡通信時,為了保證能正常通信,每個設備都需要配置正確的 IP 地址,否則無法實現正常的通信。

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

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

image

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

image

理論上,最大允許 43 億台計算機連接到網絡。 實際上,IP 地址並不是根據主機台數來配置的。像伺服器、路由器等設備都是有 2 個以上的網卡,也就是它們會有 2 個以上的 IP 地址。

image

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

可能有的小夥伴提出了疑問,現在不僅電腦配了 IP 地址, 手機、平板 等電子設備都配了 IP 地址 呀,照理來說肯定會超過 43 億啦,那是怎麼能夠支持這麼多 IP 地址 的呢?

因為會根據一種可以更換 IP 地址的技術 NAT,使得可連接計算機數超過 43 億台。 NAT 技術後續會進一步討論和說明。

IP 地址的分類 互聯網誕生之初,IP 地址顯得很充裕,於是計算機科學家們設計了分類地址。

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

image

上圖中黃色部分為分類號,用以區分 IP 地址類別。

什麼是 A、B、C 類地址?

其中對於 A、B、C 類主要分為兩個部分,分別是網絡號和主機號。這很好理解,好比小林是 A 小區 1 棟 101 號,你是 B 小區 1 棟 101 號。

我們可以用下面這個表格, 就能很清楚的知道 A、B、C 分類對應的地址範圍、最大主機個數。

image

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

image

主機號全為 1 指定某個網絡下的所有主機,用於廣播 主機號全為 0 指定某個網絡 因此,在分配過程中,應該去掉這兩種情況。

廣播地址有什麼用?

廣播地址用於在同一個鏈路中相互連接的主機之間發送數據包。

學校班級中就有廣播的例子,在準備上課的時候,通常班長會喊:“上課, 全體起立!”,班裡的同學聽到這句話是不是全部都站起來了?這個句話就有廣播的含義。

當主機號全為 1 時,就表示該網絡的廣播地址。例如把 172.20.0.0/16 用二進制表示如下:

  10101100.00010100.00000000.00000000 

將這個地址的主機部分全部改為 1,則形成廣播地址:

 10101100.00010100.11111111.11111111 

再將這個地址用十進制表示,則為 172.20.255.255。

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

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

image

什麼是 D、E 類地址?

D 類和 E 類地址是沒有主機號的,不可用於主機 IP 地址。D 類常被用於多播,E 類是預留的分類,暫時未使用

image

多播地址用於什麼?

多播用於將包發送給特定組內的所有主機。

還是舉班級的栗子,老師說:“最後一排的同學,上來做這道數學題。”,老師指定的是最後一排的同學,也就是多播的含義了。

由於廣播無法穿透路由,若想給其他網段發送同樣的包,就可以使用可以穿透路由的多播

image

  • 多播使用的 D 類地址,其前四位是 1110 就表示是多播地址,而剩下的 28 位是多播的組編號。

從 224.0.0.0 ~ 239.255.255.255 都是多播的可用範圍,其劃分為以下三類:

224.0.0.0 ~ 224.0.0.255 為預留的組播地址,只能在局域網中,路由器是無法進行轉發的。 224.0.1.0 ~ 238.255.255.255 為用戶可用的組播地址,可以用於 Internet 上。 239.0.0.0 ~ 239.255.255.255 為本地管理組播地址,可供內部網在內部使用,僅在特定的本地範圍內有效。 IP 地址 分類的優點

不管是路由器還是主機解析到一個 IP 地址時,我們判斷其 IP 地址的首位是否為 0,為 0 則為 A 類地址,那麼就能很快的找出網絡地址和主機地址。

其餘分類判斷方式參考如下圖:

image

所以,這種分類地址的優點就是簡單明瞭、選路(基於網絡地址)簡單。

IP 地址 分類的缺點

缺點一 同一網絡下沒有地址層次,比如一個公司裡用了 B 類地址,但是可能需要根據生產環境、測試環境、開發環境來劃分地址層次,而這種 IP 地址 分類是沒有地址層次劃分的功能,所以這就缺少地址的靈活性。

缺點二 A、B、C 類有個尷尬處境,就是不能很好的與現實網絡匹配。

C 類地址能包含的最大主機數量實在太少了,只有 254 個,估計一個網吧都不夠用。

而 B 類地址能包含的最大主機數量又太多了,6 萬多台機器放在一個網絡下面,一般的企業基本達不到這個規模,閒著的地址就是浪費。

這兩個缺點,都可以在 CIDR (無類別域間路由) 解決。

無類別域間路由 (CIDR) 正因為 IP 地址 分類存在許多缺點,所以後面提出了無分類地址的方案,即 CIDR。

這種方式不再有分類地址的概念,32 比特的 IP 地址被劃分為兩部分,前面是網絡號,後面是主機號。

怎麼劃分網絡號和主機號的呢?

表示形式 a.b.c.d/x,其中 /x 表示前 x 位屬於網絡號, x 的範圍是 0 ~ 32,這就使得 IP 地址更加具有靈活性。

比如 10.100.122.2/24,這種地址表示形式就是 CIDR,/24 表示前 24 位是網絡號,剩余的 8 位是主機號

image

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

image

為什麼要分離網絡號和主機號?

因為兩台計算機要通訊,首先要判斷是否處於同一個廣播域內,即網絡地址是否相同。如果網絡地址相同,表明接受方在本網絡上,那麼可以把數據包直接發送到目標主機。

路由器尋址工作中,也就是通過這樣的方式來找到對應的網絡號的,進而把數據包轉發給對應的網絡內

image

怎麼進行子網劃分?

在上面我們知道可以通過子網掩碼劃分出網絡號和主機號,那實際上子網掩碼還有一個作用,那就是劃分子網。

子網劃分實際上是將主機地址分為兩部分:子網網絡地址和子網主機地址。形式如下:

image

未做子網劃分的 IP 地址:網絡地址+主機地址 做子網劃分後的 IP 地址:網絡地址+(子網網絡地址+子網主機地址) 假設對 C 類地址進行子網劃分,網絡地址 192.168.1.0,使用子網掩碼 255.255.255.192 對其進行子網劃分。 C 類地址中前 24 位是網絡號,最後 8 位是主機號,根據子網掩碼可知從 8 位主機號中借用 2 位作為子網號。

image

於子網網絡地址被劃分成 2 位,那麼子網地址就有 4 個,分別是 00、01、10、11,具體劃分如下圖:

image

劃分後的 4 個子網如下表格:

image

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

image

平時我們辦公室、家裡、學校用的 IP 地址,一般都是私有 IP 地址。因為這些地址允許組織內部的 IT 人員自己管理、自己分配,而且可以重複。因此,你學校的某個私有 IP 地址和我學校的可以是相同的。

就像每個小區都有自己的樓編號和門牌號,你小區家可以叫 1 棟 101 號,我小區家也可以叫 1 棟 101,沒有任何問題。但一旦出了小區,就需要帶上中山路 666 號(公網 IP 地址),是國家統一分配的,不能兩個小區都叫中山路 666。

所以,公有 IP 地址是由個組織統一分配的,假設你要開一個博客網站,那麼你就需要去申請購買一個公有 IP 地址,這樣全世界的人才能訪問。並且公有 IP 地址基本上要在整個互聯網範圍內保持唯一

image

公有 IP 地址由誰管理呢?

私有 IP 地址通常是內部的 IT 人員管理,公有 IP 地址是由 ICANN 組織管理,中文叫「互聯網名稱與數字地址分配機構」。

IANA 是 ICANN 的其中一個機構,它負責分配互聯網 IP 地址,是按洲的方式層層分配。

image

ARIN 北美地區 LACNIC 拉丁美洲和一些加勒比群島 RIP 地址 E NCC 歐洲、中東和中亞 AFRINIC 非洲地區 APNIC 亞太地區 其中,在中國是由 CNNIC 的機構進行管理,它是中國國內唯一指定的全局 IP 地址管理的組織。 IP 地址與路由控制 IP 地址的網絡地址這一部分用於進行路由控制。

路由控制表中記錄著網絡地址與下一步應該發送至路由器的地址。在主機和路由器上都會有各自的路由器控制表。

在發送 IP 包時,首先要確定 IP 包首部中的目標地址,再從路由控制表中找到與該地址具有相同網絡地址的記錄,根據該記錄將 IP 包轉發給相應的下一個路由器。如果路由控制表中存在多條相同網絡地址的記錄,就選擇相同位數最多的網絡地址,也就是最長匹配。

下面以下圖的網絡鏈路作為例子說明:

image

主機 A 要發送一個 IP 包,其源地址是 10.1.1.30 和目標地址是 10.1.2.10,由於沒有在主機 A 的路由表找到與目標地址 10.1.2.10 相同的網絡地址,於是包被轉發到默認路由(路由器 1 ) 路由器 1 收到 IP 包後,也在路由器 1 的路由表匹配與目標地址相同的網絡地址記錄,發現匹配到了,於是就把 IP 數據包轉發到了 10.1.0.2 這台路由器 2 路由器 2 收到後,同樣對比自身的路由表,發現匹配到了,於是把 IP 包從路由器 2 的 10.1.2.1 這個接口出去,最終經過交換機把 IP 數據包轉發到了目標主機 本機使用一個特殊的 IP 地址 127.0.0.1, 稱為環回地址。與該地址具有相同意義的是一個叫做 localhost 的主機名。使用這個 IP 或主機名時,數據包不會流向網絡。

IP 的分片與重組 每種數據鏈路的最大傳輸單元 (MTU) 都是不相同的,如 FDDI 數據鏈路 MTU 為 4352、以太網的 MTU 是 1500 字節等。

每種數據鏈路的 MTU 之所以不同,是因為每個不同類型的數據鏈路的使用目的不同。使用目的不同,可承載的 MTU 也就不同。

其中,我們最常見數據鏈路是以太網,它的 MTU 是 1500 字節。

那麼當 IP 數據包大小大於 MTU 時, IP 數據包就會被分片。

經過分片之後的 IP 數據包在被重組的時候,只能由目標主機進行,路由器是無法進行重組的。

假設發送方發送一個 4000 字節的大數據包,若要傳輸在以太網鏈路,則需要把數據包分片成 3 個小數據包進行傳輸,再交由接收方重組成大數據包

image

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

IPv6 地址 最後再來談談 IPv6.

IPv4 的地址是 32 位的,大約可以提供 42 億個地址,但是早在 2011 年 IPv4 地址就已經被分配完了。

但是 IPv6 的地址是 128 位的,這可分配的地址數量是大的驚人,据說 IPv6 可以保證地球上的每粒沙子都能被分配到一個 IP 地址。

但 IPv6 除了有更多的地址之外,還有更好的安全性和擴展性,說簡單點就是 IPv6 相比於 IPv4 能帶來更好的網絡體驗。

但是因為 IPv4 和 IPv6 不能相互兼容,所以不但要我們電腦、手機之類的設備支持,還需要網絡運營商對現有的設備進行升級,所以這可能是 IPv6 普及率比較慢的一個原因。

IPv6 的亮點 IPv6 不僅僅只是可分配的地址變多了,它還有非常多的亮點。

IPv6 可自動配置,即使沒有 DHCP 伺服器也可以實現自動分配 IP 地址,真是便捷到即插即用啊。 IPv6 包頭包首部長度採用固定的值 40 字節,去掉了包頭校驗和,簡化了首部結構,減輕了路由器負荷,大大提高了傳輸的性能。 IPv6 有應對偽造 IP 地址的網絡安全功能以及防止線路竊聽的功能,大大提升了安全性。 ... IPv6 地址的標識方法 IPv4 地址長度共 32 位,是以每 8 位作為一組,並用點分十進制的表示方式。

IPv6 地址長度是 128 位,是以每 16 位作為一組,每組用冒號 「:」 隔開。

image

如果出現連續的 0 時還可以將這些 0 省略,並用兩個冒號 「::」隔開。但是,一個 IP 地址中只允許出現一次兩個連續的冒號。

image

Pv6 地址的結構 IPv6 類似 IPv4,也是通過 IP 地址的前幾位標識 IP 地址的種類。

IPv6 的地址主要有以下類型地址:

單播地址,用於一對一的通信 組播地址,用於一對多的通信 任播地址,用於通信最近的節點,最近的節點是由路由協議決定 沒有廣播地址

image

IPv6 單播地址類型 對於一對一通信的 IPv6 地址,主要劃分了三類單播地址,每類地址的有效範圍都不同。

在同一鏈路單播通信,不經過路由器,可以使用鏈路本地單播地址,IPv4 沒有此類型 在內網裡單播通信,可以使用唯一本地地址,相當於 IPv4 的私有 IP 在互聯網通信,可以使用全局單播地址,相當於 IPv4 的公有 IP

image

載入中......
此文章數據所有權由區塊鏈加密技術和智能合約保障僅歸創作者所有。