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