章節回顧:
《TCP/IP詳解卷1:協議》第3章 IP:網際協議(1)-讀書筆記
《TCP/IP詳解卷1:協議》第3章 IP:網際協議(2)-讀書筆記
《TCP/IP詳解卷1:協議》第4章 ARP:地址解析協議-讀書筆記
《TCP/IP詳解卷1:協議》第5章 RARP:逆地址解析協議-讀書筆記
《TCP/IP詳解卷1:協議》第6章 ICMP:Internet控制報文協議-讀書筆記
《TCP/IP詳解卷1:協議》第11章 UDP:使用者資料包協議-讀書筆記
《TCP/IP詳解卷1:協議》第17、18章 TCP:傳輸控制協議(1)-讀書筆記
《TCP/IP詳解卷1:協議》第17、18章 TCP:傳輸控制協議(2)-讀書筆記
《TCP/IP詳解卷1:協議》第19章 TCP的互動資料流-讀書筆記
1、引言
IP是TCP/IP協議族中最核心的協議。所有的TCP、UDP、ICMP及IGMP資料都以IP資料包格式傳輸。IP提供不可靠、無連線的資料包傳送服務。
(1)不可靠
它不能保證IP資料包能成功地到達目的地。IP僅提供最好的傳輸服務。如果發生某種錯誤,如某個路由器暫時用完了緩衝區,IP有一個簡單的錯誤處理演算法:丟棄該資料包,然後傳送ICMP訊息報給信源端。任何要求的可靠性必須由上層來提供(如TCP)。
(2)無連線
IP並不維護任何關於後續資料包的狀態資訊。每個資料包的處理是相互獨立的。即IP資料包可以不按傳送順序接收。如果一信源向相同的信宿傳送兩個連續的資料包(先是A,後是B),每個資料包都是獨立地進行路由選擇,可能選擇不同的路線,因此B可能在A到達之前先到達。
2、IP首部
IP資料包的格式如圖3-1所示。
IP資料包說明:
(1)普通的IP首部長為20個位元組,除非含有選項欄位。最高位在左邊,記為0 bit;最低位在右邊,記為31 bit。
(2)4個位元組的32 bit值以下面的次序傳輸:首先是0~7 bit,其次8~15 bit,然後1 6~23 bit,最後是24~31 bit。這種傳輸次序稱作big endian位元組序。由於TCP/IP首部中所有的二進位制整數在網路中傳輸時都要求以這種次序,因此又稱作網路位元組序。以其他形式儲存二進位制整數的機器,如little endian格式,則必須在傳輸資料之前把首部轉換成網路位元組序。
(3)目前的協議版本號是4,因此IP有時也稱作IPv4。
(4)服務型別(TOS)欄位包括一個3 bit的優先權子欄位(現在已被忽略),4 bit的TOS子欄位和1 bit未用位,但必須置0。4 bit的TOS分別代表:最小時延、最大吞吐量、最高可靠性和最小費用。 4 bit中只能置其中1 bit。如果所有4 bit均為0,那麼就意味著是一般服務。圖3-2列出了對不同應用建議的TOS值。
注意:現在大多數的TCP/IP實現都不支援TOS特性。
(5)總長度欄位是指整個IP資料包的長度,以位元組為單位。由於該欄位長16位元,所以IP資料包最長可達65535位元組。
注意:儘管可以傳送一個長達65535位元組的IP資料包,但是大多數的鏈路層都會對它進行分片。而且,主機也要求不能接收超過576位元組的資料包。
(6)標識欄位唯一地標識主機傳送的每一份資料包。通常每傳送一份報文它的值就會加1。
(7)TTL生存時間欄位設定了資料包可以經過的最多路由器數。它指定了資料包的生存時間。 TTL的初始值由源主機設定(通常為32或64),一旦經過一個處理它的路由器,它的值就減去1。當該欄位的值為0時,資料包就被丟棄,併傳送ICMP報文通知源主機。
(8)協議欄位,它可以識別是哪個協議向IP傳送資料。
(9)首部檢驗和欄位是根據IP首部計算的檢驗和碼。
(10)任選項,是資料包中的一個可變長的可選資訊。這些選項很少被使用,並非所有的主機和路由器都支援這些選項。
3、IP路由選擇
IP路由選擇是簡單的,特別對於主機來說。如果目的主機與源主機直接相連(如點對點鏈路)或都在一個共享網路上(乙太網或令牌環網),那麼IP資料包就直接送到目的主機上。否則,主機把資料包發往一預設的路由器上,由路由器來轉發該資料包。
說明:大多數多使用者系統,都可以配置成一個路由器。我們可以為它指定主機和路由器都可以使用的簡單路由演算法。本質上的區別在於主機從不把資料包從一個介面轉發到另一個介面,而路由器則要轉發資料包。
(1)IP資料包處理過程
IP可以從TCP、UDP、ICMP和IGMP接收資料包(即在本地生成的資料包)並進行傳送,或者從一個網路介面接收資料包(待轉發的資料包)並進行傳送。IP層在記憶體中有一個路由表。當收到一份資料包並進行傳送時,它都要對該表搜尋一次。當資料包來自某個網路介面時, IP首先檢查目的IP地址是否為本機的IP地址之一或者IP廣播地址。
如果是這些地址:資料包就被送到由IP首部協議欄位所指定的協議模組進行處理。如果不是這些地址:如果IP層被設定為路由器的功能,那麼就對資料包進行轉發;否則資料包被丟棄。
(2)路由表包含的資訊
路由表中的每一項都包含下面這些資訊:
1)目的IP地址。
它既可以是一個完整的主機地址,也可以是一個網路地址,由該表目中的標誌欄位來指定。主機地址有一個非0的主機號,以指定某一特定的主機,而網路地址中的主機號為0,以指定網路中的所有主機(如乙太網,令牌環網)。
2)下一跳路由器的IP地址,或者有直接連線的網路IP地址。
下一跳路由器是指一個在直接相連網路上的路由器,通過它可以轉發資料包。下一跳路由器不是最終的目的,但是它可以把傳送給它的資料包轉發到最終目的。
3)標誌。
其中一個標誌指明目的IP地址是網路地址還是主機地址,另一個標誌指明下一跳路由器是否為真正的下一跳路由器,還是一個直接相連的介面。
4)為資料包的傳輸指定一個網路介面。
(3)IP路由選擇主要完成的功能
IP路由選擇是逐跳地進行的。IP並不知道到達任何目的的完整路徑(當然,除了那些與主機直接相連的目的)。所有的IP路由選擇只為資料包傳輸提供下一跳路由器的IP地址。它假定下一跳路由器比傳送資料包的主機更接近目的,而且下一跳路由器與該主機是直接相連的。
1)搜尋路由表,尋找能與目的IP地址完全匹配的表目(網路號和主機號都要匹配)。如果找到,則把報文傳送給該表目指定的下一站路由器或直接連線的網路介面(取決於標誌欄位的值)。
2)搜尋路由表,尋找能與目的網路號相匹配的表目。如果找到,則把報文傳送給該表目指定的下一站路由器或直接連線的網路介面。
3)搜尋路由表,尋找標為“預設”的表目。如果找到,則把報文傳送給該表目指定的下一站路由器。
說明:
(1)如果上面這些步驟都沒有成功,那麼該資料包就不能被傳送。如果不能傳送的資料包來自本機,那麼一般會向生成資料包的應用程式返回一個“主機不可達”或“網路不可達”的錯誤。
(2)完整主機地址匹配在網路號匹配之前執行。只有當它們都失敗後才選擇預設路由。
(3)為一個網路指定一個路由器,而不必為每個主機指定一個路由器,這是IP路由選擇機制的一個基本特性。這樣做可以極大地縮小路由表的規模,例如Internet上的路由器有隻有幾千個表目,而不會是超過100萬個表目。
PS:今天沒有完成本章任務,本章剩餘小結放在明天來總結。