複製鏈接
請複製以下鏈接發送給好友

Internet協議

鎖定
Internet協議(Internet Protocol)是一個協議簇的總稱,其本身並不是任何協議。一般有文件傳輸協議、電子郵件協議、超文本傳輸協議、通信協議等。
中文名
Internet協議
外文名
Internet Protocol
基本解釋
一個協議簇的總稱
內    容
文件傳輸協議、電子郵件協議等

Internet協議協議介紹

Internet協議產生原因

IP協議是用於將多個包交換網絡連接起來的,它在源地址和目的地址之前傳送一種稱之為數據包的東
圖1 圖1
西,它還提供對數據大小的重新組裝功能,以適應不同網絡對包大小的要求。如圖1所示。

Internet協議範圍

IP的責任就是把數據從源傳送到目的地。它不負責保證傳送可靠性,流控制,包順序和其它對於主機到主機協議來説很普通的服務。

Internet協議接口

這個協議由主機到主機協議調用,而此協議負責調用本地網絡協議將數據報傳送以下一個網關或目的主機。例如TCP可以調用IP協議,在調用時傳送目的地址和源地址作為參數,IP形成數據報並調用本地網絡(協議)接口傳送數據報。

Internet協議操作

IP實現兩個基本功能:尋址和分段。IP可以根據數據報報頭中包括的目的地址將數據報傳送到目的地址,在此過程中IP負責選擇傳送的道路,這種選擇道路稱為路由功能。如果有些網絡內只能傳送小數據報,IP可以將數據報重新組裝並在報頭域內註明。IP模塊中包括這些基本功能,這些模塊存在於網絡中的每台主機和網關上,而且這些模塊(特別在網關上)有路由選擇和其它服務功能。對IP來説,數據報之間沒有什麼聯繫,對IP不好説什麼連接或邏輯鏈路。
IP使用四個關鍵技術提供服務:服務類型,生存時間,選項和報頭校驗碼。服務類型指希望得到的服務質量。服務類型是一個參數集,這些參數是Internet能夠提供服務的代表。這種服務類型由網關使用,用於在特定的網絡,或是用於下下一個要經過的網絡,或是下一個要對這個數據報進行路由的網關上選擇實際的傳送參數。生存時間是數據報可以生存的時間上限。它由發送者設置,由經過路由的地方處理。如果未到達時生存時間為零,拋棄此數據報。對於控制函數來説選項是重要的,但對於通常的通信來説它沒有存在的必要。選項包括時間戳,安全和特殊路由。報頭校驗碼保證數據的正確傳輸。如果校驗出錯,拋棄整個數據報。
IP不提供可靠的傳輸服務,它不提供端到端的或(路由)結點到(路由)結點的確認,對數據沒有差錯控制,它只使用報頭的校驗碼,它不提供重發和流量控制。如果出錯可以通過ICMP報告,ICMP在IP模塊中實現。

Internet協議內容

文件傳輸協議
FTP協議 FTP協議
文件傳輸協議(File Transfer Protocol,FTP)是一套允許文件在不同的Internet計算機之間進行交換的規則。它與HTTP不同,後者供網頁瀏覽器請求網頁和相關文件以顯示某一頁面,FTP只是用來將文件從一台計算機傳送到另一台。網站開發人員通常使用FTP將網頁從他們自己的計算機傳送到服務器,FTP也常常用來將程序和文件從其他服務器下載到個人計算機。請參閲附錄中的“網頁開發人員參考”之“FTP網頁發佈教程”,瞭解更多關於FTP的信息。
電子郵件協議
POP3工作模式圖 POP3工作模式圖
我們大部分人對電子郵件已經司空見慣,但它的順利運行牽涉到兩台服務器:一台郵件接收服務器和一台郵件發送服務器。當你給別人發送郵件時,使用的是簡單郵件傳輸協議(SMTP);當你接收郵件時,使用的是郵局協議(POP,現在是POP3)和Internet信息存取協議(IMAP)。
超文本傳輸協議
HTTP傳輸模式圖 HTTP傳輸模式圖
超文本傳輸協議HTTP是一組在Web上傳輸文件的規則,例如文本、圖形圖像、聲音、視頻和其他多媒體文件。網頁瀏覽器和網頁服務器通常使用這一協議。當網頁瀏覽器用户以輸入網址或點擊超級鏈接的方式請求一個文件的時候,瀏覽器便建立一個HTTP請求並把它發送到服務器,目標機器上的網頁服務器收到請求後進行必要的處理,再將被請求的文件和相關的媒體文件發送出去,進行應答。
通信協議
一、 通信協議的種類和特點
目前常見的通信協議主要有:NetBEUIIPX/SPXNWLinkTCP/IP,在這幾種協議中用得最多、最為複雜的當然還是TCP/IP協議,最為簡單的是NetBEUI協議,它簡單得不需要任何設置即可成功配置。
1、 NetBEUI協議
NetBEUI協議它的全稱是:NetBIOS Extend User Interface,即用户擴展接口,它是由IBM公司於1985年開發的,它是一種體積小、效率高、速度快的通信協議,同時它也是微軟最為喜愛的一種協議。它主要適用於早期的微軟操作系統如:DOS、LAN Manager、Windows3.x和Windows for Workgroup,但微軟在當今流行的WIN9X和WINNT中仍把它視為固有缺省協議,由此可見它並不是我們所認為是“多餘”的,而且在有的操作系統中連網還是必不可少的,如在用WIN9X和WINME組網進入NT網絡時一定不能僅用TCP/IP協議,還必需加上“NetBEUI”協議,否則就無法實現網絡連通,不信試試看!
因為它的出現比較早,也就有它的侷限性,NetBEUI是專門為幾台到百多機所組成的單段網絡而設計的,它不具有跨網段工作的能力,也就是説它不具有“路由”功能,如果您在一服務器或工作站上安裝了多個網卡作網橋時,將不能使用NetBEUI作為通信協議,這一點必需記清楚!
NetBEUI通信協議的特點就是:a、體積小,因原來就要是DOS、LAN Manger等較低版本的操作系統,故它對系統的要求不高,運行後佔用系統資源最少;b、上面已講過,也恐是因為主要服務的對象較低版本的操作系統,它不具有路由功能,不能實現跨網絡通信;c、因為簡單,對系統要求低,也就適合初學組網人員學習使用。
IPX/SPX協議的全稱為:Internetwork Packet Exchange/Sequences Packet Exchange,網際包交換/順序包交換。它是NOVELL公司為了適應網絡的發展而開發的通信協議,它的體積比較大,但它在複雜環境下有很強的適應性,同時它也具有“路由”功能,能實現多網段間的跨段通信。當用户接入的是NetWare服務器時,IPX/SPX及其兼容協議應是最好的選擇。但如在Windows環境中一般不用它,特別要強調的是在NT網絡和WIN9X對等網中無法直接用IPX/SPX進行通信。
IPX/SPX的工作方式較簡單,不需要任何配置,它可通過“網絡地址”來識別自己的身份。在整個協議中IPX是NetWare最底層的協議,它只負責數據在網絡中的移動,並不保證數據傳輸是否成功,而SPX在協議中負責對整個傳輸的數據進行無差錯處理。在NT中提供了兩個IPX/SPX的兼容協議:NWLink IPX/SPX 兼容協議、NWLink NetBIOS,兩者統稱為NWLink 通信協議。它繼承了IPX/SPX協議的優點,更適應了微軟的操作系統和網絡環境,當需要利用Windows系統進入NetWare服務器時,NWLink通信協議是最好的選擇。
TCP/IP協議的全稱是:Transmission Control Protocol /Internet Protocol,即傳輸控制協議/網際協議。它是微軟公司為了適應不斷髮展的網絡,實現自己主流操作系統與其它系統間不同網絡的互連而收購開發的,它是目前最常用的一種協議(包括INTERNET),也可算是網絡通信協議的一種通信標準協議,同時它也是最複雜、最為龐大的一種協議。TCP/IP協議最早用於UNⅨ系統中,現在是Internet的基礎協議。
TCP/IP通信協議具有很靈活性,支持任意規模的網絡,幾乎可連接所有的服務器和工作站,正因為的靈活性也帶來了它的複雜性,它需要針對不同網絡進行不同設置,且每個節點至少需要一個“IP地址”、一個“子網掩碼”、一個“默認網關”和一個“主機名”。但是在局域網中微軟為了簡化TCP/IP協議的設置,在NT中配置了一個動態主機配置協議(DHCP),它可客户端自動分配一個IP地址,避免了出錯。
TCP/IP通信協議當然也有“路由”功能,它的地址是分級的,不同於IPX/SPX協議,這樣系統就很容易找到網上的用户,IPX/SPX協議用的是一種廣播協議,它經常會出現廣播包堵塞,無法獲得最佳網絡帶寬。但特別要注意的一點就是在用WIN9X和WINME組網進入NT網絡時一定不能僅用TCP/IP協議,還必需加上“NetBEUI”協議,否則就無法實現網絡連通。
二、 協議選擇的原則
我們在選擇網絡通信協議時為了儘量做到一次成功,最好遵循以下原則:
1、 所選擇的協議要與網絡結構、功能一致
如果您的網絡有網橋等類似路由設備,則必需選擇具有路由功能的協議,如IPX/SPX、TCP/IP等,絕對不能選擇NetBEUI作為通信協議。但是您的網絡沒有路由選擇功能,只是單一的網段,能用NetBEUI作為通信協議的儘量選用,因為此協議佔用系統資源最少,運行速度最快,如在DOS下與NT服務器相連,則最好選用NetBEUI作為通信協議,它比TCP/IP協議快且穩定,這一點我是深有體會的。以前我們公司在DOS通常用TCP/IP作為協議,但總是出現死機,有時根本連不上網,但改用`NetBEUI作為通信協議後,系統性能一下得到了提高。要注意的一點是如果用NetBEUI作為通信協議,則在您的NT服務器上同時也要裝上此協議,否則根本行不通!還有就是在WIN9X(包括WINME)要實現與NT服務器成功連網則必需在客户和服務端安裝上`NetBEUI協議,否則可能連不上網,這一點我也做過多次試驗。當然對於較複雜的網絡還是選擇TCP/IP協議好。
2、 儘量選用一種協議
如果可能的話最好只選用一種通信協議,因為每一仲協議都要佔用系統的內存資源的,會影響系統的工作效率的,在絕大多數情況下一種協議是完全可以滿足連網需求的。
3、 保持協議的一致性
當您的網絡要與其它網絡進行通信時,要注意的是兩個網絡在協議的選擇方面儘量一致,因為如果不一致,會導致在通信時互不相認,不過一般現在的通信協議標準中TCP/IP協議為絕大多數協議所接納、兼容,不過安裝TCP/IP協議一般是不會有這種不相認的現象出現的。
謬誤:
由於一些誤導,有很多人誤認為通信協議就是TCP/IP協議,只要安裝了它任何網絡都可正常連通,認為其它協議沒有用,事實上,不同的網絡協議都有其存在的必要。每一協議都有它所依賴的主要操作系統,不能隨便選取。在一個網絡中運行良好的協議,在另一個卻未必能行得通。

Internet協議總覽

Internet協議聯繫

下圖顯示了IP協議在協議體系中的位置。
IP上下有兩個接口,一個是與主機與主機協議的接口,另一個是與本地網絡的接口,本地網絡可以是小型網絡也可以大型網絡,説不定的。

Internet協議操作模式

下面的例子可以看到操作的模型是什麼。我們假設傳輸要經過中間網關。傳送進程調用本地IP模塊傳送數據,同時傳送目的地址和其它參數作為調用參數。IP層準備數據報頭並把它加在需要傳送的數據之前。IP模塊為這個網絡地址決定一個本地網絡地址,在這裏就是網關地址。IP傳送數據報和本地網絡地址到網絡接口。本地網絡接口創建一個本地網絡頭加在數據報上,然後向本地網絡發送。
加上本地網絡頭的數據報到達網關後,本地網絡接口去掉這個頭,將結果傳送給(網關上的)IP模塊。這個IP模塊決定目的主要的本地網絡地址,然後再如上所述的過程傳送數據報到本地網絡接口。這個本地網絡接口創建一個本地網絡頭加在數據報上,將數據報傳送到目的主機。在目的主機上,本地網絡接口去掉數據報上的本地網絡頭,將結果交給IP模塊。IP模塊決定數據報應該把數據報向哪一個應用程序傳送,系統會發出系統調用,IP模塊返回源地址和其它參數。

Internet協議功能描述

IP的功能就是把數據報在互聯的網絡上傳送,通過將數據報在一個個IP模塊間傳送直到目的模塊來達到目的。網絡中每個主機和網關上都有IP模塊。數據報在一個個模塊間通過路由處理網絡地址傳送到目的地址。因此網絡地址對於IP協議十分重要。如前所述,因為各個網絡上的數據報大小可能不同,因此有必要對大的數據報進行分段。
尋址
名字,地址和路由是有區別的,名字是我們要找的,地址指出這個名字在什麼地方,路由解決如何到那裏的問題。IP主要處理地址的問題。把名字和地址進行映射的工作由上層協議完成。IP模塊將地址和本地網絡地址加以映射,而將本地網絡地址和路由進行映射則是低層協議的任務。
地址是32位長,由網絡號和本地地址兩部分構成。地址有三類:A類的最高位為0,後7位表示網絡號,其它的24位表示本地地址;B類前兩位為10,後14位表示網絡地址,其它16位表示本地地址;C類三位為110,後21位是網絡號,其它8位代表本地地址。
在將網絡地址和本地網絡地址進行映射時必須注意,有些主機可能使用幾個不同的IP地址(我們可以把本地網絡地址理解為MAC地址)。我們必須能夠處理一台主機有幾個處理端口,而每個端口都有幾個邏輯的IP地址。
分段
對於不同的網絡,其中傳送的包大小可能不一樣,因此把大包分小的功能是必須的。數據報也可以被標記為“不可分段”,如果一個數據報被如何標記了,那麼在任何情況下都不準對它進行分段。如果不分段到不了目的地,那就把包在半路拋棄了。在本地網內進行的重新分段和重組對IP模塊是不可見的,這種方法也可以使用。
本地網分段和重組把重組的各段加上標記,接收方使用這些標記使不同的段區別開來。段偏移量域告訴接收方應該把這一段放在什麼地方,多段標記指示最後一個段,利用不同的域完全可以重組一個數據報。標記域是用於唯一標記數據報的,它是最初的發送方設置,而且要保證數據報在網絡傳輸的全過程中它中唯一的。最初的發送方把多段標記設置為零,段偏移量設置為零。
我們假設IP模塊把一個大數據報分為兩個小的,IP模塊首先取得數據報頭,再分隔數據為兩份,將數據報頭加在兩份數據上。分隔數據時以8個字節為單位,第二段不一定是8個字節,但第一個必須是。我們把第一段中的8位字節數稱為段塊數(NFB)。新生成的第一個數據報內是生成的第一段數據,設置多段標記為1;新生成的第二個數據報內是生成的第二段數據,多段標記等於原來數據報內的值,段偏移量等於原數據報中的值加上NFB。上述過程可以從2擴展至N的情況。
對段的重組要求以下四個域有相同的值:標記,源地址,目標地址和協議。將不同的數據報根據自己帶的偏移量重新組合為新段,第一個段的偏移量為0,最後一個段的多段標記為0。

Internet協議網關

網關在不同網絡間傳送數據報,網關也實現網關到網關協議(GGP),它用於傳送路由和其它控制信息。網關中的高層協議根本不用實現,GGP的功能可以在IP模塊內實現。

Internet協議説明

Internet包頭格式
包頭格式如下:
版本:4位
此域標明包頭的格式。我們以IP版本4為例。
IHL:4位
Internet包頭長度是以32位為單位標記的包頭長度,它指向數據的開始位置,這個域的最小合法值為5。
服務類型:8位
它是一些指示服務質量的參數,這些參數用於在特定網絡指示所需要的服務。有些網絡會提供優先級服務。選擇的基本原則是以下三者的權衡:低延時,高可靠和高吞吐量。
0-2 優先級
3 0 = 通常延時 1 = 低延時
4 0 = 通常吞吐量 1 = 高吞吐量
5 0 = 通常可靠性 1 = 高可靠性
6-7 保留
優先級的説明如下:
111 - Network Control
110 - Internetwork Control
101 - CRITICECP
100 - Flash Override
011 - Flash
010 - Immediate
001 - Priority
000 - Routine
如果使用了延時(D),吞吐量(T)和可靠性(R)選項可以增加服務質量。這因各個網絡不同而不同,沒有通用性。除了非常特殊的情況外,最多設置兩個參數就夠了。服務類型是用來指示如何對待在網絡中傳送的數據報。網絡控制優先級原來是用於一個網絡中的,而實際中卻應用於每個網絡了。互聯控制是用於網關控制的。如果只在一個網絡中實現了這些參數,那個網絡必須在自己的範圍之內控制對它們的訪問。
總長度:16位
總長度指的是數據報的長度,由字節計,包括數據和報頭。允許數據報的大小為64K。這麼大的數據報對大多數主機和網絡來説是不適用的。但是,所有主機必須能夠接收大於576字節的數據報,無論它們是一起來,還是分段來。如果知道對方主機能夠接收大於576字節的數據報,最好在發送時不要發送小於576字節的數據報。選擇576是因為576=512(數據)+64(報頭)。報頭最長不超過60字節,通常為20字節。
標識:16位
標記是發送用於幫助重組分段的包的。
標記:3位
0 保留,必須為0
1 (DF) 0 = 可分段,1 = 不可分段
Bit 2 (MF) 0 = 最後一段,1 = 還有多段
0
1
2
0
D
F
M
F
段偏移:13位
此域指示這個段在應該在數據報中什麼位置,它以64位為單位計算,首段的偏移為零。
生存期:8位
此域説明數據報在互聯網系統生存的最大時間。如果此域的值為零,拋棄此數據報。在處理報頭的同時也處理此域。時間以秒計,但每個處理單元都至少會對TTL減一,即使時間小於一秒。
協議:8位
此域指示用於數據報數據部分的下一層協議。
頭校驗碼:16位
校驗碼只在頭部,因此頭域會在處理時改變,因此頭會經常改變。這種校驗方法比較容易計算,實驗證明它也是適用的,但它可能在未來被CRC校驗過程取代。
源地址和目的地址:32位,具體情況請看下文。
選項:長度不定
在數據報中可以有選項也可以沒有,但IP模塊中必須有處理選項的功能。有些情況下,安全選項是必須的。它的長度不定,可以沒有也可以是多個。選項有兩種格式:
1 單獨一個選項類型字節
2 一個選項類型字節,一個選項長度字節和實際選項數據字節
選項長度是選項類型,長度本身和數據的長度。選項類型可被看作有3個域:
1位 複製標記
2位 選項類
5位 選項號
複製標記指這個選項要在分段是要存在於所有段中。
0 = 不復制
1 = 複製
選項類有:
0 = 控制
1 = 保留
2 = 調度和測量
3 = 保留
下面是具體選項:
CLASS
NUMBER
LENGTH
DESCRIPTION
0
0
-
選項表結束。只佔一個字節,沒有長度字節
0
1
-
無操作。只佔一個字節,沒有長度字節
0
2
11
安全,用於傳送安全,Compartmentation,用户組(TCC)和DOD規則兼容的處理限制碼
0
3
變長
松源地址路由,使用源地址提供的信息進行路由
0
9
變長
緊源地址路由,使用源地址提供的信息進行路由
0
7
變長
記錄路由,用於跟蹤數據報採用的路由
0
8
4
流ID,用於傳送流標記
2
4
變長
Internet時間戳
特定選項定義
選項表結束
+--------+
00000000
+--------+
Type=0
此選項指示選項表的結束,它不一定和報頭結束點一致,它用於指示選項表的結束而不是每個選項的結束,只有當選項表結束位置和報頭結束位置不一致時使用。它可以被複制,引入或在分段時刪除。
無操作
+--------+
00000001
+--------+
Type=1
此選項可被用於選項間,它可以被複制,引入或在分段時刪除。
安全
此選項提供主機一種發送安全,compartmentation,處理限制和TCC參數的方法。此選項的格式如下:
類型=130 長度=11
安全(S域):16位
安全共分16級,8級保留。
00000000 00000000 - 未分類的
11110001 00110101 - 機密
01111000 10011010 - EFTO
10111100 01001101 - MMMM
01011110 00100110 - PROG
10101111 00010011 - 限制的
11010111 10001000 - 秘密
01101011 11000101 - 絕對機密
00110101 11100010 - 保留
10011010 11110001 - 保留
01001101 01111000 - 保留
00100100 10111101 - 保留
00010011 01011110 - 保留
10001001 10101111 - 保留
11000100 11010110 - 保留
11100010 01101011 - 保留
Compartments(C域):16位
全0代表傳送的信息是非compartment的。
處理限制(H域):16位
控制值和版本標記是由字母和數字組成的,具體説明請參閲其它資料。
傳輸控制碼(TCC域):24位
提供控制流量的方法。TCC的值為三字母詞,在HQ DCA Code 530中有説明。在分段時必須複製它。
松源地址和記錄路由
+--------+--------+--------+-----------------+
10000011 length pointer route data
+--------+--------+--------+-----------------+
Type=131
松源地址和記錄路由(LSRR)可以由源地址提供路由信息,並記錄路由信息。這個選項以選項類型碼開始。第二位是選項長度,第三位是一個指針,指向路由數據中下一個要被處理的源地址,它的最小值為4。路由數據是由一系列地址組成的,每個地址是32位。如果指針大於長度,源路由為空(記錄的路由滿),路由要根據目的地址域進行。
如果目的地址已經達到,而指針未大於長度,源路由中的下一地址代替目的地址域中的地址,同時記錄的路由地址代替則使用過的源地址,將指針加4。這一以記錄的路由替換源路由的過程意味着選項(和IP頭一起作為一個整體)數據報在網絡中經過處理後保持一個固定長度。它稱之為松源地址路由是因為網關或主機IP在達到路由的下一個地址時可以使用多箇中間網關。它在分段時必須複製。
緊源地址和記錄路由
+--------+--------+--------+-----------------+
10001001 length pointer route data
+--------+--------+--------+-----------------+
Type=137
緊源地址和記錄路由(SSRR)選項可以由源地址提供路由信息,並記錄路由信息。這個選項以選項類型碼開始。第二位是選項長度,第三位是一個指針,指向路由數據中下一個要被處理的源地址,它的最小值為4。路由數據是由一系列地址組成的,每個地址是32位。如果指針大於長度,源路由為空(記錄的路由滿),路由要根據目的地址域進行。
如果目的地址已經達到,而指針未大於長度,源路由中的下一地址代替目的地址域中的地址,同時記錄的路由地址代替則使用過的源地址,將指針加4。這一以記錄的路由替換源路由的過程意味着選項(和IP頭一起作為一個整體)數據報在網絡中經過處理後保持一個固定長度。它稱之為緊源地址路由是因為網關或主機IP在達到路由的下一個地址時不可以使用中間網關。它在分段時必須複製。
記錄路由
+--------+--------+--------+-----------------+
00000111 length pointer route data
+--------+--------+--------+-----------------+
Type=7
此選項提供了記錄數據報路由的方法。這個選項以選項類型碼開始。第二位是選項長度,第三位是一個指針,指向路由數據中下一個要被處理的源地址,它的最小值為4。記錄的路由是由一系列IP地址構成的,每個IP地址是32位。如果指針大於長度,記錄路由數據域已滿。源主機必須為這一選項分配足夠大的空間。空間分定後不會因為加入地址而增加。初始內容必須為0。
當IP模塊處理數據報時,它檢查是否有記錄路由選項,如果有,它將自己的IP地址放入記錄路由地址空間,指針值加4。如果地址空間已滿,模塊不會把自己的IP地址加入了;如果空間未滿,可是不夠整個地址加入,模塊會認為源數據報出錯並拋棄它。上面兩種情況下,ICMP參數信息消息會發送到源主機。在分段時不復制,而僅僅存在於第一個段。
流標記
10001000
00000010
流ID
類型=136 長度=4
此選項提供一種在不支持流的網絡中傳送16位SATNET流標記的方法。分段時必須複製。
Internet時間戳
01000100
長度
指針
oflw標記
IP地址
時間戳
......
類型=68
選項長度是在選項內的類型,長度,指針和溢出標記字節的大小。指針是從選項開始到時間戳結束的字節數加一。最小值為5。當指針大於長度時時間戳域滿。溢出(oflw)(大小為4位)是IP模塊號,這個模塊因缺省空間而不能註冊時間戳。它的值分別為:
0 -- 僅有時間戳,保存於連續的32位字中;
1 -- 每個時間戳前都有註冊單元的IP地址;
3 -- IP地址域是預先指定的,如果IP模塊的地址和下一個指定的IP地址一致,則註冊自己的時間戳。
時間戳是從UT午夜時間開始以毫秒計算的,如果時間不以毫秒計算,或不能提供以UT午夜為基準,那用什麼時間倒都可以,只要時間戳的最高位設置為1,表示這不是一個標準值就行了。源主機必須為這一選項分配足夠大的空間。空間分定後不會因為加入地址而增加。初值必須為零或IP地址零這樣的偶對。如果空間已滿,模塊在傳送數據報時不加入時間戳,但溢出計數仍然加一。
如果剩餘的空間不能使完全的時間戳加入,或溢出計數溢出,源數據報出錯並被拋棄。ICMP參數信息消息會發送到源主機。此選項在分段時不復制,僅在第一段出現。
填充:變長
報頭域填充用於保證報頭是32位的倍數。填充值為0。
討論
協議的實現必須健壯,每個實現都要保證與其它人的實現兼容。通常一個實現在發送時應該遵守比較保守的策略,在接收時大可不必保守。也就是説,發送構成良好的包,接收自己能夠解釋的包(有些錯誤也是將就着了)。
基本的Interent服務是面向數據報的,在網關處可以提供以數據報的分段和在目的主機的重組服務。當然,在一個網絡內或在因遵守私下的協議而在一個網絡的網關間進行分段和重組也是可以的,因為這對IP協議和高層協議是透明的。這種透明的分段稱為基於網絡的分段,這裏不做討論。IP地址是在主機一級區別源地址和目的地址的。
尋址
為了可以對網絡大小進行靈活的控制,IP地址提供了幾類地址,一類是可以容納比較多主機的網絡,一種容納的主機數就比較少,我們大家聽説過的什麼A類,B類地址,C類地址就是為了用於不同規模的網絡而提出的。下面是一些地址格式:
最高位
格式
0
7位網絡用,24位主機用
a
10
14位網絡用,16位主機用
b
110
21位網絡用,8位主機用
c
111
擴充地址模式
如果網絡域為零意味着本網絡,這種方式僅在於特定的ICMP消息中使用;擴展的地址模型未定義。
由本地網絡指定的本地地址必須考慮到單個的主機可以作為不同的網絡主機使用。也就是説,必須在網絡主機地址和網絡主機接口之間進行映射,這種接口允許幾個IP地址對應一個接口。同時還應該考慮到一台主機有多個處理接口,對於從不同接收收到的信息應該看做是來自同一個IP地址的。
分段和重組
Internet標記域(ID)和源地址,目的地址和協議域一起用於確認數據報分段和重組。如果數據報不是最後一段,則設置多段標記位(MF)。段偏移域標記段位置,它是相對於未分段時的數據報而言的。段以8個字節為單位,這樣的分段策略使未分段的數據報有全零的分段信息(MF = 0,段偏移= 0)。如果進行分段,邊界必須是8個字節的倍數。這種格式允許2的13次方(8192)個8字節段,一個數據報的最大長度剛好和長度域標明的數據64K一致。在分段時,有些選項被複制,有些則不。
每個IP模塊必須能夠不分段地傳送68字節的數據報。這因為IP包頭會達到60字節,而最小數據段長為8,68=60+8;而它也必須能夠接收576字節的數據,不論這數據是未分段的還是分段的。
會被分段影響的域包括:
⑴ 選項域
⑵ 多段標記
⑶ 段偏移
⑷ Internet包頭長度域
⑸ 總長度域
⑹ 包頭校驗碼
如果設置了不分段標記(DF),則不可進行分段,即使數據報會因此而被拋棄。如果接收主機不能進行重組時則需要設置此位。我們在進行無盤引導時,則需要設置這一位。下面通過例子説明這一過程。其中#代表不等於,X到Y指的是包括X,而不包括Y的所有數據。
能夠在下一個網絡傳送的最大數據報稱為最大傳輸單元(MTU)。如果數據報的長度小於等於MTU,進行下一步;否則分為兩段,第一段的大小等於MTU,第二段就是剩餘的長度,將第一段傳送,如果第二段仍然大於MTU,則重複分段過程,直到可以發送為止。下面我們給出一個定義:
FO - 段偏移
IHL - Internet包頭長度
DF - 不分段標記
MF - 多段標記
TL - 總長度
OFO - 原段偏移
OIHL - 原Internet包頭長度
OMF - 原多段標記
OTL - 原總長度
NFB - 段數
MTU - 最大傳輸單元
過程:
IF TL = MTU THEN 將此數據報提交給下一處理階段
ELSE IF DF = 1 THEN 拋棄數據報
ELSE 產生第一段:
⑴ 複製源internet包頭;
⑵ OIHL - IHL;OTL - TL;OFO - FO;OMF - MF;
⑶ NFB - (MTU-IHL4)8;
⑷ 附加第一個NFB8個數據字節;
⑸ 校正包頭:MF - 1;TL - (IHL4)+(NFB8);重新計算校驗碼;
⑹ 提交數據段到下一個數據報處理階段;
如果要產生第二個段:
⑺ 有選擇地複製internet頭;
⑻ 附加剩餘數據;
⑼ 校正包頭:IHL - (((OIHL4)-(未複製的選項長度))+3)4;
TL - OTL - NFB8 - (OIHL-IHL)4);
FO - OFO + NFB;MF - OMF;重新計算校驗碼;
⑽ 將此段提交分段檢測;結束。
上例中除了最後一段外,其它段都達到了MTU的大小,各種實現不同,只要能夠得到的段小於等於MTU就可以了。
重組過程例子
對於每個數據報,緩衝區標記是由源地址,目的地址,協議和標記域一起確認的。如果數據報未分段,那就不需要進行重組,處理進行下一階段。重組需要的數據結構有:數據緩衝區,包頭緩衝區,段塊位表,數據長度域和計數器。段中的數據根據段偏移和長度放在相應位置,段塊標準表中的相應位根據接收的段塊被設置。
如果是第一段(段偏移為0),將包頭放於包頭緩衝區;如果是最後一段(多段標記為0),計算數據總長度。如果接收完了整個數據報,進行下一處理階段;如果沒有接收完,設置計數器值為當前計數器和此段中保存的生存時間之間比較在的一個,重組函數放棄控制權。如果超時釋放所有緩衝區。計數器的初值是重組等待時間的下限。因為如果到達段中的生存時間大於計數器當前值等待時間增加,如果小於則不會減少。計數器的最大時間可以達到最大生存時間(大約為4.25分)。如果設置為15秒可能比較好,當然隨着實踐,這個值可能會有更改。這個值的選擇和緩衝區的大小和傳輸媒介有關,傳輸速度乘於計數器值等於緩衝區大小。
定義:
FO - 段偏移
IHL - Internet包頭長度
MF - 多段標記
TTL - 生存時間
NFB - 段塊數
TL - 總長度
TDL - 總數據長度
BUFID - 緩衝區標記
RCVBT - 段接收位表
TLB - 計數器下限
過程:
如果到達的數據段中的數據有部分或全部相同,上面的過程會使用數據的最新版本。
標記
標記是為了對特定數據報的段提供唯一的標記。如果數據報擁有相同的源地址,目的地址,協議和標記,IP模塊會把他們認定是同一數據報。選擇的任何由發送方擔任。發送協議模塊需要保持一個標記表,每個目的地址保持一個表項。然而,因此標記域允許65536個不同的值,有些主機能夠不考慮目的地仍然可以達到標記唯一的目的。高層協議也可以使用標記。
服務類型
服務類型(TOS)是網絡服務質量的選擇。服務類型是由抽象參數確定的優先級,時延,吞吐量和可靠性的結合物。這些參數和一些實際對應的網絡服務對應。對於什麼是時延,什麼是吞吐量之類的定義這裏就不多説了。
生存時間
生存時間由發送者設置,是數據報在網絡中最長的生存時間,如果超時會拋棄數據報。網絡中每個結點都會處理存在於包頭中的生存時間。此域的最少減少量為1,單位是秒。因此,最長的生存時間為255秒。每個處理模塊必須對TTL減1,即使所使用的時間少於一秒也是如此。高層可靠連接協議是基於原重複數據報將不會在特定時間後到達,TTL是為了滿足這樣假設而存在。
選項
選項中數據報中是可選的,但在實現中必須有的。有沒有選項是發送者説了算,每個IP模塊必須能夠分析每個選項,每個選項域有多個選項。選項可能沒有達到32位的邊界,不足的以零填充以達到32位的倍數。
校驗碼
如果包頭髮生改變必須重新計算包頭校驗碼,校驗碼可以在一定程度上杜絕傳輸錯誤。有些應用程序允許數據報中的數據出錯,如果IP強調數據正確性,類似的應用程序也就用不成了。
錯誤
IP協議錯誤可由ICMP協議報告。
接口
接口的描述是功能性的,這個描述的具體實現機制會因為操作系統的不同而不同。不同的IP實現會有不同的用户接口。但是起碼的子集是所有實現必須支持的。本節將描述這個基本子集。IP協議有上下有兩個接口,一個是面向本地網絡的,另一個是面向高層協議或應用程序的,我們稱後一個接口為用户。雖然IP協議是數據報協議,所以用於保存狀態的資源(內存)很少。
下面是一個高層接口範例:
SEND (src,dst,prot,TOS,TTL,BufPTR,len,Id,DF,opt = result)
上式中:
src = 源地址
dst = 目的地址
prot = 協議
TOS = 服務類型
TTL = 生存時間
BufPTR = 緩衝區指針
len = 緩衝區長度
Id = 標記
DF = 不分段
opt = 選項數據
result = 響應,響應分為OK和Error兩種;
OK = 發送成功
Error = 參數錯誤或本地網絡錯誤
優先級和安全性參數在選項中傳送。
RECV (BufPTR,prot,= result,src,dst,TOS,len,opt)
上式中:
BufPTR = 緩衝區指針
prot = 協議
result = 響應,響應分為OK和Error兩種;
OK = 發送成功
Error = 參數錯誤
len = 緩衝區長度
src = 源地址
dst = 目標地址
TOS = 服務類型
opt = 選項數據
當用户發送數據報時,他執行SEND命令。IP模塊在收到調用時,檢查傳送來的參數並準備發送數據。如果參數合法而且本地網絡正常接收數據,返回成功。如果參數不合法,或本地網絡未接收數據,返回不成功。在未成功時會返回報告,報告內容會因實現不同而不同。
當數據報到達IP模塊時,要麼有一個RECV調用要麼沒有。如果有這個調用會傳送信息給用户;如果沒有,通知用户信息到達。如果沒有找到應該通知的用户,返回ICMP錯誤,拋棄數據。通知用户可以通過假中斷或類似的機制,這視操作系統不同而不同。源地址包括在發送調用中,IP模塊可以檢查源地址是否是一個合法地址。