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