IPv4 過渡到 IPv6 ,這些知識點一定要知道
網(wǎng)絡(luò)是工程師的基礎(chǔ)技能之一,畢竟沒有網(wǎng)絡(luò)我們什么也干不了!從各大公司的招聘要求上看,網(wǎng)絡(luò)也是重點的考核部分。今天就和大家一起復(fù)習(xí)下(還)大學(xué)里的課程(欠下的債)!TCP/IP協(xié)議簇的IP協(xié)議。
理解網(wǎng)絡(luò)模型
網(wǎng)絡(luò)的設(shè)計大佬們想出了分層的設(shè)計,將各個功能分開,交付給不同的層,這樣的好處是便于更新和維護(IPv6的到來并沒有使整個網(wǎng)絡(luò)重新設(shè)計),也便于我們的學(xué)習(xí)和理解。下面是各個版本的網(wǎng)絡(luò)體系的結(jié)構(gòu)圖:
讓我們明確下各層的工作職責(zé)(以五層協(xié)議為例):
應(yīng)用層,該層協(xié)議主要負(fù)責(zé)各個應(yīng)用程序之間交互的規(guī)則,如HTTP、DNS,其交互的數(shù)據(jù)單元可以稱為”報文”。
運輸層,為應(yīng)用層提供通用的數(shù)據(jù)傳輸服務(wù),為上層跑腿的。TCP、UDP均是運輸層協(xié)議。
網(wǎng)絡(luò)層,為網(wǎng)絡(luò)中不同的主機提供通信服務(wù),IP協(xié)議工作在該層。
數(shù)據(jù)鏈路層,負(fù)責(zé)相鄰兩點的數(shù)據(jù)傳送。
物理層,傳輸比特流,0 或 1。每一層將數(shù)據(jù)封裝成自己能理解的數(shù)據(jù)格式,交付給下一層,下一層將收到的作為自己的數(shù)據(jù)再次添加本層的必要數(shù)據(jù),向下交付,直到鏈路層,傳遞到目的地后,每層再將該層的必要數(shù)據(jù)去掉,交付給上層。如下圖:
理解IP協(xié)議
在理解了網(wǎng)絡(luò)模型和各層直接的配合之后,下面進入正題:網(wǎng)際協(xié)議(IP)。
主要理解IP協(xié)議給我們提供的功能有哪些,說白了就是它能干嘛。
為網(wǎng)絡(luò)中的主機(PC或路由或網(wǎng)關(guān))提供身份證。
定義了網(wǎng)絡(luò)主機的基本交流方式,從IP數(shù)據(jù)報的格式可以看出。
為路由尋址提供方便,從路由表結(jié)構(gòu)可以看出。
任何一個協(xié)議都可以由語法,語義和同步三部分組成。
語法,交換信息的格式,對于IP協(xié)議,就是IP報文的格式。
語義,即需要發(fā)出何種控制信息,以及接收到信息后如何響應(yīng)。
同步,對事件順序的詳細(xì)說明。
也就是定義了使用IP協(xié)議進行交流的法則。
IPv4
IPv4是IP協(xié)議的第4個版本,就是我們現(xiàn)在使用的。下面從多個方面了解下該版本。
IP地址
網(wǎng)絡(luò)上的主機都需要一個IP地址,這樣才能知道彼此的位置。IPv4地址由32bit構(gòu)成,常使用點分十進制表示(192.168.1.1)。
分類
IP地址的分類就是把所有IP劃分為若干類別,每一類都由固定長度的字段組成,分別為網(wǎng)絡(luò)號和主機號。下面是各類地址組成示意圖:
A類地址,8位網(wǎng)絡(luò)號,第一位固定為0,可用的網(wǎng)絡(luò)號只有126個(2^7-2),網(wǎng)絡(luò)號從0到127。減去2是因為:IP地址全為0表示”本網(wǎng)絡(luò)”,保留; 網(wǎng)絡(luò)號為127作為軟件回環(huán)測試使用,若主機發(fā)出目的地為127.0.0.1的數(shù)據(jù)時,該數(shù)據(jù)不會向任何網(wǎng)絡(luò)上的主機發(fā)送。也就是說127開頭的地址不能使用.。對于A類地址中的每一個網(wǎng)絡(luò)號,對應(yīng)的主機號有(2^24-2)個:主機號全0表示,其網(wǎng)絡(luò)號對應(yīng)的網(wǎng)絡(luò)地址,全1表示所有主機的意思。
B類地址網(wǎng)絡(luò)號為16位,但前面2位以固定為1 0。無論怎么取值,無法出現(xiàn)全0或全1的情況。128.0.0.0的網(wǎng)絡(luò)是不使用的,實際使用的最小B類網(wǎng)絡(luò)地址為128.1.0.0,所以B類的網(wǎng)絡(luò)地址有(2^14-1)個。
C類的地址有24位的網(wǎng)絡(luò)號,最前面的3位固定為1 1 0.192.0.0.0的網(wǎng)絡(luò)地址也是不使用的,,最小的C類地址為192.0.1.0。
總結(jié)如下:
分類的好處:
方便管理,IP地址管理機構(gòu)只需管理網(wǎng)絡(luò)號,剩下的可以由下級管理。
路由尋址時根據(jù)網(wǎng)絡(luò)地址轉(zhuǎn)發(fā)分組,減小路由表。
數(shù)據(jù)報格式
先看下IP數(shù)據(jù)報的基本格式:
可以看到IP數(shù)據(jù)報包含了首部和數(shù)據(jù)部分。其中首部包含固定的20字節(jié)和可變的部分。下面是各部分的解釋:
版本,占4位,IP協(xié)議的版本號,通信雙方需要相同。
首部長度,占4位,單位4字節(jié)。最大能表示(2^4-1) * 4 = 60字節(jié)。當(dāng)IP分組的首部長度不是4的整數(shù)倍時,需要使用填充字段填充。
區(qū)分服務(wù),占8位,表示服務(wù)類型,未使用。
總長度,占16位,表示首部和數(shù)據(jù)部分的總長度(單位字節(jié)).因此數(shù)據(jù)報的最大總長度為(2^16-1 = 65535)字節(jié)。
標(biāo)識(identification),占16位。當(dāng)數(shù)據(jù)報長度超過下層的MTU時,需要分片,被分片的數(shù)據(jù)報的標(biāo)識一樣,這樣可以進行重組。
標(biāo)志(Flag),占3位,目前只有2位有意義
最低位,MF(More Fragment) = 1 表示后面還有分片。MF = 0 表示分片中的最后一個。
中間一位,DF(Don’t Fragment),不要分片,只有當(dāng)DF=0才允許分片
片偏移,占13位.較長的分組在分片后,某片在原分組的相對位置。必須是8字節(jié)的整數(shù)倍。
生存時間,占8位,Time To Live(TTL),開始指生存的秒數(shù),后來變?yōu)榻?jīng)過路由的跳數(shù),每經(jīng)過一個路由,TTL減小1,當(dāng)為0時,丟棄該數(shù)據(jù).顯然,最大跳數(shù)為255,為1時就只能在局域網(wǎng)中傳播了。
協(xié)議,占8位.支出該數(shù)據(jù)報的數(shù)據(jù)是使用何種協(xié)議,以便目的主機IP層知道將數(shù)據(jù)交付給哪個協(xié)議處理,常用的協(xié)議及對應(yīng)數(shù)值:
首部校驗和, 占16位.數(shù)據(jù)報的首部校驗和,不包括數(shù)據(jù)部分.
源地址, 目的地址, 各占32位
IPV6
IPv6的出現(xiàn)是解決IPv4資源枯竭的問題。其仍然支持無連接的傳送,但傳送的是PDU分組,而不是IPv4的數(shù)據(jù)報。
IP地址
IPv6的地址是128bit,在可預(yù)見的未來是夠用的。但和IPv4版本并不兼容,若使用IPv4版本的主機A和使用IPv6版本的主機B之間通信是需要特殊處理的,在后面會介紹方法。
IPv6的地址表示
IPv6的地址采用冒號十六進制記法,8組4個16進制數(shù)字,中間使用冒號隔開。例如:
6845:8C64:FFFF:FFFF:0:1180:9000:FFFF
若一組中全是0,可以省略三個。
若存在連續(xù)多組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
數(shù)據(jù)報格式
IPv6數(shù)據(jù)報由兩大部分組成,基本首部和有效載荷。有效載荷運行有0個或多個擴展首部。
可以看到,IPv6的首部是固定的40字節(jié),和IPv4不同;在組成上也有很大區(qū)別,下面看下各部分的意思。
版本,4位,協(xié)議的版本,通信雙方需要相同
通信量類,占8位。區(qū)分不同的IPv6的數(shù)據(jù)報或優(yōu)先級。
流標(biāo)號,占20位。IPv6一個新機制就是支持資源預(yù)分配,運行路由把每個數(shù)據(jù)報與特定的資源分配和聯(lián)系。IPv6提出流的概念,指互聯(lián)網(wǎng)上從特定源點到特定終點的一系列數(shù)據(jù)報(如實時的音頻或視頻傳輸),,在這個流經(jīng)過的路徑上路由都保證指明的服務(wù)質(zhì)量。所有屬于同一個流的數(shù)據(jù)報具有相同的流標(biāo)號。賦值為0即為關(guān)閉。
有效載荷長度,占16位。指明除基本首部以外的字節(jié)數(shù)。最大64KB。
下一首部,占8位。相當(dāng)于IPv4的協(xié)議字段或可選字段。
當(dāng)IPv6沒有擴展首部時,該字段和IPv4的協(xié)議字段一樣。
有擴展首部時,表示第一個擴展首部的類型。
跳數(shù)限制,和IPv4的TTL一樣。
源地址,目的地址,各占128位。
從IPv4向IPv6過渡
網(wǎng)絡(luò)如此龐大,從IPv4向IPv6的變換不可能一蹴而就,若要在兩個版本的協(xié)議下通信,有下面的2個方法。
雙協(xié)議棧
簡單的說就是一個主機能夠理解兩個版本的內(nèi)容,這樣主機也要有2個版本對應(yīng)的IP地址。具有雙協(xié)議棧的主機,可以通過DNS系統(tǒng)知道目的主機使用的協(xié)議版本。
下面是兩臺使用IPv6的主機通信示意圖,它們之間需要通過IPv4網(wǎng)絡(luò),在必要的時候經(jīng)過雙協(xié)議棧的主機進行協(xié)議的轉(zhuǎn)換,當(dāng)然轉(zhuǎn)換的時候有些信息可能丟失,這也是不可避免的。
使用隧道技術(shù)
隧道技術(shù)的原理是,在IPv6的數(shù)據(jù)需要進入IPv4網(wǎng)絡(luò)時,將IPv6的數(shù)據(jù)報(準(zhǔn)確的說是PDU)當(dāng)成IPv4數(shù)據(jù)報的數(shù)據(jù)部分,使用IPv4版本傳輸,在離開IPv4網(wǎng)絡(luò)時在此組裝成IPv6的數(shù)據(jù),發(fā)往目的地。下面是一個示意圖:
本文來源自網(wǎng)絡(luò),著作權(quán)歸原作者所有