1. 程式人生 > >03-IP網際協議

03-IP網際協議

狀態信息 廣播地址 配置 環回地址 獲得 存儲 機器 網際協議 屬於

IP

  1. I P是T C P / I P協議族中最為核心的協議。所有的 T C P、U D P、I C M P及I G M P數據都以I P數據報格式傳輸。
    技術分享圖片

    不可靠( u n r e l i a b l e)的意思是它不能保證 I P數據報能成功地到達目的地。 I P僅提供最好的傳輸服務。如果發生某種錯誤時,如某個路由器暫時用完了緩沖區, I P有一個簡單的錯誤處理算法:丟棄該數據報,然後發送 I C M P消息報給信源端。任何要求的可靠性必須由上層來提供(如T C P)。
    無連接( c o n n e c t i o n l e s s)這個術語的意思是 I P並不維護任何關於後續數據報的狀態信息。每個數據報的處理是相互獨立的。這也說明, I P數據報可以不按發送順序接收。如果一信源向相同的信宿發送兩個連續的數據報(先是 A,然後是B),每個數據報都是獨立地進行路由選擇,可能選擇不同的路線,因此 B可能在A到達之前先到達。
    在這裏,簡要介紹 I P首部中的各個字段,討論 I P路由選擇和子網的有關內容。還要介紹兩個有用的命令: i f c o n f i g和n e t s t a t。

2.IP首部
技術分享圖片

4個字節的32 bit值以下面的次序傳輸:首先是 0?7 bit,其次8?15 bit,然後1 6?23 bit,最後是24~31 bit。這種傳輸次序稱作 big endian字節序。由於 T C P / I P首部中所有的二進制整數在網絡中傳輸時都要求以這種次序,因此它又稱作網絡字節序。以其他形式存儲二進制整數的機器,如 little endian格式,則必須在傳輸數據之前把首部轉換成網絡字節序。
 目前的協議版本號是4,因此I P有時也稱作 I P v 4。
 服務類型(TOS)字段,4bit的TOS分別代表:最小時延、最大吞吐量、最高可靠性和最小費用。4 bit中只能置其中1 bit。如果所有4 bit均為0,那麽就意味著是一般服務。

技術分享圖片

路由協議如 O S P F和I S - I S都能根據這些字段的值進行路由決策。
T T L(t i m e - t o - l i v e)生存時間字段設置了數據報可以經過的最多路由器數。它指定了數據報的生存時間。T T L的初始值由源主機設置(通常為3 2或6 4),一旦經過一個處理它的路由器,它的值就減去1。當該字段的值為 0時,數據報就被丟棄,並發送 I C M P報文通知源主機。
每一份 I P數據報都包含源 I P地址和目的 I P地址。它們都是 32 bit的值。

3.IP路由選擇
從概念上說, I P路由選擇是簡單的,特別對於主機來說。如果目的主機與源主機直接相連(如點對點鏈路)或都在一個共享網絡上(以太網或令牌環網),那麽I P數據報就直接送到目的主機上。否則,主機把數據報發往一默認的路由器上,由路由器來轉發該數據報。大多數的主機都是采用這種簡單機制。
路由表中的每一項都包含下面這些信息:
目的I P地址。它既可以是一個完整的主機地址,也可以是一個網絡地址,由該表目中的標誌字段來指定(如下所述)。主機地址有一個非0的主機號,以指定某一特定的主機,而網絡地址中的主機號為0,以指定網絡中的所有主機(如以太網,令牌環網)。
下一站(或下一跳)路由器( next-hop router)的I P地址,或者有直接連接的網絡 I P地址。下一站路由器是指一個在直接相連網絡上的路由器,通過它可以轉發數據報。下一站路由器不是最終的目的,但是它可以把傳送給它的數據報轉發到最終目的。
標誌。其中一個標誌指明目的 I P地址是網絡地址還是主機地址,另一個標誌指明下一站路由器是否為真正的下一站路由器,還是一個直接相連的接口。
為數據報的傳輸指定一個網絡接口。

I P路由選擇是逐跳地( h o p - b y - h o p)進行的。I P並不知道到達任何目的的完整路徑(當然,除了那些與主機直接相連的目的)。所有的I P路由選擇只為數據報傳輸提供下一站路由器的 I P地址。它假定下一站路由器比發送數據報的主機更接近目的,而且下一站路由器與該主機是直接相連的。
 
I P路由選擇主要完成以下這些功能:
1)  搜索路由表,尋找能與目的 I P地址完全匹配的表目(網絡號和主機號都要匹配)。如果找到,則把報文發送給該表目指定的下一站路由器或直接連接的網絡接口(取決於標誌字段的值)。
2)搜索路由表,尋找能與目的網絡號相匹配的表目。如果找到,則把報文發送給該表目指定的下一站路由器或直接連接的網絡接口(取決於標誌字段的值)。目的網絡上的所有主機都可以通過這個表目來處置。例如,一個以太網上的所有主機都是通過這種表目進行尋徑的。
這種搜索網絡的匹配方法必須考慮可能的子網掩碼。
3)搜索路由表,尋找標為“默認( d e f a u l t)”的表目。如果找到,則把報文發送給該表目指定的下一站路由器。
如果上面這些步驟都沒有成功,那麽該數據報就不能被傳送。如果不能傳送的數據報來自本機,那麽一般會向生成數據報的應用程序返回一個“主機不可達”或“網絡不可達”的錯誤。
完整主機地址匹配在網絡號匹配之前執行。只有當它們都失敗後才選擇默認路由。默認路由,以及下一站路由器發送的 I C M P間接報文(如果我們為數據報選擇了錯誤的默認路由),是I P路由選擇機制中功能強大的特性。
為一個網絡指定一個路由器,而不必為每個主機指定一個路由器,這是 I P路由選擇機制的另一個基本特性。這樣做可以極大地縮小路由表的規模.
一個簡單的例子:我們的主機 b s d i有一個I P數據報要發送給主機 s u n。雙方都在同一個以太網上.數據報的傳輸過程如圖.

技術分享圖片

I P從某個上層收到這份數據報後,它搜索路由表,發現目的 I P地址(1 4 0 . 2 5 2 . 1 3 . 3 3)在一個直接相連的網絡上(以太網 1 4 0 . 2 5 2 . 1 3 . 0)。於是,在表中找到匹配網絡地址(在下一節中,我們將看到,由於以太網的子網掩碼的存在,實際的網絡地址是 1 4 0 . 2 5 2 . 1 3 . 3 2,但是這並不影響這裏所討論的路由選擇)。
數據報被送到以太網驅動程序,然後作為一個以太網數據幀被送到 s u n主機上.I P數據報中的目的地址是s u n的I P地址( 1 4 0 . 2 5 2 . 1 3 . 3 3),而在鏈路層首部中的目的地址是 48 bit的s u n主機的以太網接口地址。這個 48 bit的以太目的

網地址是用 A R P協議獲得的.

另一個例子:主機 b s d i有一份I P數據報要傳到 f t p . u u . n e t主機上,它的I P地址是1 9 2 . 4 8 . 9 6 . 9。經過的前三個路由器如圖 3 - 4所示。首先,主機b s d i搜索路由表,但是沒有找到與主機地址或網絡地址相匹配的表目,因此只能用默認的表目,把數據報傳給下一站路由器,即主機 s u n。當數據報從 b s d i被傳到 s u n主機上以後,目的 I P地址是最終的信宿機地址(1 9 2 . 4 8 . 9 6 . 9),但是鏈路層地址卻是 s u n主機的以太網接口地址。這與圖 3 - 3不同,在那裏數據報中的目的I P地址和目的鏈路層地址都指的是相同的主機( s u n)。

技術分享圖片

當s u n收到數據報後,它發現數據報的目的 I P地址並不是本機的任一地址,而 s u n已被設置成具有路由器的功能,因此它把數據報進行轉發。經過搜索路由表,選用了默認表目。根據s u n的默認表目,它把數據報轉發到下一站路由器 n e t b,該路由器的地址是 1 4 0 . 2 5 2 . 1 . 1 8 3。數據報是經過點對點 S L I P鏈路被傳送的,采用了最小封裝格式。這裏,我們沒有給出像以太網鏈路層數據幀那樣的首部,因為在 S L I P鏈路中沒有那樣的首部。
當n e t b收到數據報後,它執行與s u n主機相同的步驟:數據報的目的地址不是本機地址,而n e t b也被設置成具有路由器的功能,於是它也對該數據報進行轉發。采用的也是默認路由表目,把數據報送到下一站路由器 g a t e w a y(1 4 0 . 2 5 2 . 1 . 4)。位於以太網 1 4 0 . 2 5 2 . 1上的主機n e t b用A R P獲得對應於 1 4 0 . 2 5 2 . 1 . 4的48 bit以太網地址。這個以太網地址就是鏈路層數據幀頭

上的目的地址。
路由器g a t e w a y也執行與前面兩個路由器相同的步驟。它的默認路由表目所指定的下一站路由器 I P地址是 1 4 0 . 2 5 2 . 1 0 4 . 2。
一些關鍵點:
1) 該例子中的所有主機和路由器都使用了默認路由。事實上,大多數主機和一些路由器可以用默認路由來處理任何目的,除非它在本地局域網上。
2) 數據報中的目的I P地址始終不發生任何變化。所有的路由選擇決策都是基於這個目的I P地址。
3) 每個鏈路層可能具有不同的數據幀首部,而且鏈路層的目的地址(如果有的話)始終指的是下一站的鏈路層地址。在例子中,兩個以太網封裝了含有下一站以太網地址的鏈路層首部,但是 S L I P鏈路沒有這樣做。以太網地址一般通過 A R P獲得。

4.子網尋址
現在所有的主機都要求支持子網編址。不是把I P地址看成由單純的一個網絡號和一個主機號組成,而是把主機號再分成一個子網號和一個主機號。
這樣做的原因是因為 A類和B類地址為主機號分配了太多的空間,可分別容納的主機數為22 4-2和21 6-2。事實上,在一個網絡中人們並不安排這麽多的主機。由於全0或全1的主機號都是無效的,因此我們把總數減去 2。
在I n t e r N I C獲得某類I P網絡號後,就由當地的系統管理員來進行分配,由他(或她)來決
定是否建立子網,以及分配多少比特給子網號和主機號。例如,這裏有一個 B類網絡地址(1 4 0 . 2 5 2),在剩下的16 bit中,8 bit用於子網號,8 bit用於主機號,格式如圖 3 - 5所示。這樣就允許有2 5 4個子網,每個子網可以有 2 5 4臺主機。
技術分享圖片

許多管理員采用自然的劃分方法,即把 B類地址中留給主機的 16 bit中的前8 bit作為子網地址,後 8 b i t作為主機號。這樣用點分十進制方法表示的 I P地址就可以比較容易確定子網號。但是,並不要求A類或B類地址的子網劃分都要以字節為劃分界限。
子網對外部路由器來說隱藏了內部網絡組織(一個校園或公司內部)的細節。在我們的網絡例子中,所有的I P地址都有一個B類網絡號 1 4 0 . 2 5 2。但是其中有超過3 0個子網,多於4 0 0臺主機分布在這些子網中。由一臺路由器提供了 I n t e r n e t的接入

技術分享圖片

5.子網掩碼
任何主機在引導時進行的部分配置是指定主機 I P地址。大多數系統把 I P地址存在一個磁盤文件裏供引導時讀用。
除了I P地址以外,主機還需要知道有多少比特用於子網號及多少比特用於主機號。這是在引導過程中通過子網掩碼來確定的。這個掩碼是一個 32 bit的值,其中值為1的比特留給網絡號和子網號,為0的比特留給主機號。圖 3 - 7是一個B類地址的兩種不同的子網掩碼格式。第一個例子是 n o a o . e d u網絡采用的子網劃分方法,如圖 3 - 5所示,子網號和主機號都是 8 bit寬。第二個例子是一個B類地址劃分成10 bit的子網號和6 bit的主機號。
技術分享圖片

盡管I P地址一般以點分十進制方法表示,但是子網掩碼卻經常用十六進制來表示,特別是當界限不是一個字節時,因為子網掩碼是一個比特掩碼。
給定I P地址和子網掩碼以後,主機就可以確定 I P數據報的目的是:
( 1)本子網上的主機;
(2)本網絡中其他子網中的主機;
( 3)其他網絡上的主機。
如果知道本機的 I P地址,那麽就知道它是否為A類、B類或C類地址(從I P地址的高位可以得知),也就知道網絡號和子網號之間的分界線。而根據子網掩碼就可知道子網號與主機號之間的分界線。

舉例
假設我們的主機地址是 1 4 0 . 2 5 2 . 1 . 1(一個B類地址),而子網掩碼為 2 5 5 . 2 5 5 . 2 5 5 . 0(其中8 b i t為子網號,8 bit為主機號)。
? 如果目的I P地址是 1 4 0 . 2 5 2 . 4 . 5,那麽我們就知道B類網絡號是相同的( 1 4 0 . 2 5 2),但是子網號是不同的(1和4)。用子網掩碼在兩個I P地址之間的比較如圖3 - 8所示。
? 如果目的 I P地址是1 4 0 . 2 5 2 . 1 . 2 2,那麽B類網絡號還是一樣的( 1 4 0 . 2 5 2),而且子網號也是一樣的(1),但是主機號是不同的。
? 如果目的I P地址是 1 9 2 . 4 3 . 2 3 5 . 6(一個C類地址),那麽網絡號是不同的,因而進一步的比較就不用再進行了。
技術分享圖片

給定兩個I P地址和子網掩碼後,I P路由選擇功能一直進行這樣的比較。

6.特殊情況的IP地址
經過子網劃分的描述,現在介紹 7個特殊的I P地址,如圖3 - 9所示。在這個圖中, 0表示所有的比特位全為0;- 1表示所有的比特位全為1;n e t i d、s u b n e t i d和h o s t i d分別表示不為全0或全1的對應字段。子網號欄為空表示該地址沒有進行子網劃分。
技術分享圖片

把這個表分成三個部分。表的頭兩項是特殊的源地址,中間項是特殊的環回地址,最後四項是廣播地址。
表中的頭兩項,網絡號為0,如主機使用B O O T P協議確定本機I P地址時只能作為初始化過程中的源地址出現。

7.一個子網的例子
技術分享圖片

問題是我們在子網 1 3中有兩個分離的網絡:一個以太網和一個點對點鏈路(硬件連接的S L I P鏈路)(點對點鏈接始終會帶來問題,因為它一般在兩端都需要 I P地址)。將來或許會有更多的主機和網絡,但是為了不讓主機跨越不同的網絡就得使用不同的子網號。我們的解決方法是把子網號從 8 bit 擴充到11 b i t,把主機號從 8 bit 減為 5 bit。這就叫作變長子網,因為1 4 0 . 2 5 2網絡中的大多數子網都采用 8 bit子網掩碼,而我們的子網卻采用 11 bit的子網掩碼。
如下圖,11位子網號中的前8 bit始終是1 3。在剩下的3 bit中,我們用二進制 0 0 1表示以太網,0 1 0表示點對點 S L I P鏈路。這個變長子網掩碼在 1 4 0 . 2 5 2網絡中不會給其他主機和路由器帶來問題—只要目的是子網 1 4 0 . 2 5 2 . 1 3的所有數據報都傳給路由器s u n(I P地址是 1 4 0 . 2 5 2 . 1 . 2 9),如圖 3 - 11所示。如果 s u n知道子網 1 3中的主機有 11 bit子網號,那麽一切都好辦了。

技術分享圖片
技術分享圖片

1 4 0 . 2 5 2 . 1 3子網中的所有接口的子網掩碼是 2 5 5 . 2 5 5 . 2 5 5 . 2 2 4,或0 x ffffff e 0。這表明最右邊的5 bit留給主機號,左邊的27 bit留給網絡號和子網號。
第1欄標為是“主機”,但是s u n和b s d i也具有路由器的功能,因為它們是多接口的,可以把分組數據從一個接口轉發到另一個接口。
這個表中的最後一行是圖 3 - 1 0中的廣播地址 1 4 0 . 2 5 2 . 1 3 . 6 3:它是根據以太網子網號(1 4 0 . 2 5 2 . 1 3 . 3 2)和圖3 - 11中的低5位置1(1 6+8+4+2+1=3 1)得來的。

IP的未來:

I P主要存在三個方面的問題。
1)B類地址枯竭
2)  32 bit的I P地址從長期的I n t e r n e t增長角度來看,是不夠用的。
3)當前的路由結構沒有層次結構,屬於平面型 ( f l a t )結構,每個網絡都需要一個路由表目。

來源: TCP/IP 卷一

03-IP網際協議