這是關於網路系列的第一篇文章,接下來會有更多精彩內容.敬請期待! 讓我們一起乘風破浪!
前言
網路是我們工程師的基礎技能之一, 畢竟沒有網路我們什麼也幹不了! 從各大公司的招聘要求上看,網路也是重點的考核部分. 今天就和大家一起復習下(還)大學裡的課程(欠下的債)! TCP/IP協議簇的IP協議.
正文
理解網路模型
網路的設計大佬們想出了分層的設計,將各個功能分開,交付給不同的層,這樣的好處是便於更新和維護(IPv6的到來並沒有使整個網路重新設計),也便於我們的學習和理解.下面是各個版本的網路體系的結構圖:
讓我們明確下各層的工作職責(以五層協議為例):- 應用層,該層協議主要負責各個應用程式之間互動的規則.如HTTP,DNS,其互動的資料單元可以稱為"報文".
- 運輸層,為應用層提供通用的資料傳輸服務.為上層跑腿的.TCP,UDP均是運輸層協議.
- 網路層,為網路中不同的主機提供通訊服務.IP協議工作在該層.
- 資料鏈路層,負責相鄰兩點的資料傳送.
- 物理層, 傳輸位元流, 0 或 1.
每一層將資料封裝成自己能理解的資料格式,交付給下一層,下一層將收到的作為自己的資料再次新增本層的必要資料,向下交付,直到鏈路層,傳遞到目的地後,每層再將該層的必要資料去掉,交付給上層.如下圖:
理解IP協議
在理解了網路模型和各層直接的配合之後,下面進入今天的正題,網際協議(IP).
該節主要理解IP協議給我們提供的功能有哪些,說白了就是它能幹嘛.
- 為網路中的主機(PC或路由或閘道器)提供身份證.
- 定義了網路主機的基本交流方式, 從IP資料包的格式可以看出.
- 為路由定址提供方便, 從路由表結構可以看出.
任何一個協議都可以由語法,語義和同步三部分組成.
- 語法,交換資訊的格式,對於IP協議,就是IP報文的格式.
- 語義,即需要發出何種控制資訊,以及接收到資訊後如何響應.
- 同步,對事件順序的詳細說明.
也就是定義了使用IP協議進行交流的法則.
IPv4
IPv4是IP協議的第4個版本,就是我們現在使用的.下面從多個方面瞭解下該版本.
IP地址
網路上的主機都需要一個IP地址,這樣才能知道彼此的位置.IPv4地址由32bit構成,常使用點分十進位制表示(192.168.1.1)
.
分類
IP地址的分類就是把所有IP劃分為若干類別, 每一類都由固定長度的欄位組成.分別為網路號
和主機號
.下面是各類地址組成示意圖:
-
A類地址,8位網路號,第一位固定為
0
,可用的網路號只有126個(2^7-2),網路號從0到127. 減去2是因為:IP地址全為0表示"本網路",保留; 網路號為127
作為軟體迴環測試
使用, 若主機發出目的地為127.0.0.1
的資料時,該資料不會向任何網路上的主機傳送.也就是說127
開頭的地址不能使用.對於A類地址中的每一個網路號,對應的主機號有(2^24-2)個: 主機號全0表示,其網路號對應的網路地址, 全1表示
所有主機
的意思. -
B類地址網路號為16位,但前面2位以固定為
1 0
.無論怎麼取值,無法出現全0或全1的情況.128.0.0.0
的網路是不使用的,實際使用的最小B類網路地址為128.1.0.0
.所以B類的網路地址有(2^14-1)個. -
C類的地址有24位的網路號,最前面的3位固定為
1 1 0
.192.0.0.0
的網路地址也是不使用的,最小的C類地址為192.0.1.0
總結如下:
網路類別 | 網路數量 | 第一個可以使用的網路號 | 最後一個可以使用的網路號 |
---|---|---|---|
A | 126(2^7-2) | 1 | 126 |
B | 16383(2^14-1) | 128.1 | 191.255 |
C | 2097151(2^21-1) | 192.0.1 | 223.255.255 |
分類的好處:
- 方便管理,IP地址管理機構只需管理網路號,剩下的可以由下級管理.
- 路由定址時根據網路地址轉發分組,減小路由表.
資料包格式
先看下IP資料包的基本格式:
可以看到IP資料包包含了首部和資料部分. 其中首部包含固定的20位元組和可變的部分. 下面是各部分的解釋:-
版本,佔4位,IP協議的版本號,通訊雙方需要相同.
-
首部長度,佔4位, 單位
4位元組
.最大能表示(2^4-1) * 4 = 60
位元組.當IP分組的首部長度不是4的整數倍時,需要使用填充欄位填充. -
區分服務,佔8位, 表示服務型別,未使用.
-
總長度, 佔16位,表示首部和資料部分的總長度(單位位元組).因此資料包的最大總長度為(2^16-1 = 65535)位元組.
-
標識(identification), 佔16位.當資料包長度超過下層的MTU時,需要分片, 被分片的資料包的標識一樣,這樣可以進行重組.
-
標誌(Flag), 佔3位, 目前只有2位有意義
- 最低位,MF(More Fragment) = 1 表示
後面還有分片
. MF = 0 表示分片中的最後一個. - 中間一位,DF(Don't Fragment),不要分片,只有當DF=0才允許分片
- 最低位,MF(More Fragment) = 1 表示
-
片偏移, 佔13位.較長的分組在分片後, 某片在原分組的相對位置.必須是8位元組的整數倍.
-
生存時間, 佔8位, Time To Live(TTL),開始指生存的秒數,後來變為經過路由的跳數,每經過一個路由,TTL減小1,當為0時,丟棄該資料.顯然,最大跳數為255, 為1時就只能在區域網中傳播了.
-
協議, 佔8位.支出該資料包的資料是使用何種協議, 以便目的主機IP層知道將資料交付給哪個協議處理.
常用的協議及對應數值:
議名稱 ICMP IGMP IP TCP EGP IGP UDP IPv6 ESP OSPF 議欄位值 1 2 4 6 8 9 17 41 50 89 -
首部校驗和, 佔16位.資料包的首部校驗和,不包括資料部分.
-
源地址, 目的地址, 各佔32位
IPv6
IPv6的出現是解決IPv4資源枯竭的問題.其仍然支援無連線的傳送, 但傳送的是PDU分組,而不是IPv4的資料包.
IP地址
IPv6的地址是128bit,在可預見的未來是夠用的.但和IPv4版本並不相容, 若使用IPv4版本的主機A和使用IPv6版本的主機B之間通訊是需要特殊處理的,在後面會介紹方法.
IPv6的地址表示
IPv6的地址採用冒號十六進位制記法
, 8組4個16進位制數字,中間使用冒號隔開.例如:
6845:8C64:FFFF:FFFF:0:1180:9000:FFFF
複製程式碼
-
若一組中全是0,可以省略三個.
-
若存在連續多組0,可以使用冒號取代,但只能壓縮一次
FF05:0:0:0:0:0:0:B3 可以壓縮為 FF05::B3 1090:0:0:0:8:800:200C:417A 可以壓縮為 1090::8:800:200C:417A 全零可記為 :: 複製程式碼
-
最後的2組可以使用IPv4的點分十進位制表示
0:0:0:0:0:0:128.10.2.1 可表示為 ::128.10.2.1 複製程式碼
資料包格式
IPv6資料包由兩大部分組成, 基本首部
和 有效載荷
.有效載荷執行有0個或多個擴充套件首部.
- 版本, 佔4位, 協議的版本,通訊雙方需要相同
- 通訊量類, 佔8位.區分不同的IPv6的資料包或優先順序.
- 流標號, 佔20位. IPv6一個新機制就是支援資源預分配, 執行路由把每個資料包與特定的資源分配和聯絡.IPv6提出流的概念.指網際網路上從特定源點到特定終點的一系列資料包(如實時的音訊或視訊傳輸), 在這個流經過的路徑上路由都保證指明的服務質量.所有屬於同一個流的資料包具有相同的流標號.賦值為0即為關閉.
- 有效載荷長度, 佔16位.指明除基本首部以外的位元組數.最大64KB.
- 下一首部, 佔8位.相當於IPv4的協議欄位或可選欄位
- 當IPv6沒有擴充套件首部時, 該欄位和IPv4的協議欄位一樣.
- 有擴充套件首部時,表示第一個擴充套件首部的型別
- 跳數限制, 和IPv4的TTL一樣
- 源地址,目的地址, 各佔128位
從IPv4向IPv6過渡
網路如此龐大,從IPv4向IPv6的變換不可能一蹴而就.若要在兩個版本的協議下通訊,有下面的2個方法
雙協議棧
簡單的說就是一個主機能夠理解兩個版本的內容,這樣主機也要有2個版本對應的IP地址.具有雙協議棧的主機, 可以通過DNS系統知道目的主機使用的協議版本.
下面是兩臺使用IPv6的主機通訊示意圖,它們之間需要通過IPv4網路, 在必要的時候經過雙協議棧的主機進行協議的轉換,當然轉換的時候有些資訊可能丟失,這也是不可避免的.
使用隧道技術
隧道技術的原理是,在IPv6的資料需要進入IPv4網路時,將IPv6的資料包(準確的說是PDU)當成IPv4資料包的資料部分,使用IPv4版本傳輸,在離開IPv4網路時在此組裝成IPv6的資料,發往目的地.下面是一個示意圖:
結語
關於IP協議,還有很多可以談的地方, 這裡就不再深入了.讀完希望你能有一個"明鏡一樣"的感覺.我們下篇再見.
注
- 部分圖片來源於網路,如有侵權,請告知。
- 如有錯誤,還請指出。共勉!
- 您的喜歡是最大的讚賞。