《TCP/IP詳解 卷一:協議》讀書筆記--IP:網際協議

3.1、引言

不可靠:它不能保證IP數據報能成功地到達目的地。

無連接:IP並不維護任何關於後續數據報的狀態信息。這也說明,IP數據報可以不按發送順序接收。


3.2、IP首部

4個字節的32 bit值以下面的次序傳輸:首先是0~7 bit,其次是8~15 bit,然後16~23 bit,最後是24~31 bit。這種傳輸次序稱爲big endian字節序。由於TCP/IP首部中所有的二進制整數在網絡傳輸時都要求以這種次序,因此它又稱作網絡字節序。以其他形式存儲二進制整數的機器,如little endian格式,則必須在傳輸數據之前把首部轉換成網絡字節序。

目前的協議版本號是4,因此IP有時也稱作IPv4.

首部長度指的是首部站32bit 字的數目,包括任何選項。由於它是一個4比特字段,因此首部最長爲60字節。普通IP數據報字段的值是5。

服務類型(TOS)字段包括一個3 bit的優先權子字段(現在已被忽略),4 bit的TOS子字段和1 bit未用位但必須置0。4 bit的TOS分別代表:最小時延、最大吞吐量、最高可靠性、最小費用。4 bit中只能置其中1 bit。如果所有4 bit均爲0,那麼就意味着是一般服務。

總長度字段是指整個IP數據報的長度,以字節爲單位。利用首部長度字段和總長度字段,就可以知道IP數據報中數據內容的起始位置和長度。由於該字段長16比特,所以IP數據報最長可達65525字節。當數據報被分片時,該字段的值也隨着變化。

標誌字符唯一地標識主機發送的每一份數據報。

TTL(time to live)生存時間字段設置了數據報可以經過的最多路由器數。

協議字段,標誌那個協議向IP傳送數據。

首部檢驗和字段是根據IP首部計算的檢驗和碼。它不對首部後面的數據進行計算。ICMP、IGMP、UDP、TCP在它們各自的首部中均含有同時覆蓋首部和數據檢驗和碼。

爲了計算一份數據報的IP檢驗和,首先把檢驗和字段置0。然後,對首部中沒16bit進行二進制反碼求和,結果存在檢驗和字段中。當收到一份IP數據報後,同樣對首部中16 bit進行二進制反碼的求和。由於接收方在計算過程中包含了發送方首部中的檢驗和,因此,如果首部在傳輸過程中沒有發生任何差錯,那麼接收方計算的結果應該爲全1。如果結果不是全1,那麼IP就丟棄收到的數據報。但是不生成差錯報文,由上層去發現丟失的數據並進行重傳。

每一份IP數據報都包含源IP地址和目的IP地址。

最後一個字段 是任選項,是數據報中一個可變長的可選信息。目前,這些任選項定義如下:

  • 安全和處理限制(用於軍事領域)
  • 記錄路徑(讓每個路由器都記下它的IP地址)
  • 時間戳(讓每個路由器都記下它的IP地址和時間)
  • 寬鬆的源站選路(爲數據報指定一系列必須經過的IP地址)
  • 嚴格的源站選路(與寬鬆的源站選路類似,但是要求只能經過指定的這些地址,不能進過其他的地址)

這些選項很少被使用,並非所有的主機和路由器都支持這些選項。

選項字段一直都是以32 bit作爲界限,在必要的時候插入值爲0的填充字節。這樣就保證IP首部始終是32 bit的整數倍(這是首部長度字段所要求的)。


3.3、IP路由選擇

IP層在內存中有一個路由表。當收到一份數據報並進行發送時,它都要對該表搜索一次。

當數據報來自某個網絡接口時,IP首先檢查目的IP地址是否爲本機的IP地址之一或者IP廣播地址。如果確實是這樣,數據報就會被送到由IP首部協議字段所指定的協議模塊進行處理。如果數據報的目的地址不是這些地址。那麼(1) 如果IP層被設置爲路由器的功能,就會對數據報進行轉發。(2) 數據報被丟棄。

路由表中的每一項包含下面這些信息:

  • 目的IP地址。它既可以是一個完整的主機地址,也可以是一個網絡地址
  • 下一站路由器的IP地址,或者有直接連接的網絡IP地址
  • 標誌。其中一個標誌是指IP地址是網絡地址還是主機地址,另一個標誌指明下一站路由器是否爲真正的下一站路由器,還是一個直接相連的接口
  • 爲數據報的傳輸指定一個網絡接口

IP路由選擇主要完成以下這些功能:

1)搜索路由表,需找能與目的IP地址完全匹配的表目(網絡號和主機號都要匹配)。如果找到,則把報文發送給該表目指定的下一站路由器或者直接連接的網絡接口。

2)搜索路由表,需找能與目的網絡號匹配的表目。

3)搜索路由表,尋找標爲“默認”的表目。

如果上面這些步驟都沒有成功,那麼該數據報就不能傳送。


3.4、子網尋址


3.5、子網掩碼

這個掩碼是一個32位bit的值,其中值爲1的比特留給網絡號和子網絡,爲0的比特留給主機號。


3.6、特殊情況的IP地址

0表示所有的比特位全爲0;-1表示所有的比特位全爲1;netid、subnetid和hostid分別表示不全爲0或全爲1的對應字段。

子網號欄爲空表示該地址沒有進行子網劃分。

我們把這個表分成三個部分。表的頭兩項是特殊的源地址,中間項是特殊的環回地址,最後四項是廣播地址。

表中的頭兩項,網絡號爲0,如主機使用BOOTP協議確定本機IP地址時,只能作爲初始化過程中的源地址出現。


習題:

3.1、環回地址必須是127.0.0.1嗎?

答:不,任何網絡ID爲127的A類地址都是可行的


3.2、在圖3-6中指出兩個以上網絡接口的路由器。

答:kpno有5個接口:3個點對點鏈路和2個以太網接口。R10有4個以太網接口。

gateway有3個接口:2個點對點鏈路和1個以太網接口。netb有1個以太網接口和2個點對點鏈路。


3.3、子網號爲16bit的A類地址與子網號爲8bit的B類地址的子網掩碼有什麼不同?

答:沒有區別:作爲一個沒有再區分子網的C類地址,它們都有一個255.255.255.0的子網掩碼。


3.5、子網掩碼255.255.0.255是否對A類地址有效?

答:它是合法的,被稱爲非連續的子網掩碼,因爲其用於子網掩碼的16位是不連續的。但是RFC建議反對使用非連續的子網掩碼。


3.7、TCP/IP協議族是基於一種數據報的網絡技術,即IP層,其他的協議族則基於面向連接的網絡技術。找出數據報網絡層提供的三個有點。

答:第一,數據報降低了路由器對連接狀態的需求。第二,數據報提供了基本的構件,在它的上面可以構造不可靠的(UDP)和可靠的(TCP)的運輸層。第三,數據報代表了最小的網絡層的假定,使得可以使用很大範圍的數據鏈路層服務。

發佈了449 篇原創文章 · 獲贊 285 · 訪問量 83萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章