【網絡】TCP/IP協議網絡層 - IP協議炒雞詳細的詳解

一、認識IP協議

1、什麼是IP協議

IP協議(Internet Protocol,網際協議),IP協議作爲整個TCP/IP中至關重要的協議,主要負責將數據包發送給終端目標計算機。因此,IP協議可以讓世界上任何兩臺計算機之間進行通信。

IP協議是TCP/IP協議族的動力,它爲上層協議提供無狀態、無連接、不可靠的服務。

  • 無狀態:IP通信協議的雙方不會同步傳輸數據的狀態信息,每個IP數據報之間都是相互獨立的,沒有上下文關係
  • 無連接:IP通信協議雙方都不會長久的維持對方的任何信息,每次發送數據都必須表明對方的IP地址
  • 不可靠:IP通信協議並不能保證IP數據準確的發送到接收端,需要藉助TCP等協議完成可靠傳輸

2、IP地址

IP地址(IPv4)由32位的正整數來表示,TCP/IP通信要求將這樣的IP地址分配給每一個參與通信的主機。IP地址在計算機內部以二進制方法被處理。但是在實際生活中,人們並不適用用二進制數字,所以使用點分十進制來表示IP地址。

但是IPv4的地址畢竟是有限的,最多可以分配大約43億臺計算機(並且實際連接是肯定達不到43億的),肯定是不夠用的,所以誕生出了新的IPv6。

3、網絡標識和主機標識

IP地址是由“網絡標識”和“主機標識”兩部分組成的。網絡標識必須保證相互連接的每個段的地址不相重複。而相同段內連接的主機必須由相同的網絡地址。IP地址的“主機標識”則不允許在同一個網段內重複出現。所以這樣就可以通過設計網絡地址和主機地址,在相互連接的整個網絡中保證每臺主機的IP地址不會重複出現。

4、網段的劃分

1、早期的IP地址分爲五個級別:A類、B類、C類、D類、E類。

它根據IP地址中的第1位到第4位的比特列對其網絡標識和主機標識進行區分。

 

  • A類:0.0.0.0 ~ 127.255.255.255
  • B類:128.0.0.0 ~ 191.255.255.255
  • C類:192.0.0.0 ~ 223.255.255.255
  • D類:224.0.0.0 ~ 239.255.255.255
  • E類:240.0.0.0 ~ 247.255.255.255

2、現在的劃分方案爲 —— CIDR:(子網掩碼 netmask)

通過 子網掩碼 識別碼將子網網絡地址細分出比 A類 、B類、C類 更小的粒度網絡。這種方式實際上就是將原來的 A類 、B類  、C類等分類中的主機地址部分作爲子網地址,可以將原網絡分爲多個物理網絡的一種機制。

子網掩碼如果用二進制表示的話,也是一個32爲的數字,它對應IP地址網絡標識部分的位全部爲 “1”,對應IP地址的主機標識部分則全部用 “0”。

例:有一個網絡IP192.168.122.132,netmask 255.255.255.0,將這個網絡平均劃分成四個子網,請問每個子網的IP地址範圍及子網掩碼。

通過IP地址和子網掩碼得到原網絡的主機號個數(netmask 取反):256

通過IP地址和子網掩碼得到原網絡號(IP地址 與 netmask 相與):192.168.122.0

平均劃分四個子網,則每個子網主機號個數(256/4)64個 0~63個

子網掩碼:~63(255.255.255.192)

RFC1918規定,能夠用於組建私網的網段只有:10.~.~.~ 、172.16.~.~ - 172.31.~.~ 、 192.168.~.~

3、特殊的IP地址: 192.168.122.132   255.255.255.0

主機號全爲1的IP地址 局域網的UDP廣播地址 192.168.122.255

主機號全爲0的IP地址 網絡號-識別一個網絡 192.168.122.0

每一個局域網中,這兩個主機號是不能分配給主機的意味着主機號雖然有256,但是能夠分配給主機的只有254個

127.0.0.1 本地迴環網卡地址 - 虛擬網卡地址 - 用於本機內的網絡迴環測試

二、IPv4

1、IPv4首部格式

  • 4位版本號:指定IP協議的版本,對於IPv4來說,這個值爲4;
  • 4爲頭部長度(IHL):標識該IP頭部有多少個32bit字(4個字節),最長爲60個字節;
  • 8爲服務類型(TOS):包括一個3爲的優先權字段,4個字節的TOS字段和1位保留字段(必須置0),其中四位TOS分別表示:最小延時、最大吞吐量、最高可靠性、最小費用,其中最多隻有一個可以被置爲1;
  • 16位總長度:是指整個IP數據報的長度,以字節單位,最大值爲65536字節,但是由於MTU(最大傳輸單元)的限制,實際傳輸過程中長度遠遠沒有達到最大值,超過MTU的數據報將會被分片傳輸;
  • 16位標識:唯一的標識主機發送的每一個數據報,初始值由系統隨機分配,每發送一個數據報,其值就加1;
  • 3位標誌字段:第一位保留,第二位(DF)表示“禁止分片”,第三位(MF)表示“更多分片”;
  • 13位片偏移:是分片先對原始IP數據報開始出的偏移;
  • 8位生存時間(TTL):是數據報達到目的地之前允許經過的路由器跳數,數據報沒經過一個路由,該值就會被路由器減1,當爲0時,該數據報就會被丟棄,並向源端發送ICMP差錯報文,可以防止數據進入路由循環;
  • 8位協議:是用來區分上層協議,比如ICMP是1、TCP是6、UDP是17;
  • 16位頭部校驗和:由發送端填充,接收端對其使用CRC校驗,判斷IP數據報頭部是否在傳輸過程中損壞;
  • 32位源端IP地址
  • 32位目的段IP地址
  • 選項字段(最多40個字節,因爲IP地址頭部最長是60字節),可用的選項爲:
  1. 記錄路由:告訴數據報途徑的所有路由器都將自己的IP地址填入IP頭部的選項部分;
  2. 時間戳:告訴每個路由器都將數據報被轉發的時間(或時間與IP地址對)填入IP頭部選項部分;
  3. 鬆散路由選擇:指定一個路由器IP地址列表,數據報發送過程都必須經過其中所有的路由器;
  4. 嚴格源路由選擇:和鬆散路由選擇類似,但是數據報只能經過被指定的路由器;

2、IP模塊的工作流程

通過這張圖片,我們可以很清晰的瞭解整個IP地址的工作流程。

首先當數據報進入 IP出入隊列後,會對頭部進行CRC校驗,確認無誤後就會對頭部信息進行分析和判斷。值得指出的一點是,在數據轉發的過程中,如果IP數據報不允許被轉發,則會丟棄該數據報。

【注】:文中圖片均剪切自《圖解TCP/IP(第五版)》、《Linux高性能服務器編程》

 

 

 

 

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