維基百科,自由的百科全書
IPv4,是網際網路協議(Internet
Protocol,IP)的第四版,也是第一個被廣泛使用,構成現今網際網路技術的基石的協議。1981年 Jon Postel 在RFC791中定義了IP。
[編輯]
地址格式
IPv4使用32位地址,因此最多可能有4,294,967,296(=232)個地址。一般的書寫法為4個用小數點分開的十進位數。也有人把4個位元組的數字化成一個巨型整數,但這種標示法並不常見。另一方面,目前還並非很流行的IPv6使用的128位地址所採用的位址記數法,在IPv4也有人用,但使用范圍更少。
過去IANA把IP位址分為A,B,C,D
4類,把32位的地址分為兩個部分:前面的部分代表網路地址,由IANA分配,後面部分代表區域網地址。如在C類網路中,前24位為網路地址,後8位為區域網地址,可提供254個設備地址(因為有兩個地址不能為網路設備使用:255為廣播地址,0代表此網路本身)。網路遮罩(Netmask)
限制了網路的範圍,1代表網路部分,0代表設備地址部分,例如C類地址常用的網路掩碼為255.255.255.0。
但由於這種分類法會大量浪費網路上的可用空間,所以新的方法不再作這種區分,而是把用者需要用的位址空間,以2的乘冪方式來撥與。例如,某一網路只要13個ip位址,就會把一個
16位址的區段給他。假設批核了 61.135.136.128/28 的話,就表示從 61.135.136.129 到 61.135.136.142
的網址他都可以使用。
一些特別的IP位址段:
- 127.x.x.x給本機地址使用。
- 224.x.x.x為多播地址段。
- 255.255.255.255為通用的廣播地址。
- 10.x.x.x,172.16.x.x和192.168.x.x供本地網使用,這些網路連到互連網上需要對這些本地網地址進行轉換(網路地址轉換——NAT)。
[編輯]
IP包長
IP包由首部(header)和實際的數據部分組成。數據部分一般用來傳送其它的協議,如TCP,UDP,ICMP等。數據部分最長可為65515位元組(Byte)(=216 - 1 -
最短首部長度20位元組)。一般而言,低層(鏈路層)的特性會限制能支持的IP包長。例如乙太網(Ethernet)協議,有一個協議參數,即所謂的最大傳輸單元(Maximum
Transfer Unit, MTU) ,為1518位元組,乙太網的幀首部使用18位元組,剩給整個IP包(首部+數據部分)的只有1500位元組。
還有一些底層網路只能支持更短的包長。這種情況下,IP協議提供一個分割(fragment)的可選功能。長的IP包會被分割成許多短的IP包,每一個包中攜帶一個標誌(Fragmentid)。發送方(比如一個路由器)將長IP包分割,一個一個發送,接送方(如另一個路由器)按照相應的IP位址和分割標誌將這些短IP包再組裝還原成原來的長IP包。
[編輯]
IP路由
IPv4並不區分作為網路終端的主機(host) 和網路中的中間設備(如路由器)兩者之間的差別。每台電腦可以既做主機又做路由器。路由器用來聯結不同的網路。所有用路由器聯繫起來的這些網路的總和就是網際網路。
IPv4技術既適用於區域網(LAN)也適用於廣域網(WAN)。一個IP包從發送方出發,到接送方收到,往往要穿過通過路由器連接的許許多多不同的網路。每個路由器都擁有如何傳遞IP包的知識,這些知識記錄在路由表中。路由表中記錄了到不同網路的路徑,在這兒每個網路都被看成一個目標網路。路由表中記錄由路由協議管理,可能是靜態的記錄,比如由網路管理員寫入的,也有可能是由路由協議動態的獲取的。有的路由協議可以直接在IP協議上運行。
常用的路由協議有
- 路由信息協議(Routing
Information Protocol, RIP),
- 開放式最短路徑優先協議,Open Shortest Path Fast, OSPF),
- 中介系統對中介系統協議(Intermediate System – Intermediate System, IS-IS),
- 邊界網關協議(Border
Gateway Protocol, BGP).
在網路負荷很重或者出錯的情況下,路由器可以將收到的IP包丟棄。在網路負荷重的時候,同樣一個IP包有可能由路由器決定走了不同的路徑。路由器對每一個IP包都是單獨選擇路由的。這也提高了IP通信的可靠性。但單是IP層上的包傳輸,並不能保證完全可靠。IP包可能會丟失;可能會有重複的IP包被接受方收到;IP包可能會走不同的路徑,不能保證先發的先到;接受方收到的可能是被分割了的IP包。在IP之上再運行TCP協議則解決這些缺點提供了一個可靠的數據通路。
[編輯]
ICMP
網際網路控制消息協議(Internet
Control Messages
Protocol,ICMP)用於查錯和控制(如),是IP協議不可能缺少的幫手。幾乎任何的IP協議的實施(Implementation)都伴隨一個ICMP協議的實施。ICMP協議實現在IP之上,即ICMP包是作為IP的數據部分來傳送的。
ICMP的一個重要的應用是網路擁塞控制:路由器丟棄一個IP包時,一般會用ICMP發一個消息給這個IP包的原發送者,原發送者可以相應的降低IP包的發送頻率,以降低或避免IP包再被丟棄的可能性。
ICMP的另一個重要的應用在於,將傳送ICMP消息的IP包禁止分割位(Don't Fragment-Bit)設置上,就可以利用ICMP的來測量一段網路的最大傳輸單元(MTU) 。
[編輯]
IPOE
IPv4可以運行在各種各樣的底層網路上,比如端到端的串列數據鏈路(PPP協議和SLIP協議),衛星鏈路等等。區域網中最常用的是乙太網。
一個用於IP包的乙太網數據幀,在IP包首部前有一個14位元組的乙太網幀首部,在IP數據部分後添加了一個32位(4位元組)的CRC校驗。
除了1518位元組的最大傳輸單元(MTU)
限制外,乙太網還有最小傳輸單元的限制:總幀長不能小於64位元組。如果IP包太短,比如IP數據部分短於26位元組,那麼後面會添0(Padding)
,這時IP首部中的'包長度'指示了真正的包長。
乙太網使用48位的地址。每個乙太網網卡都有一個獨一無二的48位的硬體地址。所有的位均為1的地址是乙太網廣播地址。發送數據的乙太網網卡必須知道數據接收方的乙太網地址才能把數據發給它。
地址解析協議ARP(Address Resolution
Protocol)
用於將IP位址轉換成乙太網地址。每台計算機上都有一個ARP列表,裡面存儲了乙太網中不同的IP位址與乙太網地址的對應關係。如果一台計算機發現某個目標IP位址沒有對應的乙太網地址,它會發一個ARP請求(Request)
到乙太網中詢問,擁有該IP位址的計算機就會發一個ARP應答(Reply)來通知它自己的乙太網地址。
[編輯]
IP包首部格式
IPv4首部一般是20位元組長。在乙太網幀中,IPv4包首部緊跟著乙太網幀首部,同時乙太網幀首部中的協議類型值設置為080016。
IPv4提供不同,大部分是很少用的選項,使得IPv4包首部最長可擴展到60位元組(總是4個位元組4個位元組的擴展)
0 |
4 |
8 |
12 |
16 |
19 |
24 |
31 |
版本 |
首部長度 |
服務類型 |
長度 |
標識 |
標誌 |
段偏移量 |
TTL |
協議 |
校驗和 |
源IP位址 |
目的IP位址 |
選項 ... |
[編輯]
IP包頭欄位說明
版本:4位,指定IP協議的版本號。
包頭長度(IHL):4位,IP協議包頭的長度,指明IPv4協議包頭長度的位元組數包含多少個32位。由於IPv4的包頭可能包含可變數量的可選項,所以這個欄位可以用來確定IPv4數據報中數據部分的偏移位置。IPv4包頭的最小長度是20個位元組,因此IHL這個欄位的最小值用十進位表示就是5(5x4
= 20位元組)。就是說,它表示的是包頭的總位元組數對於4位元組的倍數。
服務類型:定義IP協議包的處理方法,它包含如下子欄位
- 過程欄位:3位,設置了數據包的重要性,取值越大數據越重要,取值範圍為:0(正常)~ 7(網路控制)
- 延遲欄位:1位,取值:0(正常)、1(期待低的延遲)
- 流量欄位:1位,取值:0(正常)、1(期待高的流量)
- 可靠性欄位:1位,取值:0(正常)、1(期待高的可靠性)
- 成本欄位:1位,取值:0(正常)、1(期待最小成本)
- 未使用:1位
長度:IP包的總長
標識:唯一地標識主機所發送的一個數據段,通常每發送一個數據段後加一。但IP包被分割後,分割得到的IP包擁有相同的標識
標誌:是一個3位的控制欄位,包含:
- 保留位:1位
- 不分段位:1位,取值:0(允許數據報分段)、1(數據報不能分段)
- 更多段位:1位,取值:0(數據包後面沒有包,該包為最後的包)、1(數據包後面有更多的包)
段偏移量:當數據段被分割時,它和更多段位(MF, More fragments)進行連接,幫助目的主機將分段的包組合。
TTL:表示數據包在網路上生存多久,每通過一個路由器該值減一,為0時將被路由器丟棄。
協議:8位,這個欄位定義了IP數據報的數據部分使用的協議類型。常用的協議及其十進位數值包括ICMP(1)、TCP(6)、UDP(17)。
校驗和:16位,是IPv4數據報包頭的校驗和。
源IP位址:
目的IP位址:
[編輯]
高層協議
IP 是TCP/IP參考模型中網路層的核心協議。在IP之上有許多高層協議。重要的如傳輸層協議TCP和UDP,應用層的域名服務協議DNS等。
[編輯]
過去和未來
IPv4從出生到如今,幾乎沒什麼改變的生存了下來。1983年TCP/IP協議被ARPAnet採用,直至發展到後來的網際網路。那時只有幾百台計算機互相聯網。到1989年聯網計算機數量突破10萬台,並且同年出現了1.5Mbit/s的骨幹網。因為IANA把大片的地址空間分配給了一些公司和研究機構,90年代初就有人擔心10年內IP位址空間就會不敷用,並由此導致了IPv6 的開發。
[編輯]
參看
[編輯]
參考文獻
[RFC 791] Internet Protocol.