㈠ ipv6網路規劃設計的主要步驟有哪些
IPv6地址規劃
2.1層次化設計
大型互聯網服務商的IPv6網路採用層次化、結構化的設計,可以把網路分為多個區域(地區),每個區域有多個區域骨幹節點,每個骨幹節點匯聚多個接入網(站)點,通過接入網點連接終端網點(企業或個人用戶)提供服務;一般來說,是一個4個層級的網路模型,而小型互聯網服務商則採用1-2層級的網路模型。
2.2IPv6地址結構
為了便於路由匯聚和簡化網路管理,配置,變更和擴展的工作量,IPv6採用層次化、結構化的地址規劃,一般來說,按RFC3177的原則,把128位的IPv6地址分為一個64位的網路標識符和一個64位的節點(主機)標識符,節點(主機)標識符通常根據物理地址自動生成,叫做EUI-64(或者64-位擴展唯一標識);64位的網路標識符又進一步分為全球網路標識符和本地子網標識符,通常全球網路標識符佔用48位和本地子網標識符佔有16位,如下圖所示:
.IPv6地址結構(RFC3513,RFC3177)
按照上圖的原則,終端網點(企業或個人用戶,見附錄的定義)分配一段/48的IPv6地址,最終連接主機/PDA設備的子網分配1段/64的IPv6地址,假設互聯網服務商自己分配到的IPv6地址段是/32,則該服務商有48-32=16位做自己服務網路的網點
.IPv6地址結構
65,536個網點節點數量上是很大,但如果再考慮以上所述的層次化設計,服務商有16位做自己服務網路的網點標識,如果要結構化地把這16位用於上面所述的4層(區域、骨幹節點、接入網點、終端網點)網路模型,平均每個層級可以佔用4位(註:本文描述的是一個通用的模型,因此採用平均分配的方式,實際設計應該根據每個層級預期的節點數量決定所佔用的位數),這樣每個層的節點數就只可以允許16個,如下圖所示:
.IPv6地址層次化結構
可見,對大型的全國性的互聯網服務商,如果網路層次較多,一個/32的地址就相對不足。
當然,這主要還是根據網路的層次和終端網點的地址分配策略來定,例如,如果上述終端網點分配從/48改為/56,互聯網服務商的網點標識就有56-32=24位,每個層級有6位可用,允許64個節點,這樣/32就相對足夠,同樣,如果網路是2-3層結構的話,/32也相對足夠。
㈡ 一層層了解網路通信協議
互聯網的實現,分為好幾層,每一層都有自己特有的功能,而且每一層都靠下一層支持。用戶接觸到的,只是最上面的一層,我們稱為應用層,要理解互聯網,必須從最下層開始,自下而上的理解每一層的功能。
我們常見的網路模型,有以下三種:
它們之間的關系如下圖所示
其中, 理論五層模型 是綜合 OSI七層 和 TCP/IP四層 的優點,採用的一種原理體系結構。 我們接下來的探討也是基於 理論五層模型 來展開的。
理論五層模型 的結構如下圖
各層的作用如下:
簡單說,越下面的層,越靠近硬體;越上面的層,越靠近用戶。
每一層都是為了完成某一種功能。為了實現這些功能,需要遵守一些共同的規則,這些規則就是 協議(protocol) 。
互聯網的每一層,都定義了很多協議。這些協議的總稱,叫做 互聯網協議(Internet Protocol Suite) ,它們是互聯網的核心。
下面的內容中,我們通過每一層的功能的介紹,對每一層中的主要協議所起作用進行講解。
電腦要進行聯網,需要把電腦通過各種設備連接進網路,設備有光纜、電纜、雙絞線、無限電波等方式。
物理層是用於傳輸信號的介質,它傳輸的是 0和1 的電信號。但是關於電信號如何分組,每個信號位有何意義並沒有規定。
這就是 數據鏈路層 的功能,它在 物理層 的上方,確定了0和1的分組方式,用於兩個設備(同一種數據鏈路結點)之間進行信息傳遞。
早期的時候,每家公司都有自己的電信號分組方式。逐漸地,一種叫做 乙太網(Ethernet) 的協議,占據了主導地位。
乙太網規定,一組電信號構成一個數據包,叫做 幀(frame) ,每一幀分為兩個部分: 標頭(Head) 和 數據(Data) 。
MTU是鏈路層對物理層的限制。
由於鏈路層存在MTU的限制,導致網路層的報文如果超過1500位元組,就必要要對其進行分片發送。
上面我們提到,乙太網數據包的 標頭 ,包含了發送者和接受者的信息。那麼,發送者和接受者是如何標識呢?
乙太網規定,連入網路的所有設備,都必須具有 網卡 介面。數據包必須是從一塊網卡,傳送到另一塊網卡。 網卡的地址,就是數據包的發送地址和接收地址,這叫做 MAC地址 。
每塊網卡出廠的時候,都有一個全世界 獨一無二的MAC地址 ,長度是 48個二進制位 ,通常用 12個十六進制數 表示。
前6個十六進制數是廠商編號,後6個十六進制數是該廠商的網卡流水號。有了MAC地址,就可以定位網卡和數據包的路徑了。
定義地址只是第一步,後面還有更多的步驟:
上圖中,5號計算機向3號計算機 發送一個數據包 ,同一個子網路的1號、2號、3號、4號、6號計算機 都會收到 這個包。它們讀取這個包的 標頭 ,找到 接收方的MAC地址 ,然後 與自身的 MAC地址相 比較 ,如果兩者 相同 ,就 接收這個包 ,做進一步處理, 否則就丟棄 這個包。這種發送方式就叫做 廣播 (broadcasting)。
有了數據包的定義、網卡的MAC地址、廣播的發送方式,"鏈接層"就可以在多台計算機之間傳送數據了。
乙太網協議,依靠MAC地址發送數據。理論上,單單依靠MAC地址,成都的網卡就可以找到休斯頓的網卡了,技術上是可以實現的。
但是,這樣做有一個重大的缺點。 乙太網 採用 廣播 方式 發送數據包 ,所有成員人手一包,不僅 效率低 ,而且 局限在發送者所在的子網路 。也就是說,如果兩台計算機不在同一個子網路,廣播是傳不過去的。這種設計是合理的,否則互聯網上每一台計算機都會收到所有包,那會引起災難。
互聯網是無數子網路共同組成的一個巨型網路,很像想像成都和休斯頓的電腦會在同一個子網路,這幾乎是不可能的。
因此,必須找到一種方法,能夠區分哪些MAC地址屬於同一個子網路,哪些不是。如果是 同一個子網路 ,就採用 廣播 方式發送, 否則 就採用 路由 方式發送。( 路由 的意思,就是指如何向不同的子網路分發數據包,這是一個很大的主題,本文不涉及。)遺憾的是,MAC地址本身無法做到這一點。它只與廠商有關,與所處網路無關。
這就導致了 網路層 的誕生。 它的作用是 引進一套新的地址 ,使得我們能夠 區分 不同的計算機是否屬於同一個 子網路 。這套地址就叫做 網路地址 ,簡稱 網址 。
於是, 網路層 出現以後,每台計算機有了 兩種地址 ,一種是 MAC地址 ,另一種是 網路地址 。兩種地址之間沒有任何聯系,MAC地址是綁定在網卡上的,網路地址則是管理員分配的,它們只是隨機組合在一起。
網路地址幫助我們確定計算機所在的子網路,MAC地址則將數據包送到該子網路中的目標網卡。因此,從邏輯上可以推斷,必定是先處理網路地址,然後再處理MAC地址。
規定網路地址的協議,叫做 IP協議 。它所定義的地址,就被稱為 IP地址 。目前,廣泛採用的是IP協議的第四版和第六版,分別稱為IPv4和IPv6。
互聯網上的每一台計算機,都會分配到一個IP地址。這個地址分成 兩個部分 , 前一部分代表網路,後一部分代表主機 。比如,IP地址14.215.177.39,這是一個32位的地址,假定它的網路部分是前24位(14.215.177),那麼主機部分就是後8位(最後的那個1)。處於同一個子網路的電腦,它們IP地址的網路部分必定是相同的,也就是說14.215.177.2應該與14.215.177.1處在同一個子網路。
但是,問題在於單單從IP地址,我們無法判斷網路部分。還是以14.215.177.39為例,它的網路部分,到底是前24位,還是前16位,甚至前28位,從IP地址上是看不出來的。
那麼,怎樣才能從IP地址, 判斷兩台計算機是否屬於同一個子網路呢?這就要用到另一個參數 子網掩碼 (subnet mask) 。
子網掩碼 :
我們知道,IPv4的地址只有32位,地球上網民數量已經遠遠超出這個數字,那麼,為啥至今還沒出現地址枯竭呢?
因為我們還有一些技術,可以變相的緩解地址不足,比如NAT技術。
NAT(Network Address Translation,網路地址轉換)
IPv6擁有128位巨大的地址空間,對於那麼大的空間,也不是隨意的劃分,而是使用按照bit位進行號段劃分。
IPv6地址結構如下圖
例如 RFC4291 中定義了n=48, m=16,也就是子網和介面ID與各佔64位。
IPv6沒有子網掩碼mask的概念,它支持的是 子網前綴標識方法 。
使用 IPv6地址/前綴長度 表示方法,例如:
可以看到,一個IPv6的地址有子網前綴+介面ID構成,子網前綴由地址分配和管理機構定義和分配,而介面ID可以由各操作系統實現生成。
IPv6是用來解決IPv4 地址枯竭 問題的,IPv4地址為32位,而IPv6地址為 128位
除了地址數量以外,IPv6還有很多 優點 ,例如:
如上所述,IP協議的作用主要有兩個:
根據IP協議發送的數據,就叫做 IP數據包 。我們直接把IP數據包直接放進乙太網數據包的"數據"部分,不用修改乙太網的規格。這就是互聯網分層結構的好處: 上層的變動完全不涉及下層的結構 。
具體來說,IP數據包也分為 標頭 和 數據 兩個部分:
其中, 標頭 范圍為 20-60位元組 ( IPv6固定為40位元組 ), 整個 數據包的總長度 最大為65535位元組 。因此, 理論上 ,一個IP數據包的 數據部分 , 最長為65515位元組 。
如圖所示,標頭中 20位元組是固定不變的 ,它包含了版本、長度、IP地址等信息,另外還有可變部分的標頭可選。而數據則是IP數據包的具體內容。
將它放入乙太網數據包後,乙太網數據包就變成了下面這樣:
在乙太網協議中,乙太網數據包的數據部分,最長只有1500位元組。因此, 如果IP數據包超過了1500位元組,它就需要分割成幾個乙太網數據包,分開發送了 。
關於網路層,還有最後一點需要說明。因為IP數據包是放在乙太網數據包里發送的,所以我們必須同時知道 兩個地址 ,一個是對方的 MAC地址 ,另一個是對方的 IP地址 。通常情況下,對方的IP地址是已知的,但是我們 不知道它的MAC地址 。
所以,我們需要一種機制,能夠從IP地址得到MAC地址。
這里又可以分成兩種情況:
總之,有了ARP協議之後,我們就可以得到同一個子網路內的主機MAC地址,可以把數據包發送到任意一台主機之上了。
ARP攻擊是利用ARP協議設計時缺乏安全驗證漏洞來實現的,通過偽造ARP數據包來竊取合法用戶的通信數據,造成影響網路傳輸速率和盜取用戶隱私信息等嚴重危害。
ARP攻擊主要是存在於區域網網路中,區域網中若有一台計算機感染ARP木馬,則感染該ARP木馬的系統將會試圖通過「ARP欺騙」手段截獲所在網路內其它計算機的通信信息,並因此造成網內其它計算機的通信故障。
區域網中比較常見的ARP攻擊包括:上網時斷時續,拷貝文件無法完成,區域網內的ARP包激增。出現不正常的MAC地址,MAC地址對應多個IP地址,網路數據發不出去了,網上發送信息被竊取,個人PC中毒區域網內MAC地址泛洪使MAC地址緩存表溢出等問題。據包的協議地址不匹配,從而在網路中產生大量的ARP。
在區域網環境中,ARP攻擊是主要的安全威脅,在傳統網路中主要是通過靜態綁定的方式來解決,但是這種方式限制了網路擴展的易用性。
有了MAC地址和IP地址,我們已經可以在互聯網上任意兩台主機上建立通信。
接下來的問題是,同一台主機上有許多程序都需要用到網路,比如,你一邊瀏覽網頁,一邊與朋友在線聊天。當一個數據包從互聯網上發來的時候,你怎麼知道,它是表示網頁的內容,還是表示在線聊天的內容?
也就是說,我們還需要一個參數,表示這個數據包到底供哪個 程序(進程) 使用。這個參數就叫做 埠 (port),它其實是每一個使用網卡的程序的編號。每個數據包都發到主機的特定埠,所以不同的程序就能取到自己所需要的數據。
埠是0到65535之間的一個整數,正好16個二進制位。0到1023的埠被系統佔用,用戶只能選用大於1023的埠。 不管是瀏覽網頁還是在線聊天,應用程序會隨機選用一個埠,然後與伺服器的相應埠聯系。
傳輸層 的功能,就是建立 埠到埠 的通信 。相比之下, 網路層 的功能是建立 主機到主機 的通信。只要確定主機和埠,我們就能實現程序之間的交流。因此,Unix系統就把 主機+埠,叫做 套接字 (socket)。有了它,就可以進行網路應用程序開發了。
現在,我們必須在數據包中加入埠信息,這就需要新的協議。最簡單的實現叫做UDP協議,它的格式幾乎就是在數據前面,加上埠號。
UDP數據包,也是由標頭和數據兩部分組成:
UDP數據包非常簡單,標頭部分一共只有8個位元組,總長度不超過65,535位元組,正好放進一個IP數據包。
UDP協議的優點是比較簡單,容易實現,但是缺點是可靠性較差,一旦數據包發出,無法知道對方是否收到。為了解決這個問題,提高網路可靠性,TCP協議就誕生了。這個協議非常復雜,但可以近似認為,它就是有確認機制的UDP協議,每發出一個數據包都要求確認。如果有一個數據包遺失,就收不到確認,發出方就知道有必要重發這個數據包了。
因此, TCP協議能夠確保數據不會遺失。它的缺點是過程復雜、實現困難、消耗較多的資源。
TCP數據包和UDP數據包一樣,都是內嵌在IP數據包的數據部分。 TCP數據包沒有長度限制,理論上可以無限長 ,但是為了保證網路的效率, 通常 TCP數據包的長度 不會超過IP數據包的長度 ,以確保單個TCP數據包不必再分割。
應用程序收到傳輸層的數據,接下來就要進行解讀。由於互聯網是開放架構,數據來源五花八門,必須事先規定好格式,否則根本無法解讀。 應用層的作用,就是規定應用程序的數據格式。
舉例來說,TCP協議可以為各種各樣的程序傳遞數據,比如Email、WWW、FTP等等。那麼,必須有不同協議規定電子郵件、網頁、FTP數據的格式,這些應用程序協議就構成了應用層。這是最高的一層,直接面對用戶。它的數據就放在TCP數據包的數據部分。
因此,現在的乙太網的數據包就變成下面這樣: