網際協議

引言

IP是TCP/IP協議族中最爲核心的協議。所有的TCP、UDP、ICMP及IGMP數據都以IP數據報格式傳輸。

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

IP首部

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

這裏寫圖片描述

  • 目前的協議版本號是4,因此IP有時也稱作IPv4。
  • 首部長度指的是首部佔32bit字的數目,包括任何選項。由於它是一個4比特字段,因此首部最長爲60個字節。普通IP數據報(沒有任何選擇項)字段的值是5。
  • 服務類型(TOS)字段包括一個3bit的優先權子字段(現在已被忽略),4bit的TOS子字段和1bit未用位但必須置0。4bit的TOS分別代表:最小時延、最大吞吐量、最高可靠性和最小費用。4bit中只能置其中1bit。現在大多數的TCP/IP實現都不支持TOS特性,但是自4.3BSDReno以後的新版系統都對它進行了設置。另外,新的路由協議如OSPF和IS-IS都能根據這些字段的值進行路由決策。
  • 總長度字段是指整個IP數據報的長度,以字節爲單位。利用首部長度字段和總長度字段,就可以知道IP數據報中數據內容的起始位置和長度。總長度字段是IP首部中必要的內容,因爲一些數據鏈路(如以太網)需要填充一些數據以達到最小長度。
  • 標識字段唯一地標識主機發送的每一份數據報。通常每發送一份報文它的值就會加1。
  • TTL(time-to-live)生存時間字段設置了數據報可以經過的最多路由器數。它指定了數據報的生存時間。TTL的初始值由源主機設置(通常爲32或64),一旦經過一個處理它的路由器,它的值就減去1。當該字段的值爲0時,數據報就被丟棄,併發送ICMP報文通知源主機。
  • 首部檢驗和字段是根據IP首部計算的檢驗和碼。它不對首部後面的數據進行計算。ICMP、IGMP、UDP和TCP在它們各自的首部中均含有同時覆蓋首部和數據檢驗和碼。
  • 最後一個字段是任選項,是數據報中的一個可變長的可選信息。

目前,這些任選項定義如下:

  • •安全和處理限制
  • •記錄路徑
  • •時間戳
  • •寬鬆的源站選路
  • •嚴格的源站選路

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

IP路由選擇

從概念上說,IP路由選擇是簡單的,特別對於主機來說。如果目的主機與源主機直接相連(如點對點鏈路)或都在一個共享網絡上(以太網或令牌環網),那麼IP數據報就直接送到目的主機上。否則,主機把數據報發往一默認的路由器上,由路由器來轉發該數據報。大多數的主機都是採用這種簡單機制。

在一般的體制中,IP可以從TCP、UDP、ICMP和IGMP接收數據報(即在本地生成的數據報)並進行發送,或者從一個網絡接口接收數據報(待轉發的數據報)並進行發送。IP層在內存中有一個路由表。當收到一份數據報並進行發送時,它都要對該表搜索一次。

如果數據報的目的不是這些地址,那麼(1)如果IP層被設置爲路由器的功能,那麼就對數據報進行轉發(也就是說,像下面對待發出的數據報一樣處理);否則(2)數據報被丟棄。

這裏寫圖片描述

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

  • 目的IP地址。它既可以是一個完整的主機地址,也可以是一個網絡地址,由該表目中的標誌字段來指定(如下所述)。主機地址有一個非0的主機號(見圖1-5),以指定某一特定的主機,而網絡地址中的主機號爲0,以指定網絡中的所有主機(如以太網,令牌環網)。
  • 下一站(或下一跳)路由器(next-hoprouter)的IP地址,或者有直接連接的網絡IP地址。下一站路由器是指一個在直接相連網絡上的路由器,通過它可以轉發數據報。下一站路由器不是最終的目的,但是它可以把傳送給它的數據報轉發到最終目的。
  • 標誌。其中一個標誌指明目的IP地址是網絡地址還是主機地址,另一個標誌指明下一站路由器是否爲真正的下一站路由器,還是一個直接相連的接口。
  • 爲數據報的傳輸指定一個網絡接口。

IP路由選擇是逐跳地(hop-by-hop)進行的。所有的IP路由選擇只爲數據報傳輸提供下一站路由器的IP地址。它假定下一站路由器比發送數據報的主機更接近目的,而且下一站路由器與該主機是直接相連的。
IP路由選擇主要完成以下這些功能:

  • 搜索路由表,尋找能與目的IP地址完全匹配的表目(網絡號和主機號都要匹配)。如果找到,則把報文發送給該表目指定的下一站路由器或直接連接的網絡接口(取決於標誌字段的值)。
  • 搜索路由表,尋找能與目的網絡號相匹配的表目。如果找到,則把報文發送給該表目指定的下一站路由器或直接連接的網絡接口(取決於標誌字段的值)。目的網絡上的所有主機都可以通過這個表目來處置。例如,一個以太網上的所有主機都是通過這種表目進行尋徑的。這種搜索網絡的匹配方法必須考慮可能的子網掩碼。關於這一點我們在下一節中進行討論。
  • 搜索路由表,尋找標爲“默認(default)”的表目。如果找到,則把報文發送給該表目指定的下一站路由器。

如果上面這些步驟都沒有成功,那麼該數據報就不能被傳送。如果不能傳送的數據報來自本機,那麼一般會向生成數據報的應用程序返回一個“主機不可達”或“網絡不可達”的錯誤。完整主機地址匹配在網絡號匹配之前執行。只有當它們都失敗後才選擇默認路由。

對於這個例子需要指出一些關鍵點:

  • 該例子中的所有主機和路由器都使用了默認路由。事實上,大多數主機和一些路由器可以用默認路由來處理任何目的,除非它在本地局域網上。
  • 數據報中的目的IP地址始終不發生任何變化(在8.5節中,我們將看到,只有使用源路由選項時,目的IP地址纔有可能被修改,但這種情況很少出現)。所有的路由選擇決策都是基於這個目的IP地址。
  • 每個鏈路層可能具有不同的數據幀首部,而且鏈路層的目的地址(如果有的話)始終指的是下一站的鏈路層地址。

子網尋址

大多數的子網例子都是B類地址。其實,子網還可用於C類地址,只是它可用的比特數較少而已。很少出現A類地址的子網例子是因爲A類地址本身就很少(但是,大多數A類地址都是進行子網劃分的)。

子網對外部路由器來說隱藏了內部網絡組織(一個校園或公司內部)的細節。子網劃分縮減了路由表的規模。子網對於子網內部的路由器是不透明的。

特殊情況的IP地址

這裏寫圖片描述


參考:《TCP/IP詳解》一書,推薦閱讀!

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