IP 基本認識
在之前的章節中,我們已經詳細介紹了應用層和傳輸層的相關概念和原理,瞭解了程式之間如何進行可靠的資料傳輸。我們知道,傳輸層的頭部包含了程式所使用的埠資訊,這是為了確保資料能夠正確地傳遞到目標程式。今天,我們將進一步探討網路層的IP協議,以瞭解主機之間如何進行通訊。
在TCP/IP參考模型中,IP協議位於第三層,即網路層。網路層的主要功能是實現主機與主機之間的通訊,也被稱為點對點(end to end)通訊。網路層透過IP地址來標識不同的主機,它負責將資料包從源主機傳輸到目標主機。IP協議還具有路由選擇的功能,它透過查詢路由表來確定最佳路徑,確保資料能夠正確快速地傳輸到目標主機。因此,網路層是整個TCP/IP網路體系中至關重要的一層,它為主機之間的通訊提供了基礎支援。
網路層和資料鏈路層在通訊中扮演著不同的角色,它們之間有著密切的關係。IP協議(網路層)和MAC地址(資料鏈路層)都是實現資料傳輸的關鍵要素。
有些小夥伴可能會對IP(位於網路層)和MAC(位於資料鏈路層)之間的區別和關係感到困惑。
其實很容易區分,網路層(IP協議)的主要作用是在不同的網路之間進行通訊傳輸。它透過使用IP地址來標識不同的主機和網路,負責將資料包從源主機傳輸到目標主機。網路層還負責路由選擇,即根據路由表選擇最佳路徑,確保資料能夠快速有效地傳輸到目標主機。
而資料鏈路層(MAC地址)則是在直接相連的兩個裝置之間進行通訊的關鍵。它負責將資料包從一個節點傳輸到另一個節點,透過實體地址(MAC地址)來標識不同的裝置。資料鏈路層確保了在同一個網路中,資料能夠正確地從源裝置傳遞到目標裝置。
可以用一個旅行行程的例子來形象地解釋網路層和資料鏈路層的關係。假設小雨要去一個很遠的地方旅行,他的行程表相當於網路層,它規劃了整個旅行的路線和目的地。而飛機票和地鐵票則相當於資料鏈路層,它們只在特定的區間內有效,負責將小林從一個地點傳輸到下一個地點。在區間內移動就像是資料鏈路層,在源地址和目標地址之間傳輸資料。整個行程表相當於網路層,它提供了整個旅行的定位和指導,就像IP地址一樣。行程的起點和終點分別對應源IP和目標IP地址。
如果小雨只有行程表而沒有車票,他將無法找到適合的交通工具來到達目的地。反之亦然,如果他只有車票而沒有行程表,他也很難知道應該搭乘哪種交通工具以及何時換乘。
因此,只有同時具備某個區間的車票和整個旅行的行程表,才能確保成功到達目的地。類似地,在計算機網路中,需要同時存在資料鏈路層和網路層分層,才能實現與最終目標地址的通訊。
另外,旅行途中雖然交通工具可能不斷變化,但旅行的起始地址和目的地址始終保持不變。在網路資料包傳輸中,也是如此,源IP地址和目標IP地址在傳輸過程中不會改變,只有源MAC地址和目標MAC地址會不斷變化。
IP 地址的基礎知識
在 TCP/IP 網路通訊中,為了確保正常通訊,每個裝置都需要正確配置 IP 地址。否則,通訊將無法實現。IP 地址(IPv4 地址)使用32位正整數表示,並在計算機中以二進位制形式處理。為了方便人類記憶,IP 地址採用點分十進位制標記方式。即將32位IP地址分為4組,每組8位,用點號分隔,並將每組轉換為十進位制形式。
那麼,IP 地址最大值也就是
當然,最大允許的43億臺計算機連線到網路是基於IP地址的可用範圍。實際上,IP地址並不是按照主機臺數來配置的,而是按照網路卡來配置的。像伺服器、路由器等裝置通常有2個或更多的網路卡,因此它們會有2個或更多的IP地址。
因此,實際上並不可能讓43億臺計算機全部連線到網路,更何況IP地址由"網路標識"和"主機標識"兩個部分組成,這意味著能夠連線到網路的計算機數量更少。
有些人可能會問,現在不僅計算機配備了IP地址,手機、平板等電子裝置也都有IP地址,那麼連線到網路的裝置數量肯定會超過43億,那麼網路是如何支援這麼多的IP地址呢?
這是因為使用了一種稱為NAT(Network Address Translation,網路地址轉換)的技術,透過NAT技術可以實現IP地址的更換。這樣就使得可連線的計算機數量超過了43億臺。NAT技術將在後續的討論中進一步解釋和說明。
IP 地址的分類
網際網路誕生之初,IP 地址資源相對較為充裕,為了更好地管理和分配這些地址,電腦科學家們設計了基於分類的 IP 地址方案。
根據這個方案,將 IP 地址分為了五種不同的型別,分別是 A 類、B 類、C 類、D 類和 E 類。這些分類根據地址的位數分配方式和網路規模進行了劃分。
當我們談論A、B、C類地址時,主要涉及到網路號和主機號兩個部分。這個概念可以透過類比來更好地理解,就像我們住在不同的小區一樣。比如,小雨住在A小區8棟101號,而你住在B小區1棟101號。為了更清楚地瞭解A、B、C類地址的分類和範圍,我們可以透過下面這個圖片來了解每個分類所對應的地址範圍和最大主機個數。
在標記網路IP地址時,最大值為255是因為IP地址中的每個欄位是一個8位二進位制數,因此範圍是從0到255,共256個可能的取值。IP地址的每個欄位代表了一個位元組,也就是8位二進位制數,所以最大值是2的8次方減1,即255。
對於A、B、C類地址,最大主機個數是根據主機號的位數來計算的。以C類地址為例,主機號佔據了8位。由於二進位制的8位能表示的最大數值是255(0到255共256個數值),因此C類地址的最大主機個數就是254個。
為什麼要減 2 呢?
因為在 IP 地址中,有兩個 IP 是特殊的,分別是主機號全為 1 和 全為 0 地址。
主機號全為1時,表示該網路下的所有主機,用於進行廣播操作。而主機號全為0時,表示指定某個網路。
除了A、B、C類地址之外,還有D類和E類地址。D類地址常被用於多播操作,用於將資料同時傳送給多個主機。而E類地址是預留的地址分類,暫時未被使用。
IP 分類的優點
不論是路由器還是主機,在解析一個IP地址時,我們可以透過判斷其首位是否為0來確定其分類。如果首位為0,則為A類地址,這樣我們就能快速找到網路地址和主機地址。對於其他分類,我們可以參考如下圖所示的判斷方式:
因此,這種分類地址的優點在於其簡單明瞭的特點,使得選路(基於網路地址)變得更加簡單。透過對IP地址的分類,我們可以更快速地確定網路地址和主機地址,從而更方便地進行網路通訊和路由選擇。這種簡單的分類方式為網路管理和路由器的操作提供了便利和效率。
IP地址分類的缺點之一是缺乏地址層次性。例如,一個公司可能需要根據生產環境、測試環境和開發環境來劃分地址層次,但是傳統的IP分類方式並沒有提供地址層次劃分的功能,因此缺少了靈活性。
另一個缺點是A、B、C類地址在現實網路中無法很好地匹配。C類地址能夠包含的最大主機數量太少,僅有254個,這對於像網咖這樣的場所來說顯然不夠使用。而B類地址能夠包含的最大主機數量又太多,超過6萬臺機器,一般的企業很難達到這個規模,這樣就會導致地址的浪費。
這兩個缺點可以透過CIDR(無分類地址)來解決。CIDR使用可變長度子網掩碼(VLSM),使得網路劃分更加靈活和精確,可以根據實際需要分配合適大小的地址塊,避免了傳統IP地址分類的缺點。
無分類地址 CIDR
正因為IP地址分類存在許多不足之處,因此提出了無分類地址CIDR的方案。CIDR不再使用分類地址的概念,而是將32位的IP地址劃分為網路號和主機號兩部分,前面是網路號,後面是主機號。
怎麼劃分網路號和主機號的呢?
CIDR的表示形式為a.b.c.d/x,其中/x表示前x位屬於網路號,x的範圍是0~32,這使得IP地址更加靈活。例如,10.100.122.2/24表示CIDR的地址形式,其中/24表示前24位是網路號,剩餘的8位是主機號。最後的.2只是一個簡單的舉例,你也可以將其寫成10.100.122.0/24,意思是相同的。
除了CIDR的形式外,還有一種劃分網路號和主機號的方式是使用子網掩碼。子網掩碼的作用是將主機號掩蓋掉,只留下網路號。
使用子網掩碼時,可以將子網掩碼和IP地址按位計算與操作,從而得到網路號。計算結果即為網路號的值。子網掩碼中的1表示對應位是網路號,0表示對應位是主機號。
為什麼要分離網路號和主機號?
分離網路號和主機號的目的是為了在計算機通訊時能夠判斷是否處於同一個廣播域內,也就是判斷網路地址是否相同。這樣可以更有效地進行資料包的傳輸和路由選擇。當兩臺計算機要進行通訊時,首先需要根據網路地址來判斷它們是否處於同一個廣播域內。如果兩臺計算機的網路地址相同,即網路號相同,那麼它們就處於同一個網路中。在這種情況下,資料包可以直接傳送到目標主機,而不需要經過路由器的轉發。
總結
在本文中,我們深入瞭解了IP協議和IP地址的基本知識。
首先,我們瞭解了IP協議在TCP/IP參考模型中的位置和作用。IP協議位於網路層,負責實現主機之間的通訊。它透過IP地址來標識不同的主機,同時具有路由選擇的功能,確保資料能夠正確快速地傳輸到目標主機。
然後,我們學習了IP地址的基礎知識。IP地址是使用32位二進位制數表示的,為了方便記憶,採用點分十進位制標記方式。IP地址分為A、B、C、D、E五類,其中A、B、C類地址用於主機與主機之間的通訊,D類地址用於多播操作,E類地址是預留的。
此外,我們還了解到IP地址的分類存在一些缺點,比如缺乏地址層次性和地址浪費。為了解決這些問題,引入了無分類地址CIDR的概念,它使用可變長度子網掩碼,使得網路劃分更加靈活和精確。
總的來說,IP協議和IP地址是計算機網路通訊中非常重要的概念,瞭解它們的基本知識對於理解網路通訊原理和進行網路配置非常有幫助。