网络层:IP协议详解(IP协议真的得看这篇)
1、IP協議概念
IP(Internet Protocol , 互聯網協議)主要用于互聯網通信。IP協議用于將多個包交換網絡連接起來,他在原地址和目的地址之間傳輸數據報,還提供對數據大小的重新組裝功能,以適應不同網絡的要求。
IP協議是TCP/IP協議族的核心協議,最常用的IP協議的版本號是4,即IPV4 ,它的下一個版本就是 IPV6。
2、IP協議報文格式
(1)版本 占4位,指IP協議的版本。通信雙方使用的IP協議版本必須一致。目前廣泛使用的IP協議版本號為4(即IPv4)。關于IPv6,目前還處于草案階段。
(2)首部長度 占4位,可表示的最大十進制數值是15。請注意,這個字段所表示數的單位是32位字長(1個32位字長是4字節),因此,當IP的首部長度為1111時(即十進制的15),首部長度就達到60字節。當IP分組的首部長度不是4字節的整數倍時,必須利用最后的填充字段加以填充。因此數據部分永遠在4字節的整數倍開始,這樣在實現IP協議時較為方便。首部長度限制為60字節的缺點是有時可能不夠用。但這樣做是希望用戶盡量減少開銷。最常用的首部長度就是20字節(即首部長度為0101),這時不使用任何選項。
(3)區分服務 占8位,用來獲得更好的服務。這個字段在舊標準中叫做服務類型,但實際上一直沒有被使用過。1998年IETF把這個字段改名為區分服務DS(Differentiated Services)。只有在使用區分服務時,這個字段才起作用。
(4)總長度 總長度指首部和數據之和的長度,單位為字節。總長度字段為16位,因此數據報的最大長度為216-1=65535字節。
在IP層下面的每一種數據鏈路層都有自己的幀格式,其中包括幀格式中的數據字段的最大長度,這稱為最大傳送單元MTU(Maximum Transfer Unit)。當一個數據報封裝成鏈路層的幀時,此數據報的總長度(即首部加上數據部分)一定不能超過下面的數據鏈路層的MTU值。
(5)標識(identification) 占16位。IP軟件在存儲器中維持一個計數器,每產生一個數據報,計數器就加1,并將此值賦給標識字段。但這個“標識”并不是序號,因為IP是無連接服務,數據報不存在按序接收的問題。當數據報由于長度超過網絡的MTU而必須分片時,這個標識字段的值就被復制到所有的數據報的標識字段中。相同的標識字段的值使分片后的各數據報片最后能正確地重裝成為原來的數據報。
(6)標志(flag) 占3位,但目前只有2位有意義。
● 標志字段中的最低位記為MF(More Fragment)。MF=1即表示后面“還有分片”的數據報。MF=0表示這已是若干數據報片中的最后一個
● 標志字段中間的一位記為DF(Don’t Fragment),意思是“不能分片”。只有當DF=0時才允許分片。
(7)片偏移 占13位。片偏移指出:較長的分組在分片后,某片在原分組中的相對位置。也就是說,相對用戶數據字段的起點,該片從何處開始。片偏移以8個字節為偏移單位。這就是說,每個分片的長度一定是8字節(64位)的整數倍。
(8)生存時間 占8位,生存時間字段常用的的英文縮寫是TTL(Time To Live),表明是數據報在網絡中的壽命。由發出數據報的源點設置這個字段。其目的是防止無法交付的數據報無限制地在因特網中兜圈子,因而白白消耗網絡資源。最初的設計是以秒作為TTL的單位。每經過一個路由器時,就把TTL減去數據報在路由器消耗掉的一段時間。若數據報在路由器消耗的時間小于1秒,就把TTL值減1。當TTL值為0時,就丟棄這個數據報。
(9)協議 占8位,協議字段指出此數據報攜帶的數據是使用何種協議,以便使目的主機的IP層知道應將數據部分上交給哪個處理過程。
(10)首部檢驗和 占16位。當收到一份IP數據包后,同樣對首部的每個16位進行反碼求和。由于接收方在計算過程中包含了發送發在首部中的校驗和,如果傳輸過程中沒有差錯,計算結果應全為1,不是全1,即檢驗和錯誤,那么就丟棄收到的數據報,但不生成差錯報文,由上層發現丟失的數據報并進行重傳。這個字段只檢驗數據報的首部,但不包括數據部分。這是因為數據報每經過一個路由器,路由器都要重新計算一下首部檢驗和(一些字段,如生存時間、標志、片偏移等都可能發生變化)。不檢驗數據部分可減少計算的工作量。
3、IP地址
IP地址標識著網絡中一個系統的位置。每個IP地址都是由兩部分組成:網絡號和主機號。網絡號標識一個物理的網絡,同一個網絡上所有的主機需要同一個網絡號,該號在整個互聯網是唯一的;主機號是網絡中的一個工作端、服務器、路由器其他TCP/IP主機。對于一個網絡號來說主機號是唯一的。每個TCP/IP主機由一個邏輯IP地址確定。
IP地址有兩種表示方法:二進制表示、點分十進制表示。
每個IP地址為4個字節,由4個8位域組成,稱之為8位體。
IP地址的編址方式共經過了三個歷史階段。這三個階段是:
分類的IP地址。最基本的編址方式。
子網的劃分。對最基本的編址方式的改進。
構造超網。比較新的無分類編址方法。
1>. A類地址( 0.0.0.0 - 127.255.255.255 )以”0”頭,網絡段長度為8位,其中可變部分的長度為7位;主機段長度為24位。7位的可變網絡段可識別2^7=128 (0~127)個網絡,其中0和127另有用途,故只有126個可用的A類網絡地址。另外,主機位全”0”代表網絡本身,全”1”代表網內廣播,因此一個A類網絡地址可識別的可分配地址有 2^24-2 個。
2>. B類地址( 128.0.0.0 - 191.255.255.255 )以”10”開頭,網絡段長度為16位,可變部分的長度為14位;主機段長度為16位。14位的可變網絡段可以識別的網絡數為 2^14 個。另外,主機位全”0”與全”1”功能同A類地址,因此一個B類網絡可以分配地址有 2^16-2 個。
3>. C類地址( 192.0.0.0 - 223.255.255.255 )以”110”開頭,網絡段長度為24位,其中可變部分的長度為21位;主機段長度為8位。21位的可變網絡段可以識別的網絡數為 2^21 個。可分配的主機地址是 2^8-2 個。
4>. D類地址( 224.0.0.0 - 239.255.255.255 )為組播地址,使用”1110”開頭,不分網絡段和主機段,有 2^28 個組播地址。用于標識預先定義的一組主機。主機使用組播通信時,可以將組播數據報一次性發送給所有同組的主機。
5>. E類地址( 240.0.0.0 - 255.255.255.255 )是保留地址,用于研究使用。以”1111”開頭,不區分網絡段和主機段,其中32位全1代表本網絡內廣播,因此E類地址共有 2^28-1 個。
私有IP地址和特殊IP地址
根據用途和安全性級別的不同,IP地址還可以大致分為兩類:公共地址和私有地址。公用地址在Internet中使用,可以在Internet中隨意訪問。
一個機構網絡要連入Internet,必須申請公用IP地址。但是考慮到網絡安全和內部實驗等特殊情況,在IP地址中專門保留了三個區域作為私有地址,其地址范圍如下:
A類:10.0.0.0/8(子網掩碼表示) 10.0.0.0-10.255.255.255
B類:172.16.0.0/12 172.16.0.0-172.31.255.255
C類:192.168.0.0/16 192.168.0.0-192.168.255.255
使用保留地址的網絡只能在內部進行通信,而不能與其他網絡互連。因為本網絡中的保留地址同樣也可能被其它網絡使用,如果進行網絡互連,那么尋找路由時就會因為地址的不唯一而出現問題。但是這些使用保留地址的網絡可以通過將本網絡內的保留地址翻譯轉換(NAT)成公共地址的方式實現與外部網絡的互連。這也是保證網絡安全的重要方法之一。
注:127(即01111111)保留作用本地軟件環回測試(loopback test)本主機的進程之間的通信之用。若主機發送一個目的地址為環回地址(例如:127.0.0.1)的IP數據報,則本主機中的協議軟件就處理數據報中的數據,而不會把數據報發送給任何網絡。目的地址為環回地址的IP數據報永遠不會出現在任何網絡上,因為網絡號為127的地址根本不是一個網絡地址。
網絡號為0,如主機使用BOOTP協議確定本機IP地址時只能作為初始化過程中的源地址出現。
4、子網劃分
1、子網劃分的意義
組織不同物理媒體的使用、地址空間的保存、控制網絡流量、安全性等因素。
2、子網掩碼
RFC950 定義了子網掩碼的使用。子網掩碼是32位二進制數,其對應網絡地址的位都是1,對應主機位置的都是0。
A類網絡的默認子網掩碼為255.0.0.0,B類網絡的默認子網掩碼為255.255.0.0,C類網絡的默認子網掩碼為255.255.255.0
子網掩碼告訴路由器,地址哪一部分是網絡地址,哪一部分是主機地址,是路由器正確判斷任意IP地址是否是本網段的,從而進行正確的路由。
3、子網劃分
知識點:
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
A類私有地址 10.0.0.0 ~ 10.255.255.255
B類私有地址 172.16.0.0 ~ 172.31.255.255
C類私有地址 192.168.0.0 ~ 192.168.255.255
CIDR(無類別域間路由,Classless Inter-Domain Routing)。CIDR最大的特點是用斜杠(/)來表示子網掩碼,指出了子網掩碼中有多少位1。這種表示方法我們經常在運營商給我的IP地址中看到,我們經常需要根據這種表示方法算出我們的可用IP地址是哪些。
假如電信給了我們這段地址61.168.1.32/28,我們可用的IP地址是多少呢?這個問題我們先不回答,等后面詳細講解子網劃分自后再回頭來看。
A類網絡默認子網掩碼是255.0.0.0,用CIDR表示為/8
B類網絡默認子網掩碼為255.255.0.0.0,用CIDR表示為/16
C類網絡默認子網掩碼為255.255.255.0,用CIDR表示為/24
看到這里,大家知道了吧,/8表示占用8位1,即占用一個字節,/16表示占用16位1,即2字節,/24占用24位1,即占用3字節,大家記住這個默認規則,是后面學習子網劃分以及以后心算子網劃分的重要技巧。
舉例,子網掩碼255.255.255.128,用CIDR表示是多少呢?首先這是個C類網絡地址,前面三個字節都是255,轉換成二進制都為1,即11111111.11111111.11111111,即24位1。128轉換成二進制位10000000,即1占用了一位。整個子網掩碼占用了25位1,所以用CIDR表示為/25,即255.255.255.128(/25),假如IP段為192.168.1.0,用CIDR表示則為192.168.1.0/25。
再舉例,192.168.1.0,255.255.255.192,用CIDR表示?首先判斷出是C類網絡,前面占用了3字節(24位)1,192換算成二進制位11000000,占用了2位1,總共是26位1.所以CIDR表示為192.168.1.0/26。
子網劃分的要點:
1、需要劃分成多少個網絡(子網)?
假如要劃分4個網絡,則2X=4,X=2、要劃分8個網絡,則2X=8,X=3,現在知道為什么要先搞懂2的冪了吧,這里X就是=2的冪值。
那么X代表什么意思呢?X就是取值多少位1,如11000000,就是借2位,即X=2,反推知道一個字節(8位)如果為11000000,則表示可以劃分4個網絡(22=4);如果為11110000,則表示借4位,可以劃分16個網絡(24=16)。
2、每個網絡需要多少個IP?
計算公式:2^y-2,y代表取值多少位0,如11111000,代表取值3位0,即y=3,得出2^3=8-2=6,即每個網絡可用的IP數量是6個。
假如每個網絡需要60臺主機的IP,那么如何計算呢?即2^y≥60,根據2的冪算法得出,2^6=64-2=62,所有y的值為6。
3、有哪些子網網絡(塊大小)?
計算公式:256-子網掩碼。假如子網掩碼為255.255.255.192,則塊大小為256-192=64,即塊大小為64。從0開始以64為基數不斷遞增,直到達到子網掩碼值,中間的結果即為子網,本例中子網即0、64、128、192。
再舉例,加入子網掩碼為255.255.255.128,則塊大小為256-128=128,即塊大小為128,子網0、128。
4、每個子網的子網號和廣播地址是多少?
子網號很簡單,即子網塊值,如掩碼為192,則子網塊為256-192=64,得出子網為0、64、128、192,即子網號為0、64、128、192。再如掩碼為128,則子網為128,則子網好0、128。
廣播地址也很簡單,總是下一個子網前面的數。如子網號為0、64、128、192、則廣播地址為63、127、191。再如子網號為0、128,則廣播地址為127.
看到這里大家知道為啥在計算每個網絡可用的IP數時,公式里要-2嗎?這是因為每個子網號(子網號也是一個IP地址)和廣播地址是不能配給主機用的。
5、每個子網的可用(合法)的主機地址是哪些?
規則就是除去每個每個子網的子網號、廣播地址,剩下的就是可用的主機地址,如子網號為0、64、128、192,則可用的主機地址為1-62、65-126、129-190,因為0是子網地址,63是廣播地址,同樣128、192是子網地址,127、191是廣播地址。
6、C類網絡子網劃分
舉例,192.168.10.0,255.255.255.224
1、可劃分成多少個子網?
根據前面的知識,首先把224轉換成二進制,得出為11100000,1占了3位,因此2^3=8,可用劃分8個子網。
2、每個子網有多少個可用的IP?
這里看0占了5位,因此2^5-2=30,可用IP數為30.
3、有哪些子網網絡?
256-224=32,即以32為基數不斷遞增,直到224,即0、32、64、96、128、160、192、224。即192.168.10.0、192.168.10.32、192.168.10.64、192.168.10.96、192.168.10.128、192.168.10.160、192.168.10.192、192.168.10.224。
4、每個子網網絡的廣播地址是多少?
每個子網網絡的廣播地址總是下一個子網前面的數,即31、63、95、127、159、191、223,即192.168.10.31、192.168.10.63、192.168.10.95、192.168.10.127、192.168.10.159、192.168.10.191、192.168.10.223。
5、每個子網的可用地址是哪些?
即減去每個子網的子網地址和廣播地址,剩下的就是可用地址。本例中的可用地址為1-30、33-62、65-94、129-158、161-190、193-222。
再舉例,192.168.10.0/30
1、可劃分成多少個子網?
因為CIDR表示的子網掩碼,首先得算出占用了多少位1,即30-24(因為是C類網絡,前面三個字節都是255,即8位1,共24位1)=6,即6位1。所以2^6=64,即64個子網。
2、每個子網有多少個可用的IP?
因為1位占了6個,0位只有2個了,得出22-2=2,所以是2個可用IP地址。
3、有哪些子網網絡?
因為1位占了6個,所以得出21+22+23+24+25+26=252,即256=252=4,得出塊大小為4,子網網絡為0、4、8、12、16、……、240、244、248、252,即192.168.10.0、192.168.10.4、192.168.10.8、……192.168.10.248、192.168.10.252.
4、每個子網網絡的廣播地址是多少?
下一個子網之前的數字,即192.168.10.3、192.168.10.7、192.168.10.11、……、192.168.10.247、192.168.10 .251,你算對了嗎。
5、每個子網的可用地址是哪些?
除去子網地址和廣播地址就是可用地址,本例中的可用地址為1,2、5,6、……、249,250。
無論是A類、B類、C類網絡,在使用子網掩碼/30時,每個子網只包含2個主機地址,這種子網掩碼只適合用于點到點鏈路。
7、B類網絡子網劃分
通過前面的知識我們知道B類地址中,有16位可用的主機地址,這意味著我們可將其中的14位用于子網劃分,因為至少要保留2位用于主機編址。
舉例,172.17.0.0 255.255.128.0
1、可劃分成多少個子網?
首先128轉換成二進制位10000000,因為此例是屬于B類網絡,至少需要保留16位掩碼位(16位1)所以此處x=1,得出21=2。答案是可以劃分2個子網。
2、每個子網有多少個可用的IP?
這里0位總共占了15位,215-2=32766.
3、有哪些子網網絡?
256-128=128,即0.0、128.0,得出172.17.0.0、172.17.128.0
4、每個子網網絡的廣播地址是多少?
下一個子網之前的數字,172.17.127.255、172.17.255.255.
5、每個子網的可用地址是哪些?
子網0.0第一個可用地址為172.17.0.1,最后一個可用地址為172.17.127.254;子網128.0第一個可用地址為172.17.128.1,最后一個可用地址為172.17.255.254.
再舉例,172.17.0.0/20
1、可劃分成多少個子網?
因為此例是屬于B類網絡,至少需要保留16位掩碼位(16位1)所以此處x=4,得出24=16。答案是可以劃分16個子網。
2、每個子網有多少個可用的IP?
這里1位占了4位,所以這里0位總共占了12位,212-2=4094.
3、有哪些子網網絡?
因為1位占了4位,得出24+25+26+27=240。
256-240=16,即0.0、16.0、……、240.0,得出172.17.0.0、172.17.16.0、……、172.17.240.0。
4、每個子網網絡的廣播地址是多少?
下一個子網之前的數字,172.17.15.255、……、172.17.223.255.
5、每個子網的可用地址是哪些?
子網0.0第一個可用地址為172.17.0.1,最后一個可用地址為172.17.15.254;……。
請自己算出172.16.0.0/24可劃分成多少個子網?每個子網可用地址數是多少?正確答案大家可搜索QQ認證網絡工程師進群討論。
A類子網劃分與B類、C類子網劃分類似。
如果上面還是看不懂沒關系:還有大神更詳細的例子:
如何劃分子網的超經典分析
總結
以上是生活随笔為你收集整理的网络层:IP协议详解(IP协议真的得看这篇)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: SIFT算法原理
- 下一篇: QT输入输出(四)之 QProcess