現在所有的主機都要求支持子網編址(RFC 950 [Mogul and Postel 1985])。不是把IP地址看成由單純的一個網絡號和一個主機號組成,而是把主機號再分成一個子網號和一個主機號。
這樣做的原因是因為A類和B類地址為主機號分配了太多的空間,可分別容納的主機數為224-2和216-2。事實上,在一個網絡中人們并不安排這么多的主機(各類IP地址的格式如圖1-5所示)。由于全0或全1的主機號都是無效的,因此我們把總數減去2。
在InterNIC獲得某類IP網絡號后,就由當地的系統管理員來進行分配,由他(或她)來決定是否建立子網,以及分配多少比特給子網號和主機號。例如,這里有一個B類網絡地址(140.252),在剩下的16bit中,8 bit用于子網號, 8bit用于主機號,格式如圖3-5所示。這樣就允許有254個子網,每個子網可以有254臺主機。

許多管理員采用自然的劃分方法,即把B類地址中留給主機的16bit中的前8 bit作為子網地址,后8bit作為主機號。這樣用點分十進制方法表示的IP地址就可以比較容易確定子網號。
但是,并不要求A類或B類地址的子網劃分都要以字節為劃分界限。大多數的子網例子都是B類地址。其實,子網還可用于C類地址,只是它可用的比特數較少而已。很少出現A類地址的子網例子是因為A類地址本身就很少(但是,大多數A類地址都是進行子網劃分的)。
子網對外部路由器來說隱藏了內部網絡組織(一個校園或公司內部)的細節。在我們的網絡例子中,所有的IP地址都有一個B類網絡號140.252。但是其中有超過30個子網,多于400臺主機分布在這些子網中。由一臺路由器提供了Internet的接入,如圖3 - 6所示。
在這個圖中,我們把大多數的路由器編號為Rn,n是子網號。我們給出了連接這些子網的路由器,同時還包括了扉頁前圖中的九個系統。在圖中,以太網用粗線表示,點對點鏈路用虛線表示。我們沒有畫出不同子網中的所有主機。例如,在子網140.252.3上,就超過50臺主機,而在子網140.252.1上則超過100臺主機。
與30個C類地址相比,用一個包含30個子網的B類地址的好處是,它可以縮小Internet路由表的規模。B類地址140.252被劃分為若干子網的事實對于所有子網以外的Internet路由器都是透明的。為了到達IP地址開始部分為140.252的主機,外部路由器只需要知道通往IP地址140.252.104.1的路徑。這就是說,對于網絡140.252只需一個路由表目,而如果采用30個C類地址,則需要30個路由表目。因此,子網劃分縮減了路由表的規模(在1 0.8小節中,我們將介紹一種新技術,即使用C類地址也可以縮減路由表的規模)。
子網對于子網內部的路由器是不透明的。如圖3-6所示,一份來自Internet的數據報到達gateway,它的目的地址是140.252.57.1。路由器gateway需要知道子網號是57,然后把它送到kpno。同樣,kpno必須把數據報送到R55,最后由R55把它送到R57。

- 第1章 概述
- 1.1 引言
- 1.2 分層
- 1.3 TCP/IP的分層
- 1.4 互聯網的地址
- 1.5 域名系統
- 1.6 封裝
- 1.7 分用
- 1.8 客戶-服務器模型
- 1.9 端口號
- 1.10 標準化過程
- 1.11 RFC
- 1.12 標準的簡單服務
- 1.13 互聯網
- 1.14 實現
- 1.15 應用編程接口
- 1.16 測試網絡
- 1.17 小結
- 第2章 鏈路層
- 2.1 引言
- 2.2 以太網和IEEE 802封裝
- 2.3 尾部封裝
- 2.4 SLIP:串行線路IP
- 2.5 壓縮的SLIP
- 2.6 PPP:點對點協議
- 2.7 環回接口
- 2.8 最大傳輸單元MTU
- 2.9 路徑MTU
- 2.10 串行線路吞吐量計算
- 2.11 小結
- 第3章 IP:網際協議
- 3.1 引言
- 3.2 IP首部
- 3.3 IP路由選擇
- 3.4 子網尋址
- 3.5 子網掩碼
- 3.6 特殊情況的IP地址
- 3.7 一個子網的例子
- 3.8 ifconfig命令
- 3.9 netstat命令
- 3.10 IP的未來
- 3.11 小結
- 第4章 ARP:地址解析協議
- 4.1 引言
- 4.2 一個例子
- 4.3 ARP高速緩存
- 4.4 ARP的分組格式
- 4.5 ARP舉例
- 4.5.1 一般的例子
- 4.5.2 對不存在主機的ARP請求
- 4.5.3 ARP高速緩存超時設置
- 4.6 ARP代理
- 4.7 免費ARP
- 4.8 arp命令
- 4.9 小結
- 第5章 RARP:逆地址解析協議
- 5.1 引言
- 5.2 RARP的分組格式
- 5.3 RARP舉例
- 5.4 RARP服務器的設計
- 5.4.1 作為用戶進程的RARP服務器
- 5.4.2 每個網絡有多個RARP服務器
- 5.5 小結
- 第6章 ICMP:Internet控制報文協議
- 6.1 引言
- 6.2 ICMP報文的類型
- 6.3 ICMP地址掩碼請求與應答
- 6.4 ICMP時間戳請求與應答
- 6.4.1 舉例
- 6.4.2 另一種方法
- 6.5 ICMP端口不可達差錯
- 6.6 ICMP報文的4.4BSD處理
- 6.7 小結
- 第7章 Ping程序
- 7.1 引言
- 7.2 Ping程序
- 7.2.1 LAN輸出
- 7.2.2 WAN輸出
- 7.2.3 線路SLIP鏈接
- 7.2.4 撥號SLIP鏈路
- 7.3 IP記錄路由選項
- 7.3.1 通常的例子
- 7.3.2 異常的輸出
- 7.4 IP時間戳選項
- 7.5 小結
- 第8章 Traceroute程序
- 8.1 引言
- 8.2 Traceroute程序的操作
- 8.3 局域網輸出
- 8.4 廣域網輸出
- 8.5 IP源站選路選項
- 8.5.1 寬松的源站選路的traceroute程序示例
- 8.5.2 嚴格的源站選路的traceroute程序示例
- 8.5.3 寬松的源站選路traceroute程序的往返路由
- 8.6 小結
- 第9章 IP選路
- 9.1 引言
- 9.2 選路的原理
- 9.2.1 簡單路由表
- 9.2.2 初始化路由表
- 9.2.3 較復雜的路由表
- 9.2.4 沒有到達目的地的路由
- 9.3 ICMP主機與網絡不可達差錯
- 9.4 轉發或不轉發
- 9.5 ICMP重定向差錯
- 9.5.1 一個例子
- 9.5.2 更多的細節
- 9.6 ICMP路由器發現報文
- 9.6.1 路由器操作
- 9.6.2 主機操作
- 9.6.3 實現
- 9.7 小結