Internet協議

TTMMJJ99發表於2017-11-10

Internet協議

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

介紹

編輯

產生原因

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

範圍

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

介面

這個協議由主機到主機協議呼叫,而此協議負責呼叫本地網路協議將資料包傳送以下一個閘道器或目的主機。例如TCP可以呼叫IP協議,在呼叫時傳送目的地址和源地址作為引數,IP形成資料包並呼叫本地網路(協議)介面傳送資料包。

操作

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

內容

編輯

檔案傳輸協議

檔案傳輸協議(File Transfer Protocol,FTP)是一套允許檔案在不同的Internet計算機之間進行交換的規則。它與HTTP不同,後者供網頁瀏覽器請求網頁和相關檔案以顯示某一頁面,FTP只是用來將檔案
FTP協議FTP協議
從一臺計算機傳送到另一臺。網站開發人員通常使用FTP將網頁從他們自己的計算機傳送到伺服器,FTP也常常用來將程式和檔案從其他伺服器下載到個人計算機。請參閱附錄中的“網頁開發人員參考”之“FTP網頁釋出教程”,瞭解更多關於FTP的資訊。

電子郵件協議

我們大部分人對電子郵件已經司空見慣,但它的順利執行牽涉到兩臺伺服器:一臺郵件接
POP3工作模式圖POP3工作模式圖
收伺服器和一臺郵件傳送伺服器。當你給別人傳送郵件時,使用的是簡單郵件傳輸協議(SMTP);當你接收郵件時,使用的是郵局協議(POP,現在是POP3)和Internet資訊存取協議(IMAP)。

超文字傳輸協議

超文字傳輸協議HTTP是一組在Web上傳輸檔案的規則,例如文字、圖形影像、聲音、視訊和
HTTP傳輸模式圖HTTP傳輸模式圖
其他多媒體檔案。網頁瀏覽器和網頁伺服器通常使用這一協議。當網頁瀏覽器使用者以輸入網址或點選超級連結的方式請求一個檔案的時候,瀏覽器便建立一個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通訊協議是最好的選擇。
3、 TCP/IP協議
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協議,只要安裝了它任何網路都可正常連通,認為其它協議沒有用,事實上,不同的網路協議都有其存在的必要。每一協議都有它所依賴的主要作業系統,不能隨便選取。在一個網路中執行良好的協議,在另一個卻未必能行得通。

總覽

編輯

聯絡

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

操作模式

下面的例子可以看到操作的模型是什麼。我們假設傳輸要經過中間閘道器。傳送程式呼叫本地IP模組傳送資料,同時傳送目的地址和其它引數作為呼叫引數。IP層準備資料包頭並把它加在需要傳送的資料之前。IP模組為這個網路地址決定一個本地網路地址,在這裡就是閘道器地址。IP傳送資料包和本地網路地址到網路介面。本地網路介面建立一個本地網路頭加在資料包上,然後向本地網路傳送。
加上本地網路頭的資料包到達閘道器後,本地網路介面去掉這個頭,將結果傳送給(閘道器上的)IP模組。這個IP模組決定目的主要的本地網路地址,然後再如上所述的過程傳送資料包到本地網路介面。這個本地網路介面建立一個本地網路頭加在資料包上,將資料包傳送到目的主機。在目的主機上,本地網路介面去掉資料包上的本地網路頭,將結果交給IP模組。IP模組決定資料包應該把資料包向哪一個應用程式傳送,系統會發出系統呼叫,IP模組返回源地址和其它引數。

功能描述

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。

閘道器

閘道器在不同網路間傳送資料包,閘道器也實現閘道器到閘道器協議(GGP),它用於傳送路由和其它控制資訊。閘道器中的高層協議根本不用實現,GGP的功能可以在IP模組內實現。

說明

編輯

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模組可以檢查源地址是否是一個合法地址。

相關文章