轉自華為官網
1.1 介紹
定義
IPv4(Internet Protocol Version 4)協議族是TCP/IP協議族中最為核心的協議族。它工作在TCP/IP協議棧的網絡層,該層與OSI參考模型的網絡層相對應。網絡層提供了無連接數據傳輸服務,即網絡在發送分組時不需要先建立連接,每一個分組(也就是IP數據報文)獨立發送,與前后的分組無關。
目的
網絡層的IPv4協議族為數據鏈路層和傳輸層實現互通提供了保障。IPv4協議族可以屏蔽各鏈路層的差異,為傳輸層提供統一的網絡層傳輸標准。
1.2 原理描述
1.2.1 IPv4簡介
IPv4協議族
IPv4協議族是TCP/IP協議族中最為核心的協議族。IPv4協議族主要包括地址解析協議ARP(Address Resolution Protocol)、逆地址解析協議RARP(Reverse Address Resolution Protocol)、互聯網控制消息協議ICMP(Internet Control Message Protocol)、傳輸控制協議TCP(Transmission Contronl Protocol)和用戶數據報協議UDP(User Datagram Protocol)等協議。
圖1-1 IPv4協議族
從圖1-1可以看出來,ARP和RARP的功能是地址解析,介於數據鏈路層和網絡層之間,所以常常被調用。ICMP協議的功能是為了更有效地轉發IP數據報文和提高數據報文交付成功的機會,是介於網絡層和傳輸層之間的協議。
ARP協議
ARP是用來將IP地址解析為MAC地址的協議,可以分為動態和靜態兩種類型。另外ARP還有擴展應用功能,包括Proxy ARP功能、免費ARP、ARP安全以及ARP-Ping。
RARP協議
RARP和ARP正好相反,是將主機的MAC地址解析為IP地址的協議。
ICMP協議
為了更有效地轉發IP數據報文和提高數據報文交付成功的機會,在網絡層使用ICMP協議。ICMP允許主機或路由器報告差錯情況和提供有關異常情況的報告。ICMP報文作為IP層數據報文的數據,加上數據報文的首部,組成IP數據報文發送出去。
1.2.2 IPv4地址
在IP網絡上,如果用戶要將一台計算機連接到Internet上,就需要向因特網服務提供方ISP(Internet Service Provider)申請一個IP地址。
IP地址是在計算機網絡中被用來唯一標識一台設備的一組數字。IPv4地址由32位二進制數值組成,但為了便於用戶識別和記憶,采用了“點分十進制表示法”。采用了這種表示法的IP地址由4個點分十進制整數來表示,每個十進制整數對應一個字節。例如,IPv4地址使用二進制的表示形式為00001010 00000001 00000001 00000010,采用點分十進制表示法表示為10.1.1.2。
IPv4地址由如下兩部分組成:
-
網絡號碼字段(Net-id)。IP地址的網絡號碼字段用來標識一個網絡,網絡號碼字段的前幾位用來區分IP地址的類型。
-
主機號碼字段(Host-id)。主機號碼字段用來區分一個網絡內的不同主機。對於網絡號相同的設備,無論實際所處的物理位置如何,它們都是處在同一個網絡中。
IPv4地址的特點
IPv4地址的主要特點有:
-
IP地址是一種非等級的地址結構,IP地址不能反映任何有關主機位置的地理信息,只能通過網絡號碼字段判斷出主機屬於哪個網絡。
-
當一台主機同時連接到兩個網絡上時,該主機就必須同時具有兩個相應的IP地址,其網絡號碼Net-id是不同的,這種主機稱為多地址主機(Multihomed Host)。主機上的每個接口都對應着一個IP地址,因此多接口主機會有多個IP地址。
-
在IP地址中,所有分配到網絡號碼Net-id的網絡都是平等的。
IPv4地址分類
為了方便IP地址的管理及組網,IP地址分成五類,如圖1-2所示。
圖1-2 五類IP地址
目前大量使用的IP地址屬於A、B、C三類IP地址中的一種。D類地址是組播地址,E類地址保留。A、B、C、D、E類的類別字段分別是二進制數0、10、110、1110、1111,通過網絡號碼字段的前幾個比特就可以判斷IP地址屬於哪一類,這是區分各類地址最簡單的方法。在IETF(Internet Engineering Task Force)發布的RFC1166 Internet Numbers中詳細描述了各類IP地址。
在使用IP地址時要注意,一些IP地址是保留作為特殊用途的,一般的用戶不能使用。表1-1列出各類IP地址的范圍。
表1-1 IP地址分類及范圍
網絡類型 |
地址范圍 |
說明 |
---|---|---|
A |
0.0.0.0~127.255.255.255 |
全0的主機號碼表示該IP地址就是網絡的地址,用於網絡路由;全1的主機號碼表示廣播地址,即對該網絡上所有的主機進行廣播。 |
B |
128.0.0.0~191.255.255.255 |
全0的主機號碼表示該IP地址就是網絡的地址,用於網絡路由;全1的主機號碼表示廣播地址,即對該網絡上所有的主機進行廣播。 |
C |
192.0.0.0~223.255.255.255 |
全0的主機號碼表示該IP地址就是網絡的地址,用於網絡路由;全1的主機號碼表示廣播地址,即對該網絡上所有的主機進行廣播。 |
D |
224.0.0.0~239.255.255.255 |
D類地址是一種組播地址。 |
E |
240.0.0.0~255.255.255.255 |
保留。255.255.255.255用於局域網廣播地址。 |
特殊IPv4地址
表1-2 特殊情況的IP地址
IP地址網絡號 |
IP地址主機號 |
能否作為源端地址 |
能否作為目的端地址 |
描述 |
---|---|---|---|---|
全0 |
全0 |
可以 |
不可以 |
用於本網絡上的本主機 |
全0 |
主機號 |
可以 |
不可以 |
用於網絡上的特定主機 |
127 |
非全0或全1的任何值 |
可以 |
可以 |
用於環回地址 |
全1 |
全1 |
不可以 |
可以 |
用於受限的廣播(永遠不被轉發) |
Net-id |
全1 |
不可以 |
可以 |
用於向以Net-id為目的的網絡廣播 |
Net-id表示不全為0和不全為1的對應字段。
私有IPv4地址
為了解決IP地址短缺的問題,提出了私有地址的概念。私有地址是指內部網絡或主機地址,這些地址只能用於某個內部網絡,不能用於公共網絡。RFC1918描述了為私有網絡預留的3個IP地址段。
表1-3 私有IP地址
網絡類型 |
地址范圍 |
---|---|
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 |
1.2.3 IPv4報文格式
IPv4報文格式如圖1-3所示。
圖1-3 IPv4報文格式
一個IPv4數據報文由首部和數據兩部分組成。首部的前一部分是固定長度,共20個字節,是所有IPv4數據報必須具有的。在首部的固定部分的后面是一些可選字段,其長度是可變的。
主要字段的解釋如表1-4所示。
表1-4 IPv4報文各字段的含義
字段 |
長度 |
含義 |
---|---|---|
版本 |
4比特 |
IP協議的版本號,分為IPv4和IPv6協議。 |
首部長度 |
4比特 |
IPv4的首部長度。 |
區分服務 |
8比特 |
用來獲得更好的服務。只有在使用區分服務時,這個字段才起作用。 |
總長度 |
16比特 |
指首部和數據之和的長度。 |
標識 |
16比特 |
IPv4軟件在存儲器中維持一個計數器,每產生一個數據報,計數器就加1,並將此值賦給標識字段。 |
標志 |
3比特 |
目前只有兩位有意義。最低位為1表示后面“還有分片”的數據報,為0表示這已經是最后一個數據片;中間一位為1表示“不能分片”,為0才允許分片。 |
片位移 |
13比特 |
指出較長的分組在分片后,該片在原分組中的相對位置。 |
生存時間 |
8比特 |
表示數據報在網絡中的壽命,英文縮寫是TTL(Time To Live),功能是“跳數限制”。 |
協議 |
8比特 |
指出此數據報攜帶的數據是使用何種協議。 |
首部檢驗和 |
16比特 |
數據報每經過一個路由器,路由器都要重新計算一下首部檢驗和,若首部未發生變化,則此結果必為0,於是就保留這個數據報。這個字段只檢驗數據報的首部,但不包括數據部分。 |
源地址 |
32比特 |
報文發送方的IPv4地址。 |
目的地址 |
32比特 |
報文接收方的IPv4地址。 |
選項字段(長度可變) |
0~40字節 |
用來支持排錯、測量以及安全等措施。在必要的時候插入值為0的填充字節。 |
數據部分 |
可變 |
用來填充報文。 |
1.2.4 子網划分
通過將IP地址的網絡部分進一步划分為若干個子網,解決了IP地址空間利用率低和兩級IP地址不夠靈活的問題。
當一個單位的主機很多而且分布在很廣的地理范圍時,為了便於管理,可將單位內部的主機號碼再進一步划分為多個子網。通過子網划分,整個網絡地址可以划分成更多的小網絡。
子網的划分是網絡內部的行為,從外部看,這個單位只有一個網絡號碼。只有當外部的報文進入到本單位范圍后,本單位的路由設備才根據子網號碼再進行選路,找到目的主機。
如圖1-4所示,為一個B類IP地址子網划分情況,其中子網掩碼由一串連續的“1”和一串連續的“0”組成。“1”對應於網絡號碼和子網號碼字段,而“0”對應於主機號碼字段。
圖1-4 IP地址子網划分
圖1-4中,把一個B類地址的Host-id的高位5bits用來划分子網,Subnet-id的范圍是從00000~11111,總共可以划分25(32)個子網出來。對應的子網掩碼也會相應的發生變化,比如Subnet-id為11111的子網掩碼就是255.255.248.0。將IP地址與其相應掩碼位執行與運算的結果就是網絡地址。
多划分出一個子網號碼字段是要付出代價的。舉例來說,本來一個B類IP地址可以容納65534個主機號碼。但划分出5bits長的子網字段后,最多可有32個子網,每個子網有11bit的主機號碼,即每個子網最多可有2046(211-2,去掉全1和全0的主機號碼)個主機號碼。因此主機號碼的總數是(32 x 2046 = 65472)個,比不划分子網時要少62個。
子網划分與IP地址規划時,通常需要綜合考慮以下原則,實現合理高效的網絡規划。
層次性
實現網絡的層次性划分,需要綜合考慮地域和業務因素,采用自頂向下的方法划分,達到有效管理網絡、簡化路由表的目標。一般情況下:
- 對於大骨干網絡和大城域網絡相結合的網絡,采用層次性划分方式。
- 對於行政區類型的網絡,采用多級網絡分配方式。
連續性
連續地址在層次結構的網絡中易於進行路由聚合,大大縮減路由表數量,提高路由查找的效率。
- 盡量為每個區域分配連續的IP地址空間。
- 盡量為具有相同業務和功能的設備分配連續的IP地址。
擴展性
分配地址時,在每一層次上都要留有余量。當網絡規模擴展時能保證地址分配的連續性,實現網絡的長遠規划。
骨干網絡應有足夠的連續地址組成獨立的自治域,並為今后的擴展留有余地。
高效性
划分子網時,要保證充分利用地址資源,使子網的划分滿足主機個數的要求。
- 利用可變長子網掩碼VLSM(Variable Length Subnet Mask)技術分配IP地址,充分合理地利用地址資源。
- 與網絡的路由機制設計相結合,合理使用已划分的地址空間,提高地址的利用率。
1.2.5 IP地址解析
一台路由設備用來連接多個網絡,具有多個網絡的IP地址。為保證用戶使用IP地址進行正常通信,需要滿足如下兩點:
-
IP地址只是主機在網絡層中的地址,若要將網絡層中傳送的數據報交給目的主機,必須知道該主機的物理地址,因此必須將IP地址解析為物理地址。
-
用戶平時不願意使用難於記憶的IP地址,而更願意使用易於記憶的主機名,因此也需要將主機名解析為IP地址。
在以太網上,主機的物理地址就是指MAC地址。將主機名解析為IP地址的操作是由DNS服務器來完成,而將IP地址解析為MAC地址的操作是由ARP來完成的,詳細內容請參見DNS和ARP章節內容。
1.3 參考標准和協議
本特性的參考資料清單如下:
文檔 |
描述 |
備注 |
---|---|---|
RFC1166 |
Internet Numbers |
- |
RFC1918 |
Address Allocation for Private Internets |
- |