IP網(wǎng)絡(luò)協(xié)議
IP是Internet Protocol(網(wǎng)際互連協(xié)議)的縮寫(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ī),這稱(chēng)為直接交付;否則,路由器通過(guò)路由表查找路由信息,并將數(shù)據(jù)包轉(zhuǎn)交給指明的下一跳路由器,這稱(chēng)為間接交付。路由器在間接交付中,若路由表中有到達(dá)目標(biāo)網(wǎng)絡(luò)的路由,則把數(shù)據(jù)包傳送給路由表指明的下一跳路由器;如果沒(méi)有路由,但路由表中有一個(gè)默認(rèn)路由,則把數(shù)據(jù)包傳送給指明的默認(rèn)路由器;如果兩者都沒(méi)有,則丟棄數(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分組必須具有的,也稱(chēng)固定首部。在首部固定部分的后面是一些可選字段,其長(zhǎng)度是可變的。
IP所提供的服務(wù)大致可歸納為兩類(lèi): ●IP信息包的傳送?!馡P信息包的分割與重組。IP信息包傳送IP是網(wǎng)絡(luò)之間信息傳送的協(xié)議,可將IP信息包從源設(shè)備(例如用戶的計(jì)算機(jī))傳送到目的設(shè)備(例如某部門(mén)的www服務(wù)器)。為了達(dá)到這樣的目的,IP必須依賴(lài)IP地址與IP路由器兩種機(jī)制來(lái)實(shí)現(xiàn)。 [2] IP地址IP規(guī)定網(wǎng)絡(luò)上所有的設(shè)備都必須有一個(gè)獨(dú)一無(wú)二的IP地址,就好比是郵件上都必須注明收件人地址,郵遞員才能將郵件送到。同理,每個(gè)IP信息包都必須包含有目的設(shè)備的IP地址,信息包才可以正確地送到目的地。同一設(shè)備不可以擁有多個(gè)IP地址,所有使用IP的網(wǎng)絡(luò)設(shè)備至少有一個(gè)唯一的IP地址。IP路由互聯(lián)網(wǎng)是由許多個(gè)網(wǎng)絡(luò)連接所形成的大型網(wǎng)絡(luò)。如果要在互聯(lián)網(wǎng)中傳送IP信息包,除了確保網(wǎng)絡(luò)上每個(gè)設(shè)備都有一個(gè)唯一的IP地址之外,網(wǎng)絡(luò)之間還必須有傳送的機(jī)制,才能將IP信息包通過(guò)一個(gè)個(gè)的網(wǎng)絡(luò)傳送到目的地。此種傳送機(jī)制稱(chēng)為IP路由。各個(gè)網(wǎng)絡(luò)通過(guò)路由器相互連接。路由器的功能是為IP信息包選擇傳送的路徑。換言之,必須依靠沿途各路由器的通力合作,才能將IP信息包送到目的地。在IP路由的過(guò)程中,由路由器負(fù)責(zé)選擇路徑,IP信息包則是被傳送的對(duì)象。
IP地址與IP路由是IP信息包傳送的基礎(chǔ)。此外,IP信息包傳送時(shí)還有一項(xiàng)很重要的特性,即使用非連接式的傳送方式。非連接式的傳送方式是指IP信息包傳送時(shí),源設(shè)備與目的設(shè)備雙方不必事先連接,即可將IP信息包送達(dá)。即源設(shè)備完全不用理會(huì)目的設(shè)備,而只是單純地將IP信息包逐一送出。至于目的設(shè)備是否收到每個(gè)信息包、是否收到正確的信息包等,則由上層的協(xié)議(例如TCP)來(lái)負(fù)責(zé)檢查。 [2] 使用非連接式的優(yōu)點(diǎn)是過(guò)程簡(jiǎn)單化,可提高傳輸?shù)男?。此外,由于IP信息包必須通過(guò)IP路由的機(jī)制,在一個(gè)個(gè)路由器之間傳遞,非連接式的傳送方式較易在此種機(jī)制中運(yùn)行。 [2] 相對(duì)于非連接式的傳送方式,也有連接式的傳送方式,也就是源與目的設(shè)備雙方必須先建立連接,才能進(jìn)一步傳輸數(shù)據(jù),TCP就是使用連接式的傳送方式。 [2] 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è)幀中。 [2] 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)文稱(chēng)為一個(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ā)送。 [2] 重組是分段的逆過(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é)議去處理。 [2] 總結(jié)如下:IP信息包在傳送過(guò)程中,可能會(huì)經(jīng)過(guò)許多個(gè)使用不同技術(shù)的網(wǎng)絡(luò)。假設(shè)IP信息包是從ATM網(wǎng)絡(luò)所發(fā)出,原始長(zhǎng)度為9180B,如果IP路由途中經(jīng)過(guò)以太網(wǎng)絡(luò),便面臨信息包太大,無(wú)法在以太網(wǎng)絡(luò)上傳輸?shù)恼系K。為了解決此問(wèn)題,路由器必須有IP信息包分割與重組的機(jī)制,將過(guò)長(zhǎng)的信息包進(jìn)行分割,以便能在最大傳輸單位較小的網(wǎng)絡(luò)上傳輸。分割后的IP信息包,由目的設(shè)備接收后重組,恢復(fù)成原來(lái)IP信息包。