IP網際協議

    IP 協議位於網絡層,它是 TCP/IP 協議族中最爲核心的協議,所有的 TCP、UDP、ICMP 及 IGMP 數據都以 IP 數據報格式傳輸。IP 協議提供的是 不可靠無連接 的數據報傳送服務。

    不可靠(unreliable):IP 協議不能保證數據報能成功地到達目的地,它僅提供傳輸服務。當發生某種錯誤時,IP 協議會丟棄該數據報。傳輸的可靠性全由上層協議來提供。

    無連接(connectionless):IP 協議對每個數據報的處理是相互獨立的。這也說明, IP 數據報可以不按發送順序接收。如果發送方向接收方發送了兩個連續的數據報(先是 A,然後是 B),每個數據報可以選擇不同的路線,因此 B 可能在 A 到達之前先到達。

    一、IP 數據報

    首先看一下 IP 數據報的格式,其中沒有一個字段是多餘的,學習 IP 協議就應從學習它的報文字段意義和作用開始。

   

    如上圖所示,普通的 IP 數據報的報頭長度 20 字節(除非有選項字段),各個部分的作用:

    版本號 :4 位,用於標明 IP 版本號,0100 表示 IPv4,0110 表示 IPv6。目前常見的是 IPv4。

    首部長度 :4 位,表示 IP 報頭長度,包括選項字段。

    服務類型(TOS) :分別有:最小時延、最大吞吐量、最高可靠性、最小花費 4 種服務,如下圖所示。4 個標識位只能有一個被置爲 1 :

   

    總長度 :16 位,報頭長度加上數據部分長度,便是數據報的總長度。IP 數據報最長可達 65535 字節。

    標識 :16 位,接收方根據分片中的標識字段相不相同來判斷這些分片是不是同一個數據報的分片,從而進行分片的重組。通常每發送一份報文它的值就會加 1。

    標誌 :3 位,用於標識數據報是否分片。其中的第 2 位是不分段(DF)位。當 DF 位被設置爲 1 時,則不對數據包進行分段處理;第 3 位是分段(MF)位,除了最後一個分段的 MF 位被設置爲 0 外,其他的分段的 MF 位均設置爲 1。

    偏移 :13 位,在接收方進行數據報重組時用來標識分片的順序。

    生存時間(TTL) :8 位,用於設置數據報可以經過的最多的路由器個數。TTL 的初始值由源主機設置(通常爲 32 或 64),每經過一個處理它的路由器,TTL 值減 1。如果一個數據報的 TTL 值被減至 0,它將被丟棄。

    協議 :8 位,用來標識是哪個協議向 IP 傳送數據。ICMP 爲 1,IGMP 爲 2,TCP 爲 6,UDP 爲 17,GRE 爲 47,ESP 爲 50。

    首部校驗和 :根據 IP 首部計算的校驗和碼。

    源 IP 和目的 IP :數據報頭還會包含該數據報的發送方 IP 和接收方 IP。

    選項 :是數據報中的一個可變長、可選的信息,不常用,多用於安全、軍事等領域。


    二、IP 地址分類

    爲了便於尋址以及層次化構造網絡,每個 IP 地址可被看作是分爲兩部分,即 網絡號主機號 。同一個區域的所有主機有相同的網絡號(即 IP 地址的前半部分相同),區域內的每個主機(包括路由器)都有一個主機號與其對應。

    IP 地址被分爲 A,B,C,D,E 五類,其中 A 類給大型網絡或政府機構等,B 類分配給中型網絡、跨國企業等,C 類分配給小型網絡,D 類用於多播,E 類用於實驗,各類可容納的地址數目不同。其中我們最常見的爲 A,B,C 這三類。

    IP 地址用 32 位二進制數字表示的時候,A,B,C 類 IP 的網絡號長度分別爲 8 位、16 位、 24位:

   

    A 類地址

  •     A 類地址網絡號範圍:1.0.0.0---127.0.0.0
  •     A 類 IP 地址範圍:1.0.0.0---127.255.255.255
  •     A 類 IP 的私有地址範圍:10.0.0.0---10.255.255.255 (所謂的私有地址就是在互聯網上不使用,而被用在局域網絡中的地址)
  •     127.X.X.X 是保留地址,用做循環測試用的
  •     因爲主機號有 24 位,所以一個 A 類網絡號可以容納 2^24-2=16777214 個主機號

    B 類地址

  •     B 類地址網絡號範圍:128.0.0.0---191.255.0.0
  •     B 類 IP 地址範圍:128.0.0.0---191.255.255.255
  •     B 類 IP 的私有地址範圍:172.16.0.0---172.31.255.255
  •     169.254.X.X 是保留地址;191.255.255.255 是廣播地址
  •     因爲主機號有 16 位,所以一個 B 類網絡號可以容納 2^16-2=65534 個主機號

    C 類地址

  •     C 類地址網絡號範圍:192.0.0.0---223.255.255.0
  •     C 類 IP 地址範圍:192.0.0.0---223.255.255.255
  •     C 類 IP 的私有地址範圍:192.168.0.0---192.168.255.255
  •     因爲主機號有 8 位,所以一個 C 類網絡號可以容納 2^8-2=254 個主機號


    三、子網劃分

    IP 地址如果只使用 ABCDE 類來劃分,會造成大量的浪費:一個有 500 臺主機的網絡,無法使用 C 類地址。但如果使用一個 B 類地址,6 萬多個主機地址只有 500 個被使用,造成 IP 地址的大量浪費。

    因此,可以在 ABC 類網絡的基礎上,進一步劃分子網:佔用主機號的前幾個位,用於表示子網號

    這樣 IP 地址就可看作 IP = 網絡號 + 子網號 + 主機號

    子網號的位數沒有硬性規定,於是我們用 子網掩碼 來確定一個 IP 地址中哪幾位是主機號,具體使用方法如圖:

   

    子網掩碼中的 1 標識了 IP 地址中相應的網絡號,0 標識了主機號。將 IP 地址和子網掩碼進行 邏輯與運算 ,結果就能得到網絡號和子網號。

   

    四、IP 路由選擇

    如果發送方與接收方直接相連(點對點)或都在一個共享網絡上(以太網),那麼 IP 數據報就能直接送達。 而大多數情況則是發送方與接收方通過若干個路由器(router)連接,那麼數據報就需要經過若干個路由器的轉發才能送達,它是怎麼選擇一個合適的路徑來"送貨"的呢?

    IP 層在內存中有一個路由表(輸入命令 route -n 可以查看路由表),當收到一份數據報並進行發送時,都要對該表進行搜索:

  1.     搜索路由表,如果能找到和目的 IP 地址完全一致的主機,則將 IP 數據報發向該主機;
  2.     搜索路由表,如果匹配主機失敗,則匹配同子網的路由器(這需要子網掩碼的協助)。如果找到路由器,則將 IP 該數據報發向該路由器;
  3.     搜索路由表,如果匹配同子網路由器失敗,則匹配同網絡號路由器,如果找到路由器,則將該 IP 數據報發向該路由器;
  4.     如果以上都失敗了,就搜索默認路由,如果默認路由存在,則發報;
  5.     如果都失敗了,就丟掉這個包;
  6.     接收到數據報的路由器再按照它自己的路由表繼續轉發,直到數據報被轉發到目的主機;
  7.     如果在轉發過程中,IP 數據報的 TTL(生命週期)已經被減爲 0,則該 IP 數據報就被拋棄。  

   

     五、NAT 技術

    當你用 ifconfig 查看 IP 地址時,有時你會發現自己的 IP 地址是這樣的———192.186.X.X 或 172.16.X.X。

    這是 C 類網和 B 類網的私有地址,這就是俗稱的內網 IP。這是因爲你的路由器採用了 NAT 技術。

    NAT(Network Address Translation,網絡地址轉換)是 1994 年提出的。當在專用網內部的一些主機本來已經分配到了內網 IP 地址,但現在又想和因特網上的主機通信時,NAT 技術將其內網 IP 地址轉換成全球 IP 地址,然後與因特網連接,也就是說,內網的數臺主機使用了同一個全球 IP 地址在上網。

    NAT 技術實現了寬帶共享,而且有助於緩解 IP 地址空間枯竭的問題。


    六、IP 的未來

    我們現在使用的 IPv4 協議版本從理論上講,可以編址 1600 萬個網絡、40 億臺主機。但採用 A、B、C 三類編址方式後,可用的網絡地址和主機地址的數目大打折扣,以至 IP 地址 已於 2011 年 2 月 3 日分配完畢 。 其中北美佔有 3/4,約 30 億個,而人口最多的亞洲只有不到 4 億個,中國截止 2010 年 6 月 IPv4 地址數量達到 2.5 億,落後於 4.2 億網民的需求。地址不足,嚴重地制約了中國及其他國家互聯網的應用和發展。

    隨着網絡技術的發展,計算機網絡將進入人們的日常生活,可能身邊的每一樣東西都需要連入全球因特網,在這樣的環境下,IPv6 應運而生。

    IPv6 的地址長度是 128 位,通常將這 128 位的地址按每 16 位劃分爲一個段,將每個段轉換成十六進制數字,並用冒號隔開,比如:2000:0000:0000:0000:0001:2345:6789:abcd 就是一個 IPv6 地址。

   單從數量級上來說,IPv6 所擁有的地址容量是 IPv4 的約 8×10^28 倍,達到 2^128(算上全零的)個。這不但解決了網絡地址資源數量的問題,同時也爲除電腦外的設備連入互聯網在數量限制上掃清了障礙。

    隨着 IPv4 不足,支持 IPv6 的網絡迅速增長,現在全球已經有 5%的網絡使用 IPv6。


發佈了58 篇原創文章 · 獲贊 1169 · 訪問量 37萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章