簡介 網際協定版本4 (英語:
I nternet
P rotocol
v ersion
4 ,
IPv4 ),又稱網際網路
通信協定 第四版,是
網際協定 開發過程中的第四個修訂版本,也是此協定第一個被廣泛部署的版本。IPv4是網際網路的核心,也是使用最廣泛的網際協定版本,其後繼版本為
IPv6 ,直到2011年,
IANA IPv4位址完全用盡時,IPv6仍處在部署的初期。
IPv4在
IETF 於1981年9月發布的
RFC 791中被描述,此RFC替換了於1980年1月發布的RFC 760。
地址 IPv4使用32位(4位元組)地址,因此
地址空間 中只有4,294,967,296(2)個地址。不過,一些地址是為
特殊用途 所保留的,如
專用網路 (約1800萬個地址)和
多播地址 (約2.7億個地址),這減少了可在網際網路上路由的地址數量。隨著地址不斷被分配給
最終用戶 ,
IPv4地址 枯竭問題也在隨之產生。基於
分類網路 、
無類別域間路由 和
網路地址轉換 的地址結構重構顯著地減少了地址枯竭的速度。但在2011年2月3日,在最後5個地址塊被分配給5個區域網際網路註冊管理機構之後,IANA的主要
地址池 已經用盡。
這些限制刺激了仍在開發早期的
IPv6 的部署,這也是唯一的長期解決方案。
IPv4地址 可被寫作任何表示一個32位整數值的形式,但為了方便人類閱讀和分析,它通常被寫作點分十進制的形式,即四個位元組被分開用
十進制 寫出,中間用點分隔。
下表展示了幾種不同的格式:
進制轉換表 此外,在點分格式中,每個位元組都可用任意的
進制 表達。如,192.0x00.0002.235是一種合法(但不常用)的表示。
分配
最初,一個IP位址被分成兩部分:網上
識別碼 在地址的高位位元組中,主機識別碼在剩下的部分中。
為了克服這個限制,在隨後出現的
分類網路 中,地址的高位位元組被重定義為網路的
類 (Class)。這個
系統定義 了五個類別:A、B、C、D和E。A、B和C類有不同的網路類別長度,剩餘的部分被用來識別網路內的主機,這就意味著每個網路類別有著不同的給主機編址的能力。D類被用於多播地址,E類被留作將來使用。
CIDR被設計為可以重新劃分地址空間,因此小的或大的地址塊均可以分配給用戶。CIDR創建的分層架構由
網際網路號碼分配局 (IANA)和區域網際網路註冊管理機構(
RIR )進行管理,每個RIR均維護著一個公共的WHOIS資料庫,以此提供IP位址分配的詳情。
特殊用途的地址
保留的地址塊 專用網路
在IPv4所允許的大約四十億地址中,三個地址塊被保留作
專用網路 。這些地址塊在專用網路之外不可路由,專用網路之內的主機也不能直接與公共
網路通信 。但通過
網路地址轉換 (NAT),使用這些地址的主機可以像擁有共有地址的主機在網際網路上通信。
名字
地址範圍
地址數量
有類別的描述
172.16.0.0–172.31.255.255
192.168.0.0–192.168.255.255
通常情況下,路由器根據數據報文的目的地址決定轉發數據報文的下一跳地址。使用專用
網路地址 作為目的地址的數據包通常無法被公共路由器正確送達,因為公共路由器沒有相應的路由信息,即無法得知如何才能轉發到該IP位址。因此,這就需要通過一種方法,將指引數據報文轉發的下一跳地址和真正要傳輸的目的地址分離開。於是就使用
虛擬專用網 ,將IP報文封裝在其他報文內,以便於通過公網上的公共路由器,達到能處理該報文內層數據的
網路設備 上解除報文後,該數據包可以被繼續轉發到目的地址。
將數據報文封裝的過程中,可以將數據報文封裝於IP報文中,也可以使用
多協定標籤交換 協定等,通過其他協定
引導數據 報文轉發。也可以封裝同時加密數據,以保護數據內容。
RFC 5735中將地址塊169.254.0.0/16保留為特殊用於鏈路本地地址,這些地址僅在鏈路上有效(如一段
本地網路 或一個
端到端 連線)。這些地址與專用網路地址一樣不可路由,也不可作為公共網路上報文的源或目的地址。鏈路本地地址主要被用於地址自動配置:當主機不能從DHCP伺服器處獲得IP位址時,它會用這種方法生成一個。
當這個地址塊最初被保留時,地址自動配置尚沒有一個標準。為了填補這個空白,
微軟 創建了一種叫
自動專用IP定址 (APIPA)的實現。因微軟的市場影響力,APIPA已經被部署到了幾百萬機器上,也因此成為了事實上的工業標準。許多年後,
IETF 為此定義了一份正式的標準:RFC 3927,命名為“IPv4鏈路本地地址的動態配置”。
地址塊127.0.0.0/8被保留作環回通信用。此範圍中的地址絕不應出現於主機之外,傳送至此地址的報文
被作為 同一虛擬網路設備上的入站報文(環回),主要用於檢查
TCP/IP協定 棧是否正確運行和本機對本機的連結。
以0或255結尾的地址
一個常見的誤解是以0或255結尾的地址永遠不能分配給主機:這僅在
子網掩碼 至少24位長度時(舊的
C類地址 ,或CIDR中的/24到/32)才成立。
在有類別的編址中,只有三種可能的
子網 掩碼:A類:255.0.0.0,B類:255.255.0.0,C類:255.255.255.0。如,在子網192.168.5.0/255.255.255.0(即192.168.5.0/24)中,網上識別碼192.168.5.0用來表示整個子網,所以它不能用來標識子網上的某個特定主機。
廣播地址 允許數據包發往子網上的所有設備。一般情況下,廣播地址是藉由子網掩碼的比特反碼並和網上識別碼運行 OR 的比特運算得到,即廣播地址是子網中的最後一個地址。在上述例子中,廣播地址是192.168.5.255,所以為了避免歧義,這個地址也不能被分配給主機。在A、B和C類網路中,廣播地址總是以255結尾。
但是,這並不意味著每個以255結尾的地址都不能用做
主機地址 。比如,在B類子網192.168.0.0/255.255.0.0(即192.168.0.0/16)中,廣播地址是192.168.255.255(主機位全1)。在這種情況下,儘管可能帶來誤解,但192.168.1.255、192.168.2.255等地址可以被分配給主機。同理,192.168.0.0作為網上識別碼不能被分配,但192.168.1.0、192.168.2.0等都是可以的。
隨著CIDR的到來,廣播地址不一定總是以255結尾(廣播地址是指主機位都為1的地址,255隻是其中一種情況)。比如,子網203.0.113.16/28的廣播地址是203.0.113.31。過程如下:
網路:203.0.113.16
掩碼反碼:0.0.0.15
OR操作:
00010000 | 00001111 = 00011111 =31
一般情況下,子網的第一個和最後一個地址分別被作為網上識別碼和廣播地址,任何其它地址都可以被分配給其上的主機。
網際網路上的主機通常被指定,但IP報文的路由是由IP位址而不是這些名字決定的。這就需要將域名翻譯(解析)成地址。
域名系統 (DNS)提供了域名轉換為IP位址的服務。與CIDR相像,DNS是層級結構。
地址空間枯竭 隨著網際網路的增長,各種各樣的技術隨之產生以應對IPv4地址的耗盡,如:
區域網際網路註冊管理機構對地址分配的控制;
對網際網路初期分配的大地址塊的回收。
隨著
IANA 把最後5個地址塊分配給5個
RIR ,其主地址池在2011年2月3日耗盡。許多地址分配和消耗的模型都預測第一個耗盡地址的RIR會在2011年的下半年出現。
廣泛被接受且已被標準化的解決方案是遷移至
IPv6 。IPv6的地址長度從IPv4的32位增長到了128位,以此提供了更好的
路由聚合 ,也為
最終用戶 分配最小為2個
主機地址 的地址塊成為可能。遷移過程正在進行,但其完成仍需要相當的時間。
網路地址轉換 對地址的快速分配和其造成的地址短缺促成了許多有效套用地址的方法,其中一種就是網路地址轉換(NAT)。
分片和組裝 分片
當設備收到IP報文時,分析其目的地址並決定要在哪個鏈路上傳送它。MTU決定了數據載荷的最大長度,如IP報文長度比MTU大,則IP數據包必須進行分片。每一片的長度都
小於等於 MTU減去IP首部長度。接下來每一片均被放到獨立的IP報文中,並進行如下修改:
總長欄位被修改為此分片的長度;
更多分片(MF)標誌被設定,除了最後一片;
分片偏移量欄位被調整為合適的值;
首部檢驗和被重新計算。
例如,對於一個長20位元組的首部和一個MTU為1,500的
乙太網 ,分片
偏移量 將會是:0、(1480/8)=185、(2960/8)=370、(4440/8)=555、(5920/8)=740、等等。
如果報文經過路徑的MTU減小了,那么分片可能會被再次分片。
比如,一個4,500位元組的數據載荷被封裝進了一個沒有選項的IP報文(即總長為4,520位元組),並在MTU為2,500位元組的鏈路上傳輸,那么它會被破成如下兩個分片:
假設
下一跳 的MTU為1,500位元組,那么每一個分片都會被再次分成兩片(由於數據片段只有在目的主機才重新被組成
數據報 ,因此再次分片是針對每個在網路中傳輸的數據幀):
第3和4片是從原始第2片再次分片而來,所以除了分片後的最後一個分片外MF為都為1。
重組
當一個接收者發現IP報文的下列項目之一為真時:
它便知道這個報文已被分片,並隨即將數據、
標識符 欄位、分片偏移量和更多分片標誌一起儲存起來。
當
接受者 收到了更多分片標誌未被設定的分片時,它便知道
原始數據 載荷的總長。一旦它收齊了所有的分片,它便可以將所有片按照正確的順序(通過分片偏移量)組裝起來,並交給上層
協定棧 。
輔助協定 參見 已分配的/8 IPv4地址塊列表
區域網際網路註冊管理機構
各國IPv4位址分配列表