TCP-IP學習筆記(六)——IP:網際協議1

1、引言

IP是TCP/IP協議族中最爲核心的協議。所有的 TCP、UDP、ICMP及IGMP數據都以IP數據報格式傳輸。IP提供的是不可靠、無連接的數據報傳送服務。其中,<font color=red>**不可靠**(unreliable)</font>的意思是它不能保證IP數據報能成功地到達目的地。IP僅提供最好的傳輸服務。如果發生某種錯誤時,如某個路由器暫時用完了緩衝區,IP有一個簡單的錯誤處理算法:丟棄該數據報,然後發送ICMP消息報給信源端。任何要求的可靠性必須由上層來提供(如TCP)。<font color=red>**無連接**(connectionless)</font>這個術語的意思是IP並不維護任何關於後續數據報的狀態信息。每個數據報的處理是相互獨立的。這也說明, IP數據報可以不按發送順序接收。如果一信源向相同的信宿發送兩個連續的數據報(先是A,然後是B),每個數據報都是獨立地進行路由選擇,可能選擇不同的路線,因此B可能在A到達之前先到達。

2、IP首部

IP數據報的格式如下圖所示,普通的IP首部長爲20個字節(除非含有選項字段)。
這裏寫圖片描述
圖中最高位在左邊(0bit),最低位在右邊(31bit)。4個字節的32bit依序傳輸:首先是0~7 bit,其次8~15bit,然後16~23bit,最後是24~31bit。這種傳輸次序稱作big endian字節序。
目前的協議版本號是4,因此IP有時也稱作IPv4。
首部長度指的是首部佔 32 bit字的數目,包括任何選項。由於它是一個 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數據報最長可達65535字節。
標識字段唯一地標識主機發送的每一份數據報。通常每發送一份報文它的值就會加 1。
TTL(time-to-live)生存時間字段設置了數據報可以經過的最多路由器數。它指定了數據報的生存時間。TTL的初始值由源主機設置(通常爲32或64),一旦經過一個處理它的路由器,它的值就減去1。當該字段的值爲0時,數據報就被丟棄,併發送 ICMP報文通知源主機。
首部檢驗和字段是根據IP首部計算的檢驗和碼。它不對首部後面的數據進行計算。ICMP、IGMP、UDP和TCP在它們各自的首部中均含有同時覆蓋首部和數據檢驗和碼。
最後一個字段是任選項,是數據報中的一個可變長的可選信息。目前,這些任選項定義如下:
• 安全和處理限制(用於軍事領域,詳細內容參見 RFC 1108[Kent 1991])
• 記錄路徑(讓每個路由器都記下它的 I P地址,見7 . 3節)
• 時間戳(讓每個路由器都記下它的 I P地址和時間,見7 . 4節)
• 寬鬆的源站選路(爲數據報指定一系列必須經過的 I P地址,見8 . 5節)
• 嚴格的源站選路(與寬鬆的源站選路類似,但是要求只能經過指定的這些地址,不能
經過其他的地址)。
這些選項很少被使用,並非所有的主機和路由器都支持這些選項。

3、IP路由選擇

IP路由選擇是簡單的,特別對於主機來說。如果目的主機與源主機直接相連(如點對點鏈路)或都在一個共享網絡上(以太網或令牌環網),那麼IP數據報就直接送到目的主機上。否則,主機把數據報發往一默認的路由器上,由路由器來轉發該數據報。大多數的主機都是採用這種簡單機制。
在一般的體制中,IP可以從TCP、UDP、ICMP和IGMP接收數據報(即在本地生成的數據報)並進行發送,或者從一個網絡接口接收數據報(待轉發的數據報)並進行發送。IP層在內存中有一個路由表。當收到一份數據報並進行發送時,它都要對該表搜索一次。當數據報來自某個網絡接口時,IP首先檢查目的I P地址是否爲本機的IP地址之一或者IP廣播地址。如果確實是這樣,數據報就被送到由IP首部協議字段所指定的協議模塊進行處理。如果數據報的目的不是這些地址,那麼(1)如果I P層被設置爲路由器的功能,那麼就對數據報進行轉發(也就是說,像下面對待發出的數據報一樣處理);否則(2)數據報被丟棄。
路由表中每一項都包含下面這些信息:
目的IP地址、下一站路由器的IP地址、標誌、爲數據報的傳輸指定一個網絡接口。
現在來看一個例子:主機bsdi有一份IP數據報要傳到ftp.uu.net主機上,它的IP地址是192.48.96.9。經過的前三個路由器如圖3-4所示。首先,主機bsdi搜索路由表,但是沒有找到與主機地址或網絡地址相匹配的表目,因此只能用默認的表目,把數據報傳給下一站路由器,即主機sun。當數據報從bsdi被傳到sun主機上以後,目的IP地址是最終的信宿機地址(192.48.96.9),但是鏈路層地址卻是s u n主機的以太網接口地址。
bsdi到ftp.uu.net初始路徑
當sun收到數據報後,它發現數據報的目的IP地址並不是本機的任一地址,而sun已被設置成具有路由器的功能,因此它把數據報進行轉發。經過搜索路由表,選用了默認表目。根據sun的默認表目,它把數據報轉發到下一站路由器netb,該路由器的地址是140.252.1.183。數據報是經過點對點SLIP鏈路被傳送的,採用了最小封裝格式。
當netb收到數據報後,它執行與sun主機相同的步驟:數據報的目的地址不是本機地址,而netb也被設置成具有路由器的功能,於是它也對該數據報進行轉發。採用的也是默認路由表目,把數據報送到下一站路由器 gateway(140.252.1.4)。位於以太網140.252.1.4上的主機n e t b用A R P獲得對應於140.252.1.4的48 bit以太網地址。這個以太網地址就是鏈路層數據幀頭上的目的地址。
路由器gateway也執行與前面兩個路由器相同的步驟。它的默認路由表目所指定的下一站路由器IP地址是140.252.104.2。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章