分類的IP地址
有關IP最重要的文檔就是互聯網的正式標准RFC 791
IP地址及其表示方法
整個互聯網就是一個單一,抽象的網絡,IP地址就是給互聯網上的每一台主機(或者路由器)的每一個接口分配一個在全世界范圍內都是唯一的32位的標識符。IP地址的出現是為了我們更方便的尋址。 IP地址現在是由ICANN進行分配。
IP地址編碼三大階段:
- 分類的IP地址:是最基本的編址方法。
- 子網的划分:對最基本的編址方法進行改進。
- 構建超網:比較新的無分類的編址方法。
所謂的分類的IP地址就是將IP地址划分為若干個固定類,每一類地址都由兩個固定長度的字段組成。第一個字段為網絡號,第二個字段為主機號,一個網絡號在整個互聯網范圍內必須是唯一的,一個主機號在某一個網絡區間內必須是唯一的。
由此可見,一個IP地址在整個互聯網范圍都是唯一的。
這種兩級的IP地址可以記為:
IP地址不僅僅指明一台主機,還指明該主機所連接到的互聯網絡。
注意這里A類,B類,C類都是單播地址(一對一通信),且是最常用的。D類地址用於多播(一對多通信),E類地址保留為以后使用。
常見的三種類別的IP地址
A類地址:網絡號字段占1個字節,只有7位可以使用(該字段的第一位已經固定為0),可以指派的網絡號是\(2^7\)-2=126個。-2的目的是:
- IP地址中的全0表示的是"這個",網絡號字段全為0的IP是個保留地址,意思是本網絡。
- 網絡號位127(0111111)作為本地軟件環回測試(loopback test),本主機進程之間的通信使用,意思就是若主機發送了一個目的地址為環回地址例如127.0.0.1的IP數據包,主機並不會發送到網絡上。環回地址永遠都不會出現在任何網絡上,因為網絡號位127根本就不是一個網絡地址。
A類地址主機號占3個字節(24位),因此每一個A類網絡中最大的主機數位\(2^24\)-2=16777214,-2的原因是
- 全0的主機號字段表示該IP地址是“本主機”所連接到的單個網絡地址(例如,一個主機的IP地址是5.6.7.8,那么該主機所在的網絡地址為5.0.0.0)
- 全1表示所有的(all),因此全為1的主機號字段表示的是該網絡上的所有主機。
B類地址:網絡號字段有2個字節16位,但前兩位(1 0)已經固定了,只剩下14位可以進行分配。因為網絡號字段后面的14位不論如何取值也不可能出現使整個2字節的網絡號字段變為全0或全1,因此這里網絡書-2的問題。但實際上B類網絡地址128.0.0.0是不指派的,而可指派的B類最小網絡地址是128.1.0.0.因此B類地址可指派的的網絡數為\(2^14\)-1,即16383,B類地址的每一個網絡上最大的主機數是\(2^16\)-2,即65534,這里減2的目的是因為要扣除全0和全1的主機號。
C類地址:網絡號3個字節24位,網絡號前必須是110,因此還有24-3=21位可以進行分配,C類地址可指派的網絡總數是\(2^21\)-1,即2097151個。C類地址主機位占1個字節,即8位,每一個C類地址的最大主機數為\(2^8\)-2,即254個。
這樣我們就得出了如圖4-2所表示的IP地址的指派范圍:
圖4-3給出了一般不使用的特殊IP地址,這些地址只能在特定的情況下使用:
IP地址具有如下特征
-
每個IP都是由網絡號和主機號兩部分組成。從這個意義上來說,IP地址是一種分等級的地址結構,分兩個等級的好處是:
-
IP地址管理機構在分配IP地址時只分配網絡號(第一級),而剩下的主機號(第二級)則由得到該網絡的單位自行分配。這樣就方便了了IP地址的管理;
-
路由器僅僅根據目的主機所連接的網絡號來分組轉發(並不考慮主機號)這樣就可以使路由表中的項目數打大幅度減少,從而減少了路由表所占的內存存儲空間以及查找路由表的時間。
-
-
實際上IP地址標志着一台主機(或者路由器)和一條鏈路的接口,當一台主機同時連接到兩個網絡上時,則該主機必須同時擁有兩個相應的IP地址,並且網絡號必須是不同的。這樣的主機稱之為多歸屬主機,由於一個路由器至少應當連接到兩個網絡,因此一個路由器應該至少有兩個不同的IP地址,舉個簡單的例子:有一個建築正好在北京路和上海路的交叉口上那么這兩個建築可以同時擁有兩個門牌號碼:例如北京路4路和上海路37路。
-
按照互聯網的觀點,一個網絡指具有相同網絡號net-id的主機的集合,因此,使用轉發器或者網橋連接起來的若干局域網仍為一個網絡,因為這些網絡具有相同的網絡號,具有不同網絡號的主機必須要通過路由器進行連接。
-
在IP地址中,所有分配到網絡號的網絡都是平等的--互聯網同等對待每一個IP地址。
IP地址與硬件地址
硬件地址與IP地址的區別
從層次上來看,物理地址是數據鏈路層和物理層使用的地址,而IP地址是網絡層及其上層使用的地址,因此也叫做邏輯地址(IP地址是用軟件實現的)。
在發送數據的時候,數據從高層下到低層,然后才能在通信鏈路上通信,使用IP地址的數據報一旦交給了數據鏈路層,就會被封裝成MAC幀。MAC幀在傳輸的時候使用的源地址和目的地址都是硬件地址,這兩個硬件地址都寫入了MAC幀的首部中。
連接在通信鏈路上的設備(主機或者路由器)在收到MAC幀的時,根據MAC幀首部中的硬件地址決定收下還是丟棄。只有在剝去MAC幀的首部和尾部才能把MAC幀的數據上交到網絡層后,網絡層才能在IP數據報的首部找到源IP地址和目的IP地址。
當IP數據報放到鏈路層的MAC幀中,整個IP數據報就成了MAC的數據,因此在數據鏈路層看不到數據報的IP地址。
如圖4-9(a)畫的是三個局域網使用兩個不同的路由器R1和R2互連起來。現在主機H1和H2進行通信,這兩台主機的IP地址分別是IP1和IP2,而它們的硬件地址分別為HA1和HA2。通信的路徑是:H1->經過R1轉發->再經過R2轉發->H2。路由器R1因同時連接到兩個局域網上,因此它有兩個硬件地址,即HA3和HA4,同理,路由器R2也有兩個硬件地址HA5和HA6。
圖4-9(b)特別強調了IP地址與MAC地址之間的關系,表4-4歸納了這種區別。
這里要強調幾點
-
在IP層抽象的互聯網上只能看到IP數據報,雖然IP數據報要經過路由器R1和R2的兩次轉發,但在它的首部中的源地址和目的地址始終是IP1和IP2,數據報中間經過的兩個路由器的IP地址並不會出現在IP數據報的首部中。
-
雖然在IP數據報首部有源IP地址,但是路由器只根據目的IP地址的網絡號進行路由選擇。
-
在局域網的鏈路層,只能看到MAC幀,IP數據報在被封裝到MAC幀中.MAC幀在不同的網絡上傳輸時。其MAC幀首部的源MAC地址和目的MAC地址都要發送變化,如上圖4-9(b)。
-
盡管互聯在一起的網絡的硬件地址體系各不同。但是IP層抽象的的互聯網屏蔽了下層這些很復雜的細節,我們只需要在網絡層上討論問題,就能夠使用統一的,抽象的IP地址來研究主機和主機或者主機和路由器之間的通信。