IP地址的分類
整個的網際網路就是一個單一的、抽象的網路。IP地址就是給網際網路上的每一個主機(或路由器)的每一個介面分配一個在全世界範圍內唯一的32位的標識符。
所謂分類的IP地址,就是將IP地址劃分為若干固定類,每一類地址都由兩個固定長度的欄位組成,其中一個欄位是網路號 net-id,它標誌主機(或路由器)所串連到的網路,一個網路號在整個網際網路範圍內必須是唯一的。而另一個欄位則是主機號 host-id,它標誌該主機(或路由器),一個主機號在它前面的網路號所指明的網路範圍內必須是唯一的。由此可見,一個IP地址在整個網際網路範圍內是唯一的。
由於一個路由器至少應當串連到兩個網路(這樣它才能將 IP 資料報從一個網路轉寄到另一個網路),因此一個路由器至少應當有兩個不同的 IP 位址。
用轉寄站或橋接器串連起來的若干個區域網路仍為一個網路,因此這些區域網路都具有同樣的網路號。
路由器只根據目的站的IP 位址的網路號進行路由選擇。
兩級的 IP 位址可以記為:
IP 位址 ::= { <網路號>, <主機號>}
中的A類、B類、C類地址都是單播地址(一對一通訊),是最常用的。
網路號欄位的最前面有1-4位的類別位,A類、B類、C類地址的類別位分別為0、10、110。
為了提高可讀性,我們常常把32位的IP地址中的每8位用其等效的十進位數字表示。
A類地址的網路號欄位佔一個位元組,只有7位可供使用(第一位已固定為0),但是可指派的網路號是126個(27-2),減2的原因:第一,IP地址中全為0的地址是個保留地址,表示“本網路”;第二,網路號為127(01111111)保留作為本地軟體環回測試本主機的進程間的通訊。
A類地址的主機號佔3位元組,因此每一個A類網路中的最大主機數是224-2。減2的原因:第一,全為0的主機號欄位表示該IP地址是本主機所串連到的單個網路地址,第二,全為1的主機號欄位表示該網路上的所有主機。
B類地址的網路號欄位有2位元組,但是前兩位已經固定為10,只剩下14位可以進行分配,因為前面兩位是10,不會出現全為0或全為1的網路號,但實際上,B類網路地址128.0.0.0是不指派的。所以最大網路數為214-1。最大主機數為216-2。
C類地址有3位元組的網路號欄位,前三位固定位110,還有21位可以進行分配。但實際上192.0.0.0是不指派的,因此C類地址可指派的網路總數為221-1,最大主機數為28-2。
IP地址與硬體地址
硬體地址是資料連結層和物理層使用的地址,而IP地址是網路層和以上各層使用的地址,是一種邏輯地址。
發送資料時,資料從高層下到地層,然後才到通訊鏈路上傳輸。使用IP地址的IP資料報一旦交給了資料連結層,就被封裝成了MAC幀。MAC幀在傳送時使用的源地址和目的地址都是硬體地址,這兩個硬體地址都寫在MAC幀的首部。
串連在通訊鏈路上的裝置在接受MAC幀時,其根據是MAC幀首部中的硬體地址。在資料連結層看不見隱藏在MAC幀的資料中的IP地址。只有在剝去了MAC幀的首部和尾部後把MAC層的資料上交給網路層後,網路層才能在IP資料報的首部中找到源IP地址和目的IP地址。
劃分子網
一個擁有許多物理網路的單位,可將所屬的物理網路劃分為若干個子網(subnet)。劃分子網純屬一個單位內部的事情。單位對外仍然表現為一個網路。
劃分子網的方法是從主機號借用若干個位作為子網號 subnet-id,而主機號 host-id 也就相應減少了若干個位。於是兩級IP地址在本單位內部就變為三級IP地址:網路號、子網號和主機好。
IP地址 ::= {<網路號>, <子網號>, <主機號>}
凡是從其他網路發送給本單位某個主機的 IP資料報,仍然是根據 IP 資料報的目的網路號 net-id,先找到串連在本單位網路上的路由器。然後此路由器在收到 IP 資料報後,再按目的網路號 net-id 和子網號 subnet-id 找到目的子網。最後就將 IP 資料報直接交付目的主機。
下面通過一個例子來展示劃分子網的方法與效果。
表示某單位擁有一個B類IP地址,網路地址是145.13.0.0(網路號是145.13)。
現把中的網路劃分為三個子網,這裡假定子網號佔用8位,因此主機號只剩8位。所劃分的子網分別是:145.13.3.0、145.13.7.0、145.13.21.0。
劃分子網後,整個網路對外仍表現為一個網路,其網路地址仍為145.13.0.0,但是路由器R1在收到外來的資料報後,再根據資料報的目的地址把它轉寄到相應的子網。
假定有一個資料報的目的地址是145.13.3.10已經到達路由器R1,那麼這個路由器如何把它轉寄到子網145.13.3.0呢?這就需要藉助子網路遮罩(subnetmask)來實現了。
路由器會把子網路遮罩和收到的資料報地址的目的IP地址145.13.3.10進行按位“與”操作,得出所要找的子網的網路地址。
子網路遮罩與IP地址進行“與”操作之後,就將主機號“過濾”掉了,只剩下了網路號與子網號。
實際上,網際網路的標準規定:所有網路必須使用子網路遮罩。即便一個網路沒有劃分子網,也要使用預設子網路遮罩。預設子網路遮罩中1的位置和IP地址中的網路號欄位正好相對應,因此,兩者進行“與”操作後,就能得出該IP地址的網路地址。A類、B類、C類地址的預設子網路遮罩是固定的:
例,已知 IP 位址是141.14.72.24,子網路遮罩是 255.255.192.0。試求網路地址。
應當注意,劃分子網後,路由表必須包含以下三項內容:目的網路地址、子網路遮罩和下一跳地址。
在劃分子網的情況下路由器轉寄分組的演算法:
(1) 從收到的分組的首部提取目的IP 位址 D。
(2) 先用各網路的子網路遮罩和 D逐位相“與”,看是否和相應的網路地址匹配。若匹配,則將分組直接交付。否則就是間接交付,執行(3)。
(3) 若路由表中有目的地址為 D的特定主機路由,則將分組傳送給指明的下一跳路由器;否則,執行(4)。
(4) 對路由表中的每一行的子網路遮罩和 D 逐位相“與”,若其結果與該行的目的網路地址匹配,則將分組傳送給該行指明的下一跳路由器;否則,執行(5)。
(5) 若路由表中有一個預設路由,則將分組傳送給路由表中所指明的預設路由器;否則,執行(6)。
(6) 報告轉寄分組出錯。