TCP/IP協議-IP協議

來源:互聯網
上載者:User

標籤:

  A contented mind is a perpetual feast.

  "知足長樂"

 

參考資料:TCP/IP入門經典 (第五版)

        TCP/IP詳解 卷一:協議

 

一、簡介

  IP協議(Internet協議,網際協議),是TCP/IP協議族中最核心的協議,位於協議棧的網路層

  既然位於網路層,所以IP協議最主要的功能就是 提供獨立於硬體的邏輯定址 和 支援網間資料傳遞的路由選擇,我們將在後面的部分介紹這兩個功能,下面先來分析一下IP首部

 

二、IP首部

  我們在 TCP/IP協議-入門 中說到:當傳輸層的TCP分段或UDP資料報傳送到網路層時,IP協議將會為分段或資料報封裝上IP首部,接下來我們分析一下IP首部,IP資料報格式如下

 

其中各欄位的含義如下:

  ● 4位版本:目前的協議版本號碼是4,即IPv4

  ● 4位首部長度:我們注意到中每一行的長度是32 bit,即4個位元組,首部長度指的就是首部佔32 bit的數目,即行數。由於首部長度只有4位,所以IP首部的最大長度為(24-1)*4=60個位元組

  ● 8位服務類型(TOS):包括一個3 bit的優先權子欄位(現在已經被忽略),4 bit的TOS子欄位和1 bit未用位但必須置0。4 bit的TOS分別代表:最小時延、最大輸送量、最高可靠性和最小費用,4 bit中只能置其中1 bit,如果4 bit都為0,就意味著是一般服務

  ● 16位總長度:總長度指的是整個IP資料報的位元組數,用總長度-首部長度,我們就可以知道資料部分的長度,這個欄位佔用16 bit,所以IP資料報的最大長度為216-1=65535位元組。雖然最大長度可以達到65535,但是由於鏈路層的MTU限制,一般不會達到那麼大

  ● 16位標識:識別欄位唯一地標識主機發送的每一份資料報。在討論分區和重組時,再詳細討論16位標識、3位標誌和13位片位移

  ● 8位存留時間(TTL):TTL設定了資料報可以經過的最多路由器數,它指定了資料報的存留時間。其初始值由源主機設定,每經過一個處理它的路由器,它的值就減1,當該欄位為0時,資料報就被丟棄,並發送ICMP報文通知源主機

  ● 8位協議:協議欄位也稱作協議域,用來標記資料來自上層的哪一個協議:1表示ICMP協議,2表示為IGMP協議,6表示為TCP協議,17表示為UDP協議

  ● 16位首部檢驗和:檢驗和欄位是根據IP首部計算的檢驗和碼,計算方法為:首先把該欄位設定為0,然後對首部中(不包括資料部分)每個16 bit進行反碼求和,最後將結果存在該欄位中。當接收方收到IP資料報時,同樣對首部的每個16 bit進行反碼求和,這一次因為包含了之前計算好的檢驗和,所以如果沒有發生任何差錯,那麼接收方計算的結果應該為全1。如果不為全1,IP將會丟棄收到的資料報,但不建置錯誤報文,由上層去發現並處理

  ● 源IP地址和目的IP地址就比較直觀了

  ● 選項:這個欄位是資料報中一個可變長的可選資訊,由於這些選項很少被使用,並非所有主機都支援,所以這裡不做更詳細的介紹,可參考相關RFC文檔

 由上面易知,當選項不存在時,IP首部的長度是固定的20位元組

  

三、邏輯定址

  接下來我們就來討論一下IP協議的主要功能,首先是邏輯定址,在 TCP/IP協議-入門 中我們已經介紹了一些相關的概念,下面我們來回顧一下

    ● IP地址:IP協議為網路中的裝置提供的身份標識,長32 bit

    ● 子網路遮罩:類似於IP地址,用於識別網路號(包括子網號)和主機號

  瞭解了IP地址和子網路遮罩,我們就可以討論子網劃分了

  

 子網劃分

  由於網路系統是由無數台網路裝置通過傳輸介質互聯在一起的,所以網路中的所有裝置都在同一個集合中。當把資料從一台主機發送給另一台主機時,如果兩台主機不是直接相連的話,需要經過中間裝置,當網路中的裝置數量太大時,傳輸效率會大大降低。如果把整個網路系統分成很多個子網,那麼通過區別不同子網就可以增加傳輸的效率。子網劃分的思想就是:將網路系統分成許多的大型網路,每個大型網路又包含許多子網,而每個子網內又包含許多主機

  IP協議通過將IP地址分成不同的部分來標識網路號、子網號以及主機號。上一篇文章我們已經討論了五類IP地址(並沒有給出子網號部分),假設本機所在的子網使用B類地址,子網號長度為10位,本機所在子網的子網路遮罩將會像這樣

 

假設原生IP地址為255.255.255.195,即

 

  我們發現,兩個地址的前26位是一樣的,即任意主機其IP地址的網路號和子網號部分和它所在的子網的子網路遮罩是一樣的。這樣一來,我們就可以通過子網路遮罩來知道某一IP地址是不是本子網的,然後通過主機號來區別子網內的每一台主機。

  

 CIDR:無類型域間選路

  IP地址是用32個bit來表示的,所以IP地址的數量是有限的,最多232-1個IP地址,並且其中有很多是停用。當網路中的裝置達到一定數量時,IP地址將不夠用了!一種解決方案是:使用更多個bit來表示IP地址,比如128個bit,這就是IPv6,這裡暫不討論。另外一種方法是:根據網路號的長度不同來用同一個IP地址表示不同的主機,這就是無類別域間路由。

  前面我們講到一個IP地址唯一地標識網路中的一台裝置,CIDR的思想就是用一個IP地址標識多台主機。其思路就是使用一個斜線(/)作為分隔字元,在IP地址後面跟一個十進位數值來表示地址中網路號所佔的位元。例如:在CIDR地址205.123.196.183/25中,前25個bit是網路號(包括子網號),後面7個bit是主機號,這實現了IP地址的重用

 

 特殊的IP地址

  前面講到,有一些IP地址是停用,具體有哪些呢?見下表

  說明:0表示所有bit全為0;-1表示所有bit全為1;netid、subnetid和hostid分別表示不為全0或全1的對應欄位。子網號欄為空白表示該地址沒有進行子網劃分

 

  這個表分為三個部分:頭兩項是特殊的源地址,中間項是特殊的迴路位址,最後四項是廣播位址

 

四、路由選擇

  我們先來瞭解幾個概念

 路由器(router)

  前面一直在說路由器,到底什麼是路由器?路由器是負責根據邏輯地址對通訊流量進行過濾的裝置,“又稱網關裝置(Gateway)是用於串連多個邏輯上分開的網路”  --百度百科。簡單來說,路由器就是為IP資料包進行導向的工具,告訴資料報下一站應該去哪

 路由表(routing table)

  路由表就是一張儲存指向特定網路地址路徑的表,其中儲存著網路周邊的拓撲資訊.

  路由器工作時,如果每次轉寄時都將資料報發送到任意的路由器或者某特定的路由器,那麼傳輸的效率將會非常低下,因為每次發送都要重新路由(就像你去一個地方,從來不記住路線,每次去那個地方都要問路)。如果能在每次傳輸完之後記錄一下本次傳輸的目的地址資訊,那麼下一次再需要發送給這個地址時,我就可以根據記錄的資訊找一條最短的路發送給它,而不用通過其他路由來轉寄(就是記住去這個地方的路線,下次自己就可以直接走過去),路由表就是用來儲存這些傳輸路徑的相關資訊的

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

    ● 目的IP地址。它既可以是一個完整的主機地址,也可以是一個網路地址,由標誌欄位來指定

    ● 下一站路由器的IP地址,或者有直接相連的網路IP地址。下一站路由器是指一個在直接相連網路上的路由器,通過它可以轉寄資料報。它不是最終目的地,但是它可以將資料報轉寄到最終目的地

    ● 標誌。其中一個標誌指明目的IP地址是網路地址還是主機地址,另一個標誌指明下一站路由器是否真正的下一站路由器,還是一個直接相連的介面

    ● 為資料報的傳輸指定一個網路介面

  

 路由選擇

  對於主機來說,路由選擇是一件簡單的事,如果目的主機與源主機直接相連,那麼直接發送就可以了;如果沒有直接相連,那麼只要發送給預設路由,讓路由器來轉寄就行了。

  對於路由器來說,則要完成更多的功能,具體如下:

    ①搜尋路由表,尋找能與目的IP地址完全符合的表目(網路號和主機號都要匹配)。如果找到,則把報文發送給該表目指定的下一站路由器或直接相連的網路介面

    ②搜尋路由表,尋找能與目的網路號匹配的表目。如果找到,則把報文發送給該表目指定的下一站路由器或直接相連的網路介面。目的網路上的所有主機都可以通過這個表目來處置

    ③如果上面兩步都沒有找到,那麼尋找標為“預設(default)”的表目。如果找到,則把報文發送給該表目指定的下一站路由器

  如果以上三步都沒有成功,那麼該資料報就不能發送。

  如此迴圈,直到到達目的地或者TTL減為0.

 

五、查看介面和網路的有關資訊

  查看本機網路介面資訊(包含物理地址、IP地址、子網路遮罩、MTU等資訊): $ ifconfig 

  查看路由表資訊: $ route  

   或者  $ netstat -rn 

 

注:本文僅僅對IP協議做了一個大概的介紹,更多更細節的問題沒有涉及,如當資料報發送失敗時怎麼處理等等。更詳細的內容請參考RFC文檔或者其他資料

 

TCP/IP協議-IP協議

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.