IP網(wǎng)際協(xié)議概述
IP是Internet Protocol(網(wǎng)際互連協(xié)議)的縮寫,是TCP/IP體系中的網(wǎng)絡(luò)層協(xié)議。設(shè)計(jì)IP的目的是提高網(wǎng)絡(luò)的可擴(kuò)展性:一是解決互聯(lián)網(wǎng)問(wèn)題,實(shí)現(xiàn)大規(guī)模、異構(gòu)網(wǎng)絡(luò)的互聯(lián)互通;二是分割頂層網(wǎng)絡(luò)應(yīng)用和底層網(wǎng)絡(luò)技術(shù)之間的耦合關(guān)系,以利于兩者的獨(dú)立發(fā)展。根據(jù)端到端的設(shè)計(jì)原則,IP只為主機(jī)提供一種無(wú)連接、不可靠的、盡力而為的數(shù)據(jù)包傳輸服務(wù)。
IP是整個(gè)TCP/IP協(xié)議族的核心,也是構(gòu)成互聯(lián)網(wǎng)的基礎(chǔ)。IP位于TCP/IP模型的網(wǎng)絡(luò)層(相當(dāng)于OSI模型的網(wǎng)絡(luò)層),它可以向傳輸層提供各種協(xié)議的信息,例如TCP、UDP等;對(duì)下可將IP信息包放到鏈路層,通過(guò)以太網(wǎng)、令牌環(huán)網(wǎng)絡(luò)等各種技術(shù)來(lái)傳送。為了能適應(yīng)異構(gòu)網(wǎng)絡(luò),IP強(qiáng)調(diào)適應(yīng)性、簡(jiǎn)潔性和可操作性,并在可靠性做了一定的犧牲。IP不保證分組的交付時(shí)限和可靠性,所傳送分組有可能出現(xiàn)丟失、重復(fù)、延遲或亂序等問(wèn)題。
IP主要包含三方面內(nèi)容:IP編址方案、分組封裝格式及分組轉(zhuǎn)發(fā)規(guī)則.IP分組的轉(zhuǎn)發(fā)規(guī)則路由器僅根據(jù)網(wǎng)絡(luò)地址進(jìn)行轉(zhuǎn)發(fā)。當(dāng)IP數(shù)據(jù)包經(jīng)由路由器轉(zhuǎn)發(fā)時(shí),如果目標(biāo)網(wǎng)絡(luò)與本地路由器直接相連,則直接將數(shù)據(jù)包交付給目標(biāo)主機(jī),這稱為直接交付;否則,路由器通過(guò)路由表查找路由信息,并將數(shù)據(jù)包轉(zhuǎn)交給指明的下一跳路由器,這稱為間接交付。路由器在間接交付中,若路由表中有到達(dá)目標(biāo)網(wǎng)絡(luò)的路由,則把數(shù)據(jù)包傳送給路由表指明的下一跳路由器;如果沒有路由,但路由表中有一個(gè)默認(rèn)路由,則把數(shù)據(jù)包傳送給指明的默認(rèn)路由器;如果兩者都沒有,則丟棄數(shù)據(jù)包并報(bào)告錯(cuò)誤。IP分片一個(gè)IP包從源主機(jī)傳輸?shù)侥繕?biāo)主機(jī)可能需要經(jīng)過(guò)多個(gè)不同的物理網(wǎng)絡(luò)。由于各種網(wǎng)絡(luò)的數(shù)據(jù)幀都有一個(gè)最大傳輸單元(MTU)的限制,如以太網(wǎng)幀的MTU是1500;因此,當(dāng)路由器在轉(zhuǎn)發(fā)IP包時(shí),如果數(shù)據(jù)包的大小超過(guò)了出口鏈路的最大傳輸單元時(shí),則會(huì)將該IP分組分解成很多足夠小的片段,以便能夠在目標(biāo)鏈路上進(jìn)行傳輸。這些IP分片重新封裝一個(gè)IP包獨(dú)立傳輸,并在到達(dá)目標(biāo)主機(jī)時(shí)才會(huì)被重組起來(lái)。IP分組結(jié)構(gòu)一個(gè)IP分組由首部和數(shù)據(jù)兩部分組成。首部的前20字節(jié)是所有IP分組必須具有的,也稱固定首部。在首部固定部分的后面是一些可選字段,其長(zhǎng)度是可變的。
IP信息包的分割與重組為了能把一個(gè)IP報(bào)文放在不同的物理幀中,最大IP報(bào)文的長(zhǎng)度就只能等于這條路徑上所有物理網(wǎng)絡(luò)的MTU的最小值。當(dāng)數(shù)據(jù)報(bào)通過(guò)一個(gè)可以傳輸長(zhǎng)度更大的幀的網(wǎng)絡(luò)時(shí),把數(shù)據(jù)報(bào)的大小限制在互聯(lián)網(wǎng)上最小的MTU之下不經(jīng)濟(jì);如果數(shù)據(jù)報(bào)的長(zhǎng)度超過(guò)互聯(lián)網(wǎng)中最小的MTU值的話,則當(dāng)該數(shù)據(jù)報(bào)在穿越該子網(wǎng)時(shí),就無(wú)法被封裝在一個(gè)幀中。
IP協(xié)議在發(fā)送IP報(bào)文時(shí),一般選擇一個(gè)合適的初始長(zhǎng)度。如果這個(gè)報(bào)文要經(jīng)歷的中間物理網(wǎng)絡(luò)的MTU值比IP報(bào)文長(zhǎng)度要小,則IP協(xié)議把這個(gè)報(bào)文的數(shù)據(jù)部分分割成若干個(gè)較小的數(shù)據(jù)片,組成較小的報(bào)文,然后放到物理幀中去發(fā)送。每個(gè)小的報(bào)文稱為一個(gè)分段。分段的動(dòng)作一般在路由器上進(jìn)行。如果路由器從某個(gè)網(wǎng)絡(luò)接口收到了一個(gè)IP報(bào)文,要向另外一個(gè)網(wǎng)絡(luò)轉(zhuǎn)發(fā),而該網(wǎng)絡(luò)的MTU比IP報(bào)文長(zhǎng)度要小,那么就要把該IP報(bào)文分成多個(gè)小IP分段后再分別發(fā)送。重組是分段的逆過(guò)程,把若干個(gè)IP分段重新組合后還原為原來(lái)的IP報(bào)文。在目的端收到一個(gè)IP報(bào)文時(shí),可以根據(jù)其分段偏移和MF標(biāo)志位來(lái)判斷它是否是一個(gè)分段。如果MF位是0,并且分段偏移為0,則表明這是一個(gè)完整的IP數(shù)據(jù)報(bào)。否則,如果分段偏移不為0,或者M(jìn)F標(biāo)志位為1,則表明它是一個(gè)分段。這時(shí)目的地端需要實(shí)行分段重組。IP協(xié)議根據(jù)IP報(bào)文頭中的標(biāo)識(shí)符字段的值來(lái)確定哪些分段屬于同一個(gè)原始報(bào)文,根據(jù)分段偏移來(lái)確定分段在原始報(bào)文中的位置。如果一個(gè)IP數(shù)據(jù)報(bào)的所有分段都正確地到達(dá)目的地,則把它重新組織成一個(gè)完整的報(bào)文后交給上層協(xié)議去處理。