《TCP/IP詳解卷1:協議》第3章 IP:網際協議(1)-讀書筆記

章節回顧:html

《TCP/IP詳解卷1:協議》第1章 概述-讀書筆記算法

《TCP/IP詳解卷1:協議》第2章 鏈路層-讀書筆記網絡

《TCP/IP詳解卷1:協議》第3章 IP:網際協議(1)-讀書筆記併發

《TCP/IP詳解卷1:協議》第3章 IP:網際協議(2)-讀書筆記post

《TCP/IP詳解卷1:協議》第4章 ARP:地址解析協議-讀書筆記url

《TCP/IP詳解卷1:協議》第5章 RARP:逆地址解析協議-讀書筆記spa

《TCP/IP詳解卷1:協議》第6章 ICMP:Internet控制報文協議-讀書筆記htm

《TCP/IP詳解卷1:協議》第11章 UDP:用戶數據報協議-讀書筆記blog

《TCP/IP詳解卷1:協議》第1七、18章 TCP:傳輸控制協議(1)-讀書筆記接口

《TCP/IP詳解卷1:協議》第1七、18章 TCP:傳輸控制協議(2)-讀書筆記

《TCP/IP詳解卷1:協議》第19章 TCP的交互數據流-讀書筆記

 

一、引言

IP是TCP/IP協議族中最核心的協議。全部的TCP、UDP、ICMP及IGMP數據都以IP數據報格式傳輸。IP提供不可靠、無鏈接的數據報傳送服務。

(1)不可靠

它不能保證IP數據報能成功地到達目的地。IP僅提供最好的傳輸服務。若是發生某種錯誤,如某個路由器暫時用完了緩衝區,IP有一個簡單的錯誤處理算法:丟棄該數據報,而後發送ICMP消息報給信源端。任何要求的可靠性必須由上層來提供(如TCP)。

(2)無鏈接

IP並不維護任何關於後續數據報的狀態信息。每一個數據報的處理是相互獨立的。即IP數據報能夠不按發送順序接收。若是一信源向相同的信宿發送兩個連續的數據報(先是A,後是B),每一個數據報都是獨立地進行路由選擇,可能選擇不一樣的路線,所以B可能在A到達以前先到達。

 

二、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)任選項,是數據報中的一個可變長的可選信息。這些選項不多被使用,並不是全部的主機和路由器都支持這些選項。

 

三、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:今天沒有完成本章任務,本章剩餘小結放在明天來總結。

相關文章
相關標籤/搜索