IP即網際協定
TCP/IP的心髒是網際網路層。這一層主要是由IP(Internet Protocol)和ICMP(Internet Control Message Protocol)兩個協定組成。
IP相當于OSI參考模型的第3層
IP(IPv4、IPv6)相當于OSI參考模型中的第3層–網絡層。
網絡層的主要作用是“實作終端節點之間的通信”。這種終端節點之間的通信也叫“點對點(end-to_end)通信”。
網絡層的下一層—資料鍊路層的主要作用是在互聯同一種資料鍊路的節點之間進行包傳遞。
主機與節點
網際網路中,那些配有IP位址的裝置叫做“主機”。準确的說,主機的定義應該是指“配置有IP位址,但是不進行路由控制”的裝置。既配有IP位址又具有路由控制能力的裝置叫做“路由器”。
節點是主機和路由器的統稱。
路由控制
英文叫做Routing。是指中轉分組資料包。
網絡層與資料鍊路層的關系
- 資料鍊路層提供直連兩個裝置之間的通信功能。
- 網絡層的IP則負責在沒有直連的兩個網絡之間進行通信傳輸。
仔細分析機票和火車票,每張票隻能夠在某一限定區間内移動。此處的“區間内”就如同通信網絡上的資料鍊路。而這個區間内的出發地點和目的地點就如同某一個資料鍊路的源位址和目标位址等首部資訊。這個全稱的行程表的作用就相當于網絡層。
IP基礎知識
IP大緻分為三大作用子產品,它們是IP尋址、路由(最終節點為止的轉發)以及IP分包與組包。
IP位址屬于網絡層位址
MAC位址在資料鍊路層,是用來辨別同一個鍊路中不同計算機的一種識别碼。
網絡層的IP,也有這種位址資訊。一般叫做IP位址。IP位址用于在“連接配接到網絡中的所有主機中識别出進行通信的目标位址”。是以,在TCP/IP通信中所有主機或路由器必須設定自己的IP位址。
不論一台主機與哪種資料鍊路連接配接,其IP位址的形式都保持不變。以太網、無線區域網路、PPP等,都不會改變IP位址的形式。網絡層對資料鍊路層的某些疼醒進行了抽象。資料鍊路的類型對IP位址形式透明,這本身就是其中抽象化的一點。
另外,在網橋或交換集線器等實體層或資料鍊路層資料包轉發裝置中,不需要設定IP位址(在用SNMP進行王闊管理時有必要設定IP位址)。因為這些裝置隻負責将IP包轉化為0,、1比特流轉發或對資料鍊路幀的資料部分進行轉發,而不需要應對IP協定。
路由控制
路由控制(Routing)是指将分組資料發送到最終目标位址的功能。一個資料包之是以能夠成功地到達最終的目标位址,全靠路由控制。
發送資料至最終目标位址
Hop譯為中文“跳”。它是指網絡中的一個區間。IP包正式在網絡中一個跳間被轉發。是以IP路由也叫做多跳路由。在每個區間決定着包在下一跳被轉發的路徑。
一跳的範圍
一跳(1 Hop)是指利用資料鍊路層以下分層的功能傳輸資料幀的一個區間。
以太網等資料鍊路中使用MAC位址傳輸資料幀。此時的一跳是指從源MAC位址到目标MAC位址之間傳輸幀的區間。 就是說它是主機或路由器網卡不經其他路由器而能直接到達的相鄰主機或路由器網卡之間的一個區間。在一跳的這個區間内,電纜可以通過網橋或交換集線器相連,不會通過路由器或網關相連。
多跳路由是指路由器或主機在轉發IP資料包時隻指定下一個路由器或主機,而不是将到最終目标位址為止的所有通路全都指定出來。因為每一個區間(跳)在在轉發IP資料包時會分别指定下一跳的操作,直至包達到最終的目标位址。
以火車旅遊為例,可以将旅行者看作IP資料包,将車站和從業人員看作路由器。當某個IP包達到路由器時,路由器首先查找其目标位址(IP包被轉發到途中的某個路由器時,實際上是裝入資料鍊路層的資料幀以後再被送出。以以太網為例,目标MAC位址就是下一個路由器的MAC位址),進而再決定下一步應該将這個包發往哪個路由器,然後将包發送過去。當這個IP包到達那個路由器以後,會再次經曆查找下一目标位址的過程,并由該路由器轉發給下一個被找到的路由器。這個過程可能會反複多次,直到找到最終目标位址将資料包發送給這個節點。
路由控制表
為了将資料包發給目标主機,所有主機都維護着一張路由控制表(Routing Table)。該表記錄IP資料在下一步應該發給哪個路由器。IP包将根據這個路由表在各個資料鍊路上傳輸。
資料鍊路的抽象化
IP是實作多個資料鍊路之間通信的協定。資料鍊路根據種類的不同各有特點。對這些不同資料鍊路的相異特性進行抽象化也是IP的重要作用之一。資料鍊路的位址可以被抽象化為IP位址。是以,對IP的上一層來說,不論底層資料鍊路使用以太網還是無線LAN、PPP,都将被視為同仁。
不同資料鍊路有個最大的差別,就是它們各自最大傳輸機關(MTU:Maximum Transmission Unit)不同。就好像人們在郵寄或行李時有各自的大小限制一樣。
MTU的值在以太網中是1500位元組,在FDDI中是4352位元組,而ATM則為9180位元組。IP的上一層可能會要求傳送比這些MTU更多位元組的資料,是以必須線上路上傳送比包長還要小的MTU。
為了解決這個問題,IP進行分片處理(IP Fragmentation),所謂分片,就是講較大的IP包分成多個較小的IP包。分片的包到了對端目标位址後再被組合起來傳給上一層。從IP的上層看,它完全可以忽略資料包在途中的各個資料鍊路上的NTU,而隻需要按照源位址發送的長度接收資料包。IP以這種方式抽象化了資料鍊路層,使得從上層更不容易看到底層網絡構造的細節。
IP屬于面向無連接配接型
IP面向無連接配接。即在發包之前,不需要建立與對端目标位址之間的連接配接。上層如果遇到需要發送給IP的的資料,該資料會立即被壓縮成IP包發送出去。
面向有連接配接的情況下,需要事先建立連接配接。一個沒有建立連接配接的主機也不能發送資料過來。
面向無連接配接的情況不同,即使對端主機關機或不存在,資料包還是會被發送出去。反之,對于一台主機來說,它會何時從哪裡收到資料也是不得而知的。
為什麼IP要采用面向無連接配接呢?
一是簡化,二是為了提速。
為了提高可靠性,上一層的TCP采用面向有連接配接型
IP隻負責将資料發給目标主機,TCP負責保證對端主機卻是接收到資料。
IP位址基礎知識
在用TCP/IP通信時,用IP位址識别主機和路由器。
IP位址的定義
IP位址(IPv4位址)由32位正整數來表示。TCP/IP通信要求将這樣的IP位址配置設定給每個參與通信的主機。IP位址在計算機内部已二進制(二進制是指0,1辨別數組的方法)方式被處理。采用人類更習慣的标記方式,就是将32位的IP位址以每8位為一組,分成4組,每組以“.”隔開,再将魅族書轉換為十進制數。
實際上,IP位址并非是根據主句台數來配置的,而是每台主機上的每一塊網卡(NIC)都要設定IP位址。通常一塊網卡隻設定一個IP位址,其實一塊網卡也可以配置多個IP位址。此外,一台路由器通常都會配置兩個以上的網卡,是以可以設定兩個以上的IP位址。
IP位址由網絡和主機兩部分辨別組成
IP位址由“網絡辨別(網絡位址)”和“主機辨別(主機位址)”兩部分組成。
網絡辨別在資料鍊路的每個段配置不同的值。網絡辨別必須保證互相連接配接的每個段的位址不香重複。而相同段内相連的主機必須有相同的網絡位址。IP位址的“主機辨別”則不允許在同一個網段内重複出現。
可以通過設定網絡位址和主機位址,在互相連接配接的整個網絡中保證每台主機的IP位址都不會互相重疊,即IP位址具有了唯一性。
IP包被轉發到途中某個路由器,正是利用目标IP位址的網絡辨別進行路由。因為就是不看主機辨別,隻要一見到網絡辨別就能判斷出是否為該網段内的主機。
IP位址的分類
IP位址分為四個級别,A、B、C、D類(還有一個一直未使用的E類)。它根據IP位址中從第1位到第4位的比特列對其網絡辨別和主機辨別進行區分。
A類位址
A類I票位址是首位以“0”開頭的位址,從第1位到第8位(去掉分類位剩下7位)是它的網絡辨別。用十進制表示的話,0.0.0.0-127.0.0.0是A類網絡位址。A類位址的後24位相當于主機辨別。是以,一個網段内可容納的主機位址上限為16,777,214個。
“B類位址”
B類位址是前兩位為“10”的位址,從第1位到第16位是它的網絡辨別,用十進制表示,128.0.0.1-191.255.0.0是B類網絡位址,B類位址的後16位相當于主機位址。是以,一個網段内可容納主機位址上限為65,534個。
C類位址
C類IP位址是前三位為“110”的位址。從第1位到第24位是它的網絡辨別。用十進制表示的話,192.168.0.0-239.255.255.0是C類的網絡位址。C類位址的後8位相當于主機辨別。是以,一個網段内可容納主機位址上限為254個。
D類位址
D類IP位址是前四位為“1110”的位址。從第1位到第32位是它的網絡辨別,用十進制表示,224.0.0.0-239.255.255.255是D類的網絡位址。D類沒有主機辨別,常被用于多點傳播。
關于配置設定IP主機位址的注意事項
要用比特位表示主機位址時,不可以全部為0或全部為1。因為全部為0在辨別對應的網絡位址或IP位址不可獲知的情況下才使用。全部為1的主機通常作為廣播位址。
廣播位址
廣播位址用于在同一個鍊路中互相連接配接的主機之間發送資料包。将IP位址中的主機位址部分全部設定為1,就變成了廣播位址。
兩種廣播
廣播分為本地廣播和直接廣播兩種。
在本網絡内的廣播叫做本地廣播。例如網絡位址為192.168.0.0/24的情況下,廣播位址是192.168.0.255。因為這個廣播位址的IP包會被路由器屏蔽,是以不會到達192.168.0.0/24以外的其他鍊路上。
在不同網絡之間的廣播叫做直接廣播。例如網絡位址為192.168.0.0/24的主機向102.168.1.255/24的目标主機發送IP包。收到這個包的路由器,将資料轉發給192.168.1.0/24,進而使所有192.168.1.1-192.168.1.254的主機都能收到這個包。
IP多點傳播
**多點傳播用于将包發送給特定組内的所有主機。**由于其直接使用IP協定,是以也不存在可靠傳輸。
在電視會議系統中對于1對N、N對N通信的需求明顯上升。而具體實作上網采用指派1對1通信的資料,将其同時發送給多個主機的方式。
在人們使用多點傳播功能之前,一直采用廣播,再由這些主機IP之上的一層去判斷是否有必要接收資料。而且廣播無法穿越路由,想給其他網段發同樣的包,就必須采取另一種機制。多點傳播糾正了必選之路。
IP多點傳播與位址
多點傳播使用D類位址。是以,如果從首位開始到第4位是“1110”,就可以認為是多點傳播位址。而剩下的29位可以成為多點傳播的組編号。
從224.0.0.0到239.255.255.255都是多點傳播位址的可選範圍。其中從224.0.0.0到224.0.0.255的範圍不需要路由控制。在同一個鍊路内也能實作多點傳播。而在這個範圍之外設定多點傳播位址會給全網所有組内成員發送多點傳播的包(可以利用生存時間TTL Time to Live限制包的達到範圍)。
此外,對于多點傳播,所有主機(路由器以外的主機和終端主機)必須屬于224.0.0.1的組,所有的路由器必須屬于224.0.0.2的組。類似,多點傳播位址中衆多已知的位址:
利用IP多點傳播實作通信,除了位址外還需要IGMP等協定的支援。
子網路遮罩
直接使用A、B、C類位址顯得浪費資源。
子網和子網路遮罩
現在,一個IP位址的網絡辨別和主機辨別已不再受限于該位址的類别,而是一個叫做“子網路遮罩”的識别碼通過子網網絡位址細分出比A、B、C更小粒度的網絡。這種方式實際上就是将原來A、B、C類等分類中的主機位址部分用作子網位址,可以将原網絡分為多個實體網絡的一種機制。
子網劃分實際上就是将原來的兩級IP位址轉變為三級IP位址,表示如下:
IP位址 ::= {<網絡号>, <子網号>, <主機号>}
從上面的表示可以看出,子網劃分就是在32位中借了幾位用來表示子網号,注意,這裡的網絡号的位數是不變的,子網号是從主機号中借走的,子網劃分實際上就是減少了主機數,配置設定到不同的子網,每個子網包含一定的主機數。
子網的概念也就可以了解為,将一個大的網絡在其内部劃分成幾個小的子網,但是需要注意的是,對于該網絡的外層來看,還是一個大的網絡,隻有該網絡内部才可以看到其進行了子網劃分。例如:某個機構給某高校配置設定了一個大的網絡,而該高校内部又進行了子網劃分,将不同的子網配置設定給不同的學院,此時對于該機構來說,該高校還是一個大的網絡,在其看來并沒有變化,隻有該高校自己才知道自己内部又進行了子網劃分。
自從引入子網後,一個IP位址就有了兩種識别碼。一是IP位址本身,另一個是辨別網絡部的子網路遮罩。那麼什麼是子網路遮罩呢?在傳輸的過程中,路由器是怎麼識别子網劃分後的IP位址中的網絡位址的?如果不提供任何資訊,路由器肯定還是傻傻分不清楚,是以就出現了子網路遮罩。
子網路遮罩用二進制辨別,也是一個32位的數字。它對應IP位址網絡辨別部分的位全部是“1”,對應IP位址主機辨別的部分全部為“0”。由此,一個IP位址可以不再受限于自己的類别,而是可以用這樣的子網路遮罩自由的定位自己的網絡辨別長度。當然,子網路遮罩必須是IP位址的首位開始連續的“1”。
對于子網路遮罩,目前有兩種表示方法。以172.20.100.52的前26位是網絡位址的情況為例,以下是其中一種表示方法,它将IP位址與子網路遮罩位址分别用兩行來表示。
另一種辨別方式如下。它在每個IP位址後面追加網絡位址的位數用“/”隔開。
第二種方式下記述網絡位址時可以省略後面的“0”。例如172.20.0.0/16跟172.20/16其實是一個意思。
舉例:
CIDR與VLSM
CIDR中文全稱是無分類域間路由選擇,英文全稱是Classless Inter-Domain Routing,在平常,大家多稱之為無分類編址,它也是構成超網的一種技術實作。CIDR在一定程度上解決了路由表項目過多過大的問題。CIDR之是以稱為無分類編址,就是因為CIDR完全放棄了之前的分類IP位址表示法,它真正消除了傳統的A類、B類、C類位址以及劃分子網的概念,它使用如下的IP位址表示法:
IP位址 ::= {<網絡字首>, <主機号>} / 網絡字首所占位數
CIDR僅将IP位址劃分為網絡字首和主機号兩個部分,可以說又回到了二級IP位址的表示,不過大家要注意,最後面用“/”斜線分隔,在其後寫上了網絡字首所占的位數,這樣就不需要告知路由器位址掩碼,僅需要通過網絡字首所占的位數就可以得到位址掩碼,為了統一,CIDR中的位址掩碼依然稱為子網路遮罩。
CIDR表示法給出任何一個IP位址,就相當于給出了一個CIDR位址塊,這是由連續的IP位址組成的,是以CIDR表示法構成了超網,實作了路由聚合,即從一個IP位址就可以得知一個CIDR位址塊。例如:已知一個IP位址是:128.14.35.7/20,那麼這個已知條件告訴大家的并不僅僅是一個IP位址這麼簡單,我們來分析一下。
128.14.35.7/20 = 10000000 00001110 00100011 00000111
即前20位是網絡字首,後12位是主機号,那麼我們通過令主機号分别為全0和全1就可以得到一個CIDR位址塊的最小位址和最大位址,即:
最小位址是:128.14.32.0 = 10000000 00001110 00100000 00000000
最大位址是:128.14.47.255 = 10000000 00001110 00101111 11111111
子網路遮罩是:255.255.240.0 = 11111111 11111111 11110000 00000000
是以就可以看出來,這個CIDR位址塊可以指派(47-32+1)*256=4096個位址,這裡沒有把全0和全1除外。
在CIDR被應用到網際網路的初期,網絡内部采用固定長度的子網路遮罩機制。也就是說域内所有子網路遮罩都要使用相同的長度。而部門之間要求的主機數是不同的,如果全部采用統一标準,就難以架構一個高效的網路結構。為此人們提出組織内要是用可變長度的、高效的IP位址配置設定方式。
于是産生了一種可以随機修改組織内各個部門子網路遮罩長度的機制–VLSM(Verable Length Subnet Mask 可變長子網路遮罩)。它可以通過域間路由協定轉換為RIP2以及OSPF實作。
在CIDR表示法中也可以進行進一步的子網劃分,和子網劃分類似,我們隻需要從主機号中借走一定的位數即可,這裡與前面的基本子網劃分不同,借走2位時可以劃分成4個子網,不用減2,其他位數類似。
目前已經廣泛使用CIDR表示法,之前的分類方法和子網劃分已經很少使用。
全局位址與私有位址
一種新的技術,它不要求為每一台主機或路由器配置設定一個固定的IP位址,而是在必要的時候隻為相應資料的裝置配置設定唯一的IP位址。
尤其對那些沒有連接配接網際網路的獨立網絡中的主機,隻要保證在這個網絡内位址唯一,可以不用考慮網際網路即可配置相應的IP位址。不過,即使讓每個獨立的網絡随意設定IP位址,也可能會有問題。于是又出現了私有網絡的IP位址:
包含在這個範圍内的IP位址都屬于私有IP,而在此之外的IP位址稱為全局IP(也叫公網IP)。
私有IP最早沒有計劃連接配接網際網路,而隻用于網際網路之外的獨立網絡。然而,當一種能夠互換私有IP與全局IP的NAT技術的出現,配有私有位址的主機與配有全局位址的網際網路主機實作了通信。
私有IP位址結合NAT已成為現在解決IP位址配置設定問題的主流方案。它與使用全局IP位址相比有各種限制。為了解決這些問題IPv6出現了。然而由于現在IPv6沒有得到普及,IPv4位址又将耗盡,人們正努力使用IPv4和NAT技術解決現有問題。這是網際網路的現狀之一。
路由控制
發送資料包時所使用的位址是網絡層的位址,即IP位址。然而僅僅有IP位址還不足以實作将資料包發送到對端目的位址,在資料發送過程中還需要類似于“指明路由器或主機”的資訊,以便真正發往目标位址。儲存這種資訊的就是路由控制表(Routing Table)。實作IP通信的主機和路由器都必須持有一張這樣的表,它們也正是在這個表格的基礎上才得以進行資料包發送的。
路由控制表的形成方式有兩種:一種是管理者手動設定,另一種是路由器與其他路由器互相交換資訊時自動重新整理。前者叫靜态路由控制,後者叫動态路由控制。為了讓動态路由即時重新整理路由表,在網絡上互連的路由器之間必須設定好路由協定,保證正常讀取路由控制資訊。
IP協定始終認為路由表是正确的。然而,IP本身并沒有定義制作路由控制表的協定。即IP沒有制作路由控制表的機制。該表是由一個叫做“路由協定”的協定制作而成。
IP位址與路由控制
IP位址的網絡位址部分用于進行路由控制。
路由控制表中記錄着網絡位址與下一步應該發送至路由器的位址。在發送IP包時,首先要确定IP包首部中的目标位址,再從路由控制表中找到該位址具有相同網絡位址的記錄,根據該記錄将IP包轉發給相應的下一個路由器。如果路由控制表中存在多條相同網絡位址的記錄,就選擇一個最為吻合的網絡位址。最為吻合是指相同位數最多的意思。
如果路由表中下一個路由器的位置記錄着某個主機或路由器網卡的IP位址,就意味着“發送的目标位址屬于同一個鍊路”。
預設路由
如果一張路由表中包含所有的網絡及其子網的資訊,将會造成浪費。這時,預設路由(Default Route)是不錯的選擇。預設路由是指路由表中任何一個位址都能與之比對的記錄。
預設路由一般标記為0.0.0.0/0或default。這裡的0.0.0.0/0并不是指位址是0.0.0.0.由于後面是“/0”,是以沒有辨別IP位址。它隻是為了避免人們誤以為0.0.0.0是IP位址。
**預設路由是一種特殊的靜态路由,指的是當路由表中與包的目的位址之間沒有比對的表項時路由器能夠做出的選擇。**如果沒有預設路由,那麼目的位址在路由表中沒有比對表項的包将被丢棄· 預設路由在某些時候非常有效,當存在末梢網絡時,預設路由會大大簡化路由器的配置,減輕管理者的工作負擔,提高網絡性能。
主機路由
“IP位址/32”也被稱為主機路由(Host Route)。例如,192.168.153.15/32就是一種主機路由。它的一是是整個IP位址的所有位都将參與路由。進行主機路由,意味着要基于主機上網卡上配置的IP位址本身,而不是基于該位址的網絡位址部分進行路由。
主機路由多被用于不希望通過網絡位址路由的情況。
環回位址
環回位址是在同一台計算機上的程式之間進行網絡通信時所使用的一個具體位址。計算機使用一個特殊的IP位址127.0.0.1作為環回位址。與該位址具有相同意義的是一個叫做locahost的主機名,使用這個IP或主機名,資料包不會流向網絡。
路由控制表的聚合
利用網絡位址的比特分布可以有效地進行分層配置。對内即使有多個子網路遮罩,對外呈現出的也是同一個網絡位址。這樣可以更好的建構網絡,通過路由資訊的聚合可以有效地減少路由表的條目。
能夠縮小路由表的大小是它的有時。路由表越大,管理它所需要的記憶體和CPU就越多。而且路由聚合可以将已知的路由資訊傳送給周圍其他的路由器,以達到控制路由資訊的目的。
IP分割處理與再構成處理
資料鍊路不同,MTU則相異
每種資料鍊路的最大傳輸單元(MTU)都不盡相同。之是以不同,是因為每個不同類型的資料鍊路的使用目的不同。
IP屬于資料鍊路上一層,它必須不受限與不同資料鍊路的MTU大小。IP抽象化底層的資料鍊路。
IP封包的分片與重組
任何一台主機都有必要對IP分片(IP Fragmentation)進行相應的處理。分片往往在網絡上遇到比較大的封包無法一下子發送出去時才會進行處理。
由于以太網的預設MTU是1500位元組,是以4342位元組的IP資料報無法在一個幀當中發送完成。這時,路由器将IP資料報分成了3個分片進行發送。這種分片處理隻要路由器認為有必要,會周而複始地進行。
經過分片之後的IP資料報在被重組的時候,隻能由目标主機進行。路由器雖然做分片但不會進行重組。
路徑MTU發現
為了應對路由器的負荷加重,隻要允許,是不希望由路由器進行IP資料包的分片處理的。且分片進行中,一旦某個分片丢失,則會照成整個IP資料報廢棄。
為了應對以上問題,産生了一種新的技術“路徑MTU發現”(Path MTU Discovery)。所謂路徑MTU(Path MTU)是指從發送端主機到接收端主機之間不需要分片時最大MTU的大小。即路徑中存在的所有資料鍊路中最小的MTU。而路徑MTU發現從發送主機按照路徑MTU的大小将資料報分片後進行發送。進行路徑MTU發現,就可以避免在中途的路由器上進行分片處理,也可以在TCP中發送更大的包。
路徑MTU發現機制(UDP情況下)
路徑MTU發現機制(TCP情況下)
IPv6
IPv6的必要性
IPv6是為了根本解決IPv4位址耗盡的問題而被标準化的網際協定。IPv4位址長度為4個8位位元組,即32比特。而IPv6位址長度則是原來的4倍,即128比特。一般寫成8個16位位元組。
從IPv4切換到IPv6極其耗時,需要将網絡中所有主機和路由器的IP位址進行重新設定。當網際網路普及後,替換所有IP位址會更為艱巨的任務。
是以,IPv6不僅僅能解決IPv4位址耗盡的問題,它甚至試圖彌補IPv4中的絕大多數缺陷。目前,人們正着力于進行IPv4與IPv6之間的互相通信與相容性方面的測試。
IPv6的特點
IPv6具有的特點中有一部分在IPv4中已經實作。然而,即便是在那些實作了IPv4的作業系統,也并非實作了所有的IPv4功能。這中間不乏存在根本無法使用或需要管理者介入才能實作的部分。而IPv6則将這些通通作為必要的功能,減輕了管理者的負擔。
-
IP位址的擴大與路由控制表的聚合
IP位址依然适應網際網路分層構造。配置設定與其位址結構相适應的IP位址,盡可能避免路由表膨大。
-
性能提升
包首部長度采用固定的值(40位元組),不再采用首部檢驗碼。簡化首部結構,減輕路由器負荷。路由器不再做分片處理(通過路徑MTU發現隻由發送端主機進行分片處理)
-
支援即插即用功能
即使沒有DHCP伺服器也可以實作自動配置設定IP位址。
-
采用認證與加密功能
應對僞造IP位址的網絡安全功能以及防止線路竊聽的功能(IPsec)。
-
多點傳播、Mobile IP成為擴充功能
多點傳播和Mobile IP被定義為IPv6的擴充功能。由此可以預期,曾在IPv4中難于應用的這兩個功能在IPv6中能夠順利使用。
DHCP
DHCP(Dynamic Host Configuration Protocol,動态主機配置協定)是一個區域網路的網絡協定,使用UDP協定工作, 主要有兩個用途:給内部網絡或網絡服務供應商自動配置設定IP位址,給使用者或者内部網絡管理者作為對所有計算機作中央管理的手段。
IPv6中IP位址的标記方法
IPv6的IP位址長度為128位。它所能表示的數字高達38位數。
如果将IPv6的位址像IPv4的位址一樣用十進制資料表示的話,是16個數字的序列(IPv4是4個數字的序列)。由于用16個數字序清單示顯得麻煩,是以,将IPv6和IPv4在标記方法上進行區分。
一般人們将128比特IP位址以每16比特為一組,每組用冒号(“:”)隔開進行标記。而且如果出現連續額的0時還可以将這些0省略,并用兩個冒号(“::”)隔開。但是,一個IP位址中隻允許出現一次兩個連續的冒号。
在IPv6當中,人們正努力使用最簡單的方法标記IP位址,以便易于記憶。
IPv6位址的結構
IPv6類似IPv4,也是通過IP位址的前幾位識别IP位址種類的。
在網際網路通信中,使用一種全局的單點傳播位址。它是網際網路中唯一的一個位址,不需要正式配置設定IP位址。
限制型網絡,即那些不與網際網路直接接入的私有網絡,可以使用唯一本地位址。該位址根據一定的算法生成随機數并融合到位址當中,可以像IPv4的私有位址一樣自由使用。
在不使用路由器或者在同一個以太網網段内進行通信時,可以使用鍊路本地單點傳播位址。
而在建構允許多種類型IP位址的網絡時,在同一個鍊路上也可以使用全局單點傳播位址以及唯一本地位址進行通信。
在IPv6環境下,可以同時将這些IP位址全都配置在同一個NIC上,按需靈活使用。
全局單點傳播位址
全局單點傳播位址是指世界上唯一的一個位址。它是網際網路通信以及各個域内部通信中最為常用的一個IPv6位址。
現在IPv6的網絡中所使用的格式為,n=48,m=16以及128-n-m=64。即前64比特為網絡辨別,後64比特為主機辨別。
鍊路本地單點傳播位址
鍊路本地單點傳播位址是指在同一資料鍊路内唯一的位址。它用于不經過路由器,在同一個鍊路中的通信。通常接口ID儲存64比特版的MAC位址。
唯一本地位址
唯一本地位址是不進行網際網路通信時所使用的位址。
裝置控制的限制型網絡以及金融機關的核心網等會與網際網路隔離。為了提高安全性,企業内部的網絡與網際網路通信時通常會通過NAT或網關(代理)進行。而唯一本地位址正是在這種不聯網或通過NAT以及代理聯網的環境下使用的。
唯一本地位址雖然不會與網際網路連接配接,但是也會盡可能地随機生成一個唯一的全局ID。由于企業兼并、業務統一、效率提高等原因,很有可能會需要用到唯一本地位址進行網絡之間的連接配接。這種情況下,人們希望可以在不改動IP位址的情況下即可實作網絡的統一(全局IP不一定必須是全世界唯一的,但是完全一緻的可能性也不高)。
IPv6分段處理
IPv6的分片處理隻在作為起點的發送端主機上進行,路由器不參與分片。這是為了減少路由器的負荷,提高網速。是以,IPv6中的“路徑MTU發現”功能必不可少。不過IPv6中最小MTU為1280位元組。是以,在嵌入式系統中對于那些有一定系統資源限制的裝置來說,不需要進行“路徑MTU發現”,而是在發送IP包時直接以1280位元組為機關分片送出。
IPv4首部
通過IP進行通信時,需要在資料的前面加入IP首部資訊。IP首部中包含着用于IP協定進行發包控制時所有的必要資訊。
版本(Version)
由4比特構成,表示辨別IP首部的版本号。IPv4的版本号即為4,是以在這個字段上的值也是“4”。關于IP的所有版本在下表中列出:
首部長度(IHL:Internet Header Length)
由4比特構成,表明IP首部的大小,機關為4位元組(32比特)。對于沒有可選項的IP包,首部長度則設定為“5”。就是說,沒有可選項時,IP首部長度為20位元組(4*5=20,最小值)。
區分服務(TOS:Type Of Service)
由8比特構成,用來表明服務品質。每一位的拘役含義如下:
這個值通常由應用指定。
DSCP段與ECN段
DSCP(Differential Services Codeponit,差分服務代碼點)是TOS(Type Of Service)的一部分。現在統稱為DiffServ,用來進行品質控制。
ECN(Explicit Congestion Notification,顯式擁塞通告)。
總長度(Total Length)
表示IP首部與資料部分合起來的總位元組數。該字段長16比特。是以IP包的最大長度為65535(2^16)位元組。
目前還不存在能夠傳輸最大長度的65535位元組的IP包的資料鍊路。不過,由于有IP分片處理,從IP的上一層角度看,不論底層采用何種資料鍊路,都可以認為能夠以IP的最大包長傳輸資料。
辨別(ID:Identification)
由16畢騰構成,用于分片重組。用以分片的辨別值相同,不同分片的辨別值不同。通常,每發送一個IP包,它的值也逐漸增長。此外,即使IP相同,如果目标位址、源位址或協定不同的話,也會被認為是不同的分片。
标志(Flags)
由3比特構成,表示包被分片的相幹資訊。每一位具體含義:
片偏移(FO :Fragment Offset)
由13比特構成,用來辨別被分片的每一個分段相對于原始資料的位置。
生成時間(TTL:Time To Live)
由8比特構成,它最初的意思是以秒為機關記錄目前包在網絡上應該生存的期限。然而,在實際中它是指可以中轉多少個路由器的意思。每經過一個路由器,TTL會減少1,直到變成0則丢棄該包。
協定(Protocol)
由8比特構成,辨別IP首部的下一個首部隸屬于哪個協定。常用的協定如下表:
其他
首部校驗和(Header Checksum)、源位址(Source Address)、目标位址(Destination Address)、可選項(Options)、填充(Padding)、資料(Data)。
IPv6首部格式
IPv6箱比IPv4,發生了巨大變化。
PIv6中為了減輕路由器壓力,省略了首部校驗和字段(因為TCP和UDP在做校驗和計算的時候使用僞首部,是以可以驗證IP位址或協定是否正确。是以,即使在IP層無法提供可靠傳輸,在TCP或UDP層也可以提供可靠傳輸的服務)。用詞路由器不再需要檢驗和,進而也挺高了包的轉發效率。
此刻外,分片處理所用的辨別碼稱為可選項。為了讓64位CPU計算處理起來友善,IPv6首部及可選項都由8位元組構成。
版本(Version)
與IPv4一樣,由4比特構成。
通信量類(Traffic Class)
相當于Ipv4的TOS(Type Of Service)字段。由8比特構成。
流标号(Flow Label)
由20比特構成,準備用于服務品質(Qos:Quality Of Service)控制。
其他
有效載荷長度(Payload Length)、下一個首部(Next Header)、跳數限制(Hop Limit)、源位址(Source Address)、目标位址(Destination Address等。)
IPv6擴充首部
IPv6的首部長度固定,無法将可選項加入其中。取而代之的是通過擴充首部對功能進行了有效擴充。
擴充首部通常介于IPv6首部與TCP/IP首部中間。在IPv4中可選項長度固定為40位元組,但是在IPv6中沒有這樣的限制。就是說,IPv6的擴充首部可以是任意長度。擴充首部當中還可以包含擴充首部協定以及下一個擴充首部字段。
IPv6首部中沒有辨別以及标志字段,在需要對IP資料報進行分片時,可以使用擴充首部。