internet和ethernet的區別「enternet是什麼」

1.引言

1.1、動機

Internet協議旨在用於數據包交換計算機通信網絡的互連繫統中。這樣的系統被稱為“catenet”。 互聯網協議提供了從源向目的地傳輸稱為數據包的數據塊的功能,其中源和目的地是由固定長度地址標識的主機。互聯網協議還提供了長數據包的分段和重組(如果需要),以便通過“小數據包”網絡進行傳輸。

1.2、範圍

互聯網協議的範圍受到特定限制,以提供必要的功能,以通過互連的網絡系統將比特包(互聯網數據包)從源傳遞到目的地。沒有任何機制可以增強端到端數據的可靠性,流控制,排序或主機到主機協議中常見的其他服務。互聯網協議可以利用其支持網絡的服務來提供各種類型和質量的服務。

1.3、接口

Internet環境中的主機到主機協議調用此協議。該協議要求使用本地網絡協議將Internet數據包傳送到下一個網關或目標主機。

例如,TCP模塊將調用Internet模塊,以將TCP段(包括TCP標頭和用戶數據)作為Internet數據包的數據部分。 TCP模塊會將Internet標頭中的地址和其他參數提供給Internet模塊,作為調用的參數。然後,互聯網模塊將創建一個互聯網數據包,並在本地網絡接口上調用以傳輸互聯網數據包。

例如,在ARPANET情況下,Internet模塊將調用本地網絡模塊,該模塊會將1822前導添加到Internet數據包中,從而創建ARPANET消息以傳輸到IMP。 ARPANET地址將通過本地網絡接口從Internet地址派生而來,並且將是ARPANET中某些主機的地址,該主機可能是通向其他網絡的網關。

1.4、操作

互聯網協議實現了兩個基本功能:尋址和分段。

Internet模塊使用Internet標頭中攜帶的地址向其目的地傳輸Internet數據包。選擇傳輸路徑稱為路由。

Internet模塊在需要通過“小數據包”網絡傳輸時使用Internet標頭中的字段來分段和重組Internet數據包。

操作模型是Internet模塊駐留在每個從事Internet通信的主機和每個互連網絡的網關中。這些模塊共享用於解釋地址字段以及分段和組裝Internet數據包的通用規則。此外,這些模塊(尤其是在網關中)具有用於制定路由決策和其他功能的過程。

Internet協議將每個Internet數據包視為與任何其他Internet數據包無關的獨立實體。沒有連接或邏輯電路(虛擬或其他)。

Internet協議在提供服務時使用四個關鍵機制:服務類型,生存時間,選項和標頭校驗和。

服務類型用於指示所需服務的質量。服務類型是一組抽象或通用的參數,這些參數表徵了組成Internet的網絡中提供的服務選擇。網關將使用這種類型的服務指示來選擇特定網絡,用於下一跳的網絡或路由互聯網數據包時的下一個網關的實際傳輸參數。

生存時間是Internet數據包生命周期上限的指示。它由數據包的發送方設置,並在處理數據的路徑上的點處進行縮減。如果生存時間在Internet數據包到達其目的地之前達到零,則將破壞Internet數據包。生存時間可以視為自我毀滅的時限。

這些選件提供了某些情況下所需或有用的控制功能,但對於最常見的通訊來說則是不必要的。這些選項包括時間戳,安全性和特殊路由的規定。

標頭校驗和提供了驗證,用於處理Internet數據包的信息已正確傳輸。數據可能包含錯誤。如果報頭校驗和失敗,則檢測到錯誤的實體會立即丟棄Internet數據包。

Internet協議不提供可靠的通信工具。端到端或逐跳都沒有確認。沒有數據錯誤控制,只有標頭校驗和。沒有重傳。沒有流量控制。

可以通過Internet協議模塊中實現的Internet控制消息協議(ICMP)報告檢測到的錯誤。

2.概述

2.1、與其他協議的關係

下圖說明了Internet協議在協議層次結構中的位置:

RFC791:INTERNET PROTOCOL網絡協議

圖1、協議關係

Internet協議一方面與較高級別的主機到主機協議接口,另一方面與本地網絡協議接口。在這種情況下,“本地網絡”可以是建築物中的小型網絡,也可以是諸如ARPANET之類的大型網絡。

2.2、運作模式

以下情形說明了將數據包從一個應用程序傳輸到另一個應用程序的操作模型:

我們假設這種傳輸將涉及一個中間網關。發送應用程序準備其數據,並在其本地Internet模塊上進行調用,以將該數據作為數據包發送,並傳遞目標地址和其他參數作為調用的參數。

Internet模塊準備一個數據包頭並將數據附加到它。 Internet模塊為此Internet地址確定一個本地網絡地址,在這種情況下,它是網關的地址。它將此數據包和本地網絡地址發送到本地網絡接口。本地網絡接口創建一個本地網絡頭,並向其附加數據包,然後通過本地網絡發送結果。

數據包到達報文在本地網絡頭中的網關主機,本地網絡接口剝離該頭,然後將數據包上交到Internet模塊。因特網模塊從因特網地址確定數據包將被轉發到第二網絡中的另一主機。 Internet模塊確定目標主機的本地網絡地址。它在該網絡的本地網絡接口上調用以發送數據包。

該本地網絡接口創建一個本地網絡頭並將數據包附加到將結果發送到目標主機的數據包。

在此目標主機上,數據包被本地網絡接口從本地網絡頭中剝離,並傳遞到Internet模塊。

Internet模塊確定該數據包用於該主機中的應用程序。它響應系統調用將數據傳遞到應用程序,並將源地址和其他參數作為調用的結果傳遞。

RFC791:INTERNET PROTOCOL網絡協議

圖2、轉發路徑

2.3、功能說明

Internet協議的功能或目的是通過一組互連的網絡移動數據包。這是通過將數據包從一個Internet模塊傳遞到另一個Internet模塊直到到達目的地來完成的。 Internet模塊位於Internet系統中的主機和網關中。數據包基於互聯網地址的解釋,通過各個網絡從一個互聯網模塊路由到另一個互聯網模塊。因此,互聯網協議的一種重要機制是互聯網地址。

在將消息從一個Internet模塊路由到另一個Internet模塊時,數據包可能需要遍歷最大數據包大小小於數據包大小的網絡。為了克服這個困難,在互聯網協議中提供了分段機制。

編址

名稱,地址和路由之間有區別。名稱表示我們要尋找的東西。地址指示其位置。一條路線指示如何到達那裡。互聯網協議主要處理地址。較高級別(即主機到主機或應用程序)協議的任務是進行從名稱到地址的映射。 Internet模塊將Internet地址映射到本地網絡地址。下級(即本地網絡或網關)過程的任務是進行從本地網絡地址到路由的映射。

地址是固定長度的四個八位位組(32位)。地址以網絡號開頭,後跟本地地址(稱為“空閑”字段)。 Internet地址有三種格式或類別:在a類中,高階位為0,後7位為網絡,後24位為本地地址;在b類中,高階兩位為0,後14位為網絡,後16位為本地地址;在c類中,高階三位為110,後21位為網絡,後8位為本地地址。

在將Internet地址映射到本地網絡地址時必須小心;一個單一的物理主機必須能夠像使用多個不同的Internet地址一樣充當多個不同的主機。某些主機還將具有多個物理接口(多宿主)。即,必須規定主機具有到網絡的多個物理接口,每個物理接口具有多個邏輯互聯網地址。

地址映射的示例可以在“地址映射”中找到。

分段

當Internet數據包起源於允許大數據包大小的本地網絡並且必須穿越將數據包限制為較小大小的本地網絡到達目的地時,必須進行分段。

互聯網數據包可以標記為“不要分段”。如此標記的任何Internet數據包在任何情況下都不得進行Internet分段。如果標記為“不分段”的互聯網數據包無法在不分段的情況下傳遞到其目的地,則應將其丟棄。

Internet協議模塊不可見的跨本地網絡的分段,傳輸和重組稱為Intranet分段,可以使用。

Internet分段和重組過程需要能夠將數據包分解為幾乎任意數量的分段,然後可以將其重新組裝。分段的接收者使用標識字段來確保不混合不同數據包的分段。分段偏移字段告訴接收者分段在原始數據包中的位置。分段的偏移量和長度確定了此分段覆蓋的原始數據包的部分。more-fragments標誌指示(通過重置)最後一個分段。這些字段提供了足夠的信息來重組數據包。

標識字段用於區分一個數據包的分段和另一個數據包的分段。 Internet數據包的始發協議模塊將標識字段設置為對於該源-目的地對和協議必須唯一的值,以確保該數據包在Internet系統中處於活動狀態。完整數據包的始發協議模塊將more-fragments標誌設置為零,並將分段偏移設置為零。

為了分段一個較長的Internet數據包,Internet協議模塊(例如,在網關中)將創建兩個新的Internet數據包,並將Internet報頭字段的內容從該長數據包複製到兩個新的Internet報頭中。長數據包的數據在8個八位位組(64位)邊界上分為兩部分(第二部分可能不是8個八位位組的整數倍,但第一部分必須是)。在第一部分NFB中調用8個八位位組塊的數量(對於分塊數量)。數據的第一部分放置在第一個新的Internet數據包中,並且總長度字段設置為第一個數據包的長度。 more-fragments標誌設置為1。數據的第二部分放置在第二個新的Internet數據包中,並且總長度字段設置為第二個數據包的長度。 more-fragments標誌帶有與長數據包相同的值。第二個新的Internet數據包的分段偏移字段設置為長數據包加NFB中該字段的值。

可以將此過程推廣到n向拆分,而不是所描述的雙向拆分。

為了組裝Internet數據包的分段,Internet協議模塊(例如,在目標主機處)將Internet數據包的四個字段(標識,源,目的地和協議)的值都相同。通過將每個分段的數據部分放置在該分段的Internet標頭中的分段偏移量指示的相對位置來完成組合。第一個分段的分段偏移量將為零,而最後一個分段的more-fragments標誌將重置為零。

2.4、網關

網關實施Internet協議以在網絡之間轉發數據包。 網關還實現網關到網關協議(GGP),以協調路由和其他Internet控制信息。

在網關中,無需實施更高級別的協議,並且GGP功能已添加到IP模塊。

RFC791:INTERNET PROTOCOL網絡協議

圖3、網關協議

3.規格

3.1、互聯網頭格式

Internet包頭內容的摘要如下:

RFC791:INTERNET PROTOCOL網絡協議

圖4、Internet報文頭實例

注意,每個刻度線代表一個位的位置。

version:4位

“版本”字段指示Internet標頭的格式。本文檔介紹版本4。

IHL:4位

Internet標頭長度是Internet標頭的長度(以32位字為單位),因此指向數據的開頭。請注意,正確標頭的最小值為5。

ToS服務類型:8位

服務類型提供了所需服務質量的抽象參數的指示。當通過特定網絡傳輸數據包時,這些參數將用於指導實際服務參數的選擇。幾個網絡提供服務優先級,從而以某種方式將高優先級流量比其他流量更重要(通常是在高負載時僅接受高於特定優先級的流量)。主要選擇是在低延遲,高可靠性和高吞吐量之間進行權衡。

第0-2位:優先級。

第3位:0 =正常延遲,1 =低延遲。

第4位:0 =正常吞吐量,1 =高吞吐量。

第5位:0 =正常可靠性,1 =高可靠性。

第6-7位:保留以備將來使用。

RFC791:INTERNET PROTOCOL網絡協議

組合含義

111 – Network Control

110 – Internetwork Control

101 – CRITIC/ECP

100 – Flash Override

011 – Flash

010 – Immediate

001 – Priority

000 – Routine

使用“延遲”,“吞吐量”和“可靠性”指示可能會增加服務成本(從某種意義上來說)。在許多網絡中,其中一個參數的較好性能與另一個參數的較差性能結合在一起。除非常特殊的情況外,應在這三個指示中最多設置兩個。

服務類型用於指定數據包在通過Internet系統傳輸期間的處理方式。 “服務映射”中給出了互聯網類型的服務到在諸如AUTODIN II,ARPANET,SATNET和PRNET之類的網絡上提供的實際服務的示例映射。

網絡控制優先級指定僅在網絡內使用。該名稱的實際使用和控制取決於每個網絡。 Internetwork控件名稱僅供網關控件創建者使用。

如果這些優先級標記的實際使用與特定網絡有關,則該網絡有責任控制對這些優先級標記的訪問和使用。

總長度:16位

總長度是數據包的長度,以八位字節為單位,包括Internet標頭和數據。該字段允許數據包的長度最多為65535個八位位組。對於大多數主機和網絡來說,如此長的數據包是不切實際的。所有主機必須準備好接受最多576個八位字節的數據包(無論它們是完整到達還是以分段到達)。建議主機僅在確定目的地已準備好接受較大數據包的情況下,才發送大於576個八位位組的數據包。

選擇數字576以允許除了所需的報頭信息之外還發送合理大小的數據塊。例如,此大小允許將512個八位位組加上64個標頭八位位組的數據塊放入數據包中。 Internet標頭的最大值為60個八位位組,而典型的Internet標頭為20個八位位組,這為較高級別協議的標頭留有餘量。

識別:16位

發送方分配的標識值,以幫助組裝數據包的分段。

標誌:3位

各種控制標誌。

第0位:保留,必須為零

第1位:(DF)0 =可以分段,1 =不分段。

第2位:(MF)0 =最後一個分段,1 =更多分段。

RFC791:INTERNET PROTOCOL網絡協議

分段偏移量:13位

該字段指示該分段在數據包中的位置。

分段偏移以8個八位位組(64位)為單位進行測量。第一個分段的偏移量為零。

生存時間:8位

該字段指示允許數據包保留在Internet系統中的最長時間。如果此字段包含零值,則必須銷毀數據包。該字段在Internet標頭處理中被修改。時間以秒為單位進行度量,但是由於每個處理數據包的模塊都必須將TTL至少減少一個,即使它在不到一秒的時間內處理數據包,因此TTL必須僅被視為設備上的上限。數據包可能存在的時間。目的是使無法傳遞的數據包被丟棄,並限制最大數據包的生存期。

協議:8位

該字段指示在互聯網數據包的數據部分中使用的下一級協議。在“分配的編號”中指定了各種協議的值。

標頭校驗和:16位

僅在標頭上的校驗和。由於某些標頭字段發生變化(例如,生存時間),因此在處理互聯網標頭的每個點都會重新計算並驗證該字段。

校驗和算法為:

校驗和字段是標頭中所有16位字的一個人的補碼之和的16位一個人的補碼。為了計算校驗和,校驗和字段的值為零。

這是一種簡單的計算校驗和的方法,實驗證據表明它是足夠的,但它是臨時的,可以根據進一步的經驗用CRC程序代替。

源地址:32位

源地址。請參閱第3.2節。

目的地址:32位

目的地址。請參閱第3.2節。

選項:變量

這些選項可能會出現在數據包中,也可能不會出現在數據包中。它們必須由所有IP模塊(主機和網關)實現。可選的是它們在任何特定數據包中的傳輸,而不是它們的實現。

在某些環境中,所有數據包中可能都需要安全選項。

選項字段的長度是可變的。可能有零個或多個選項。選項的格式有兩種情況:

情況1:選項類型的一個八位位組。

情況2:選項類型的八位位組,選項長度的八位位組和實際的選項數據八位位組。

選項長度八位字節計算選項類型八位字節,選項長度八位字節以及選項數據八位字節。

選項類型的八位位組被視為具有3個字段:

第1位:複製標誌,

第2-3位:選項類別,

第4-8位:選項號。

複製的標誌指示此選項在分段時被複制到所有分段中。

0 =未複製

1 =複製

選項類別為:

0 =控制

1 =保留供將來使用

2 =調試和測量

3 =保留供將來使用

定義了以下Internet選項:

編號長度說明
00選項列表結束。該選項僅佔用1個字節。它沒有長度八位位組
01無操作。該選項僅佔用1個字節。它沒有長度八位位組
0211安全。用於攜帶與DOD要求兼容的安全性,隔離區,用戶組(TCC)和處理限制代碼
03可變鬆散的源路由。用於根據源提供的信息來路由Internet數據包
09可變嚴格的源路由。用於根據源提供的信息來路由Internet數據包
07可變記錄路線。用於跟蹤Internet數據包所採用的路由
084流ID。用於攜帶流標識符
24可變互聯網時間戳

特定的選項定義

選項列表末尾

RFC791:INTERNET PROTOCOL網絡協議

此選項指示選項列表的末尾。 根據Internet標頭的長度,這可能與Internet標頭的末尾不一致。 該選項在所有選項的末尾使用,而不是在每個選項的末尾使用,並且僅在選項的末尾與Internet標頭的末尾不一致的情況下才需要使用。

可能由於分段或任何其他原因而被複制,引入或刪除。

無操作

RFC791:INTERNET PROTOCOL網絡協議

此選項可在選項之間使用,例如,在32位邊界上對齊後續選項的開頭。

可能由於分段或任何其他原因而被複制,引入或刪除。

安全

此選項為主機提供了一種發送安全性,隔離,處理限制和TCC(封閉用戶組)參數的方式。 此選項的格式如下:

RFC791:INTERNET PROTOCOL網絡協議

安全性(S字段):16位

指定16個安全級別之一(其中8個保留供將來使用)。

00000000 00000000-未分類

11110001 00110101-機密

01111000 10011010-EFTO

10111100 01001101-MMMM

01011110 00100110-程序

10101111 00010011-受限

11010111 10001000-秘密

01101011 11000101-最高機密

00110101 11100010-(保留以備將來使用)

10011010 11110001-(保留以備將來使用)

01001101 01111000-(保留供將來使用)

00100100 10111101-(保留供將來使用)

00010011 01011110-(保留供將來使用)

10001001 10101111-(保留供將來使用)

11000100 11010110-(保留供將來使用)

11100010 01101011-(保留供將來使用)

分隔(C區域):16位

當沒有分隔傳送的信息時,將使用全零值。 隔離專區字段的其他值可以從國防情報局獲得。

處理限制(H字段):16位

控制標記和釋放標記的值是字母數字二邊形,並且在防禦中定義

情報局手冊DIAM 65-19,“標準安全標記”。

傳輸控制代碼(TCC字段):24位

提供一種隔離流量並在訂戶之間定義受控興趣社區的方法。 TCC值是三邊形,可從HQ DCA代碼530獲得。

必須在分段上複製。 此選項在數據包中最多出現一次。

鬆散的源和記錄路徑

RFC791:INTERNET PROTOCOL網絡協議

鬆散的源和記錄路由(LSRR)選項為Internet數據包的源提供了一種途徑,以提供網關在將數據包轉發到目的地時要使用的路由信息​,並記錄路由信息。

選件以選件類型代碼開頭。第二個八位位組是選項長度,它包括選項類型代碼和路由數據的長度八位位組,指針八位位組和長度為3個八位位組。第三個八位位組是指向路由數據的指針,該數據指示八位位組,該八位位組開始下一個要處理的源地址。指針是相對於此選項的,並且指針的最小合法值為4。

路線數據由一系列Internet地址組成。

每個互聯網地址為32位或4個八位位組。如果指針大於長度,則源路由為空(且記錄的路由已滿),並且路由將基於目標地址字段。

如果已到達目標地址字段中的地址並且指針的長度不超過長度,則源路由中的下一個地址將替換目標地址字段中的地址,並且記錄的路由地址將替換剛剛使用的源地址,並且指針增加了四個。

記錄的路由地址是該數據包轉發到的環境中已知的Internet模塊自身的Internet地址。

用記錄的路由替換源路由的此過程(儘管與用作源路由的順序相反)意味着該選項(和整個IP報頭)保持不變的長度,因為數據包通過互聯網進行。

此選項是一個鬆散的源路由,因為允許網關或主機IP使用任意數量的其他中間網關的任何路由來到達該路由中的下一個地址。

必須在分段上複製。在數據包中最多出現一次。

嚴格的源和記錄路徑

RFC791:INTERNET PROTOCOL網絡協議

嚴格的源和記錄路由(SSRR)選項為Internet數據包的源提供了一種途徑,以提供網關將數據包轉發到目的地時要使用的路由信息​​,並記錄路由信息。

選件以選件類型代碼開頭。第二個八位位組是選項長度,它包括選項類型代碼和路由數據的長度八位位組,指針八位位組和長度為3個八位位組。第三個八位位組是指向路由數據的指針,該數據指示八位位組,該八位位組開始下一個要處理的源地址。指針是相對於此選項的,並且指針的最小合法值為4。

路線數據由一系列Internet地址組成。

每個互聯網地址為32位或4個八位位組。如果指針大於長度,則源路由為空(且記錄的路由已滿),並且路由將基於目標地址字段。

如果已到達目標地址字段中的地址並且指針的長度不超過長度,則源路由中的下一個地址將替換目標地址字段中的地址,並且記錄的路由地址將替換剛剛使用的源地址,並且指針增加了四個。

記錄的路由地址是該數據包轉發到的環境中已知的Internet模塊自身的Internet地址。

用記錄的路由替換源路由的此過程(儘管與用作源路由的順序相反)意味着該選項(和整個IP報頭)保持不變的長度,因為數據包通過互聯網進行。

此選項是嚴格的源路由,因為網關或主機IP必須僅通過下一個地址中指示的直接連接的網絡將數據包直接發送到源路由中的下一個地址,以到達路由中指定的下一個網關或主機。

必須在分段上複製。在數據包中最多出現一次。

記錄路線

RFC791:INTERNET PROTOCOL網絡協議

記錄路由選項提供了一種記錄Internet數據包的路由的方法。

選件以選件類型代碼開頭。第二個八位位組是選項長度,它包括選項類型代碼和路由數據的長度八位位組,指針八位位組和長度為3個八位位組。第三個八位位組是指向路由數據的指針,指示八位位組,該八位位組從下一個區域開始存儲路由地址。指針是相對於此選項的,並且指針的最小合法值為4。

一條記錄的路線由一系列Internet地址組成。

每個互聯網地址為32位或4個八位位組。如果指針大於長度,則記錄的路線數據區域已滿。

始發主機必須使用足夠大的路由數據區域來組成此選項,以容納所有預期的地址。該選項的大小不會因添加地址而改變。路線數據區域的初始內容必須為零。

當Internet模塊路由數據包時,它會檢查是否存在“記錄路由”選項。如果是這樣,它將在該數據包轉發到的環境中插入它自己已知的互聯網地址,該環境從指針所指示的八位字節開始轉發到記錄的路由中,並將指針增加四。

如果路由數據區已滿(指針超過長度),則轉發數據包,而無需將地址插入記錄的路由中。如果有一些空間但沒有足夠的空間可插入完整地址,則原始數據包被認為是錯誤的,並被丟棄。無論哪種情況,都可以將ICMP參數問題消息發送到源主機。

分段時不複製,僅在第一個分段中進行。

在數據包中最多出現一次。

流標識符

RFC791:INTERNET PROTOCOL網絡協議

此選項為不支持流概念的網絡攜帶16位SATNET流標識符提供了一種方法。

必須在分段上複製。在數據包中最多出現一次。

互聯網時間戳

RFC791:INTERNET PROTOCOL網絡協議

選項長度是選項中的八位字節數,該字節計數類型,長度,指針和溢出/標誌八位字節(最大長度為40)。

指針是從此選項的開始到時間戳記的末尾的八位字節數加1(即,它指向從下一個時間戳記開始的八位字節數)。最小合法值為5。當指針大於長度時,時間戳記區域已滿。

溢出(oflw)[4位]是由於空間不足而無法註冊時間戳的IP模塊的數量。

標誌(flg)[4位]的值是

0-僅時間戳,以連續的32位字存儲,

1-每個時間戳前面都有註冊實體的互聯網地址,

3-互聯網地址字段是預先指定的。 IP模塊僅在其自己的地址與下一個指定的Internet地址匹配時才註冊其時間戳。

時間戳是自午夜UT起以毫秒為單位的右對齊32位時間戳。如果該時間以毫秒為單位不可用或相對於午夜UT無法提供,則可以插入任何時間作為時間戳,前提是時間戳字段的高階位設置為1以指示使用非標準值。

原始主機必須使用足夠大的時間戳數據區域組成此選項,以容納所有預期的時間戳信息。由於添加了時間戳,該選項的大小不會更改。時間戳數據區域的初始內容必須為零或Internet地址/零對。

如果時間戳數據區域已滿(指針超過長度),則在不插入時間戳的情況下轉發數據包,但溢出計數將增加1。

如果有足夠的空間但沒有足夠的空間插入完整的時間戳,或者溢出計數本身溢出,則認為原始數據包有誤,將其丟棄。

無論哪種情況,都可以將ICMP參數問題消息發送到源主機。

分段時不會複製timestamp選項。它攜帶在第一個分段中。在數據包中最多出現一次。

填充:可變

Internet標頭填充用於確保Internet標頭以32位邊界結束。填充為零。

3.2、討論

協議的實現必須健壯。每個實現都必須期望與不同個人創建的其他實現互操作。儘管本規範的目標是明確說明協議,但可能會有不同的解釋。通常,實現在發送行為上必須是保守的,而在接收行為上則必須是自由的。也就是說,必須謹慎發送格式正確的數據包,但必須接受它可以解釋的任何數據包(例如,不反對含義仍然清晰的技術錯誤)。

基本的Internet服務面向數據包,並在網關處提供數據包的分段,並在目標主機中的目標Internet協議模塊上進行重組。當然,也允許在網絡內或通過網絡網關之間的私有協議對數據包進行分段和重組,因為這對於Internet協議和更高級別的協議是透明的。這種透明的分段和重組類型稱為“網絡相關”(或Intranet)分段,此處不再贅述。

Internet地址區分主機級別的源和目的地,並提供協議字段。假定每種協議都將提供主機內所需的任何多路復用。

編址

為了在為網絡分配地址方面提供靈活性,並允許使用大量的中小型網絡,對地址字段的解釋進行編碼,以指定具有大量主機的少量網絡,具有主機數量的中等數量的網絡。數量適中的主機,以及數量眾多且主機數量少的網絡。此外,還有用於擴展尋址模式的轉義碼。

地址格式:

RFC791:INTERNET PROTOCOL網絡協議

網絡字段中的零值表示該網絡。這僅在某些ICMP消息中使用。擴展尋址模式是不確定的。這兩個功能都保留供將來使用。

為網絡地址分配的實際值在“分配的編號”中給出。

由本地網絡分配的本地地址必須允許單個物理主機充當多個不同的Internet主機。也就是說,Internet主機地址和網絡/主機接口之間必須存在一個映射,以允許多個Internet地址對應一個接口。還必須允許主機具有多個物理接口,並將來自多個物理接口的數據包當作已全部尋址到單個主機一樣對待。

Internet地址與ARPANET,SATNET,PRNET和其他網絡的地址之間的地址映射在“地址映射”中進行了描述。

分段和重組

Internet標識字段(ID)與源地址和目標地址以及協議字段一起使用,以標識要重組的數據包分段。

如果數據包不是最後一個分段,則將設置“更多分段”標誌位(MF)。分段偏移字段標識相對於原始未分段化數據包的開頭的分段位置。分段以8個八位位組為單位進行計數。設計分段策略是為了使未分段的數據包具有全部零的分段信息(MF = 0,分段偏移= 0)。如果Internet數據包是分段的,則其數據部分必須在8個八位位組邊界上斷開。

此格式允許2的13次方 = 8192個8個八位字節的分段,總共65536個八位字節。請注意,這與數據包總長度字段一致(當然,標頭是在總長度中計算的,而不是在分段中計算的)。

發生分段時,某些選項將被複制,而其他選項僅保留在第一個分段中。

每個Internet模塊必須能夠轉發68個八位位組的數據包,而不能進一步分段。這是因為Internet標頭最多可以包含60個八位位組,而最小分段為8個八位位組。

每個互聯網目的地都必須能夠以單個或分段形式接收576個八位字節的數據包,以進行重組。

可能受到分段影響的字段包括:

(1)選項字段

(2)更多分段標誌

(3)分段偏移

(4)網絡頭長度字段

(5)總長度字段

(6)頭校驗和

如果設置了“不分段標誌”(DF)位,則此數據包的Internet分段是不允許的,儘管它可能會被丟棄。在接收主機沒有足夠的資源來重新組合Internet分段的情況下,這可以用來禁止分段。

使用“不要分段”功能的一個示例是下行加載小型主機。小型主機可以具有一個引導程序,該程序接受一個數據包,將其存儲在內存中,然後執行它。

實例最容易描述分段和重組過程。以下過程是示例實現。

以下示例程序中的通用符號:“ = <”表示“小於或等於”,“#”表示“不等於”,“=”表示“等於”,“<-”表示“設置為”。同樣,“x到y”包括x並排除y;例如,“4到7”將包括4、5和6(但不包括7)。

分段程序示例

可以通過下一個網絡傳輸的最大大小的數據包稱為最大傳輸單元(MTU)。

如果總長度小於或等於最大傳輸單位,則將該數據包提交到數據包處理的下一步;否則,將其提交給數據包處理。否則,將數據包切成兩個分段,第一個分段為最大大小,第二個分段為數據包的其餘部分。第一個分段被提交到數據包處理的下一步,而第二個分段如果仍然太大,則被提交給該程序。

示意:

RFC791:INTERNET PROTOCOL網絡協議

計算方法:

如果TL = <MTU,則將此數據包提交到數據包處理,否則:如果DF = 1,則丟棄數據包,否則執行第一個分段:

(1)複製原始報文頭;

(2)OIHL設置為IHL;OTL設置為TL; OFO設置為FO; OMF設置為MF;

(3)NFB等於(MTU-IHL * 4)/ 8;

(4)附加第一個NFB * 8數據八位位組;

(5)休整報頭:MF設置為1; TL等於(IHL * 4)+(NFB * 8);重新計算校驗和;

(6)將此分段提交到數據包處理的下一步;

產生第二個分段:

(7)有選擇地複製報文頭(某些選項未複製,請參閱選項定義);

(八)追加剩餘數據;

(9)更正報文頭:

IHL等於((((OIHL * 4)-(未複製的選項長度))+ 3)/ 4;

TL等於OTL-NFB * 8-(OIHL-IHL)* 4);

FO等於OFO + NFB;

MF等於OMF;重新計算校驗和;

(10)將該分段提交給分段測試;

完畢。

在上述過程中,每個分段(最後一個分段除外)都被設置為最大允許大小。替代方法可能會產生小於最大大小的數據包。例如,可以實施一種分段過程,該過程將大型數據包重複分成兩半,直到所得的分段小於最大傳輸單元大小為止。

重組程序示例

對於每個數據包,將緩衝區標識符計算為源,目標,協議和標識字段的串聯。如果這是一個完整的數據包(即分段偏移量和更多分段字段均為零),則釋放與此緩衝區標識符關聯的所有重組資源,並將數據包轉發到數據包處理的下一步。

如果沒有其他帶有此緩衝區標識符的分段,那麼將分配重組資源。重組資源包括一個數據緩衝區,一個標頭緩衝區,一個分段塊位表,一個總數據長度字段和一個計時器。來自分段的數據根據​​其分段偏移量和長度放置在數據緩衝區中,並且在分段塊位表中設置與接收到的分段塊相對應的位。

如果這是第一個分段(即分段偏移為零),則將此標頭放置在標頭緩衝區中。如果這是最後一個分段(更多分段字段為零),則計算總數據長度。如果此分段完成了數據包(通過檢查分段塊表中設置的位進行了測試),則數據包將被發送到數據包處理的下一步;否則,將計時器設置為當前計時器值和該分段中的生存時間字段中的最大值。重組例行程序放棄了控制權。

如果計時器用盡,則釋放該緩衝區標識符的所有重組資源。計時器的初始設置是重新組裝等待時間的下限。這是因為如果到達的分段中的生存時間大於當前計時器值,則等待時間將增加,但如果小於當前定時器值,則等待時間將不會減少。此計時器值可以達到的最大值是最長生存時間(約4.25分鐘)。當前建議的初始計時器設置為15秒。隨着該協議經驗的積累,這可能會改變。請注意,此參數值的選擇與可用的緩衝區容量和傳輸介質的數據速率有關。也就是說,數據速率乘以計時器值等於緩衝區大小(例如10Kb / s X 15s = 150Kb)。

示意:

RFC791:INTERNET PROTOCOL網絡協議

計算方法:

RFC791:INTERNET PROTOCOL網絡協議

如果兩個或多個分段包含相同或部分重疊的相同數據,則此過程將使用數據緩衝區中最近到達的副本和傳遞的數據包。

鑒別

為數據包選擇標識符的選擇是基於提供唯一標識特定數據包的分段的方法的需要。如果分段具有相同的源,目的地,協議和標識符,則協議模塊組裝分段將判斷這些分段屬於同一數據包。因此,在數據包(或其任何分段)可以在Internet上存在的時間內,發送方必須為此源,目的地對和協議選擇唯一的標識符。

這樣看來,發送協議模塊需要保留一個標識符表,在互聯網的最後一個最大數據包生存期中,它與之通信的每個目的地都有一個條目。

但是,由於“標識符”字段允許65536個不同的值,因此某些主機可能能夠簡單地使用獨立於目的地的唯一標識符。

對於某些更高級別的協議,選擇標識符是合適的。例如,TCP協議模塊可以重傳相同的TCP段,並且如果重傳帶有與原始傳輸相同的標識符,則正確接收的可能性將提高,因為任何一個數據包的分段都可以用於構造正確的TCP段。

服務種類TOS

服務類型(TOS)用於選擇Internet服務質量。服務類型是根據抽象參數優先級,延遲,吞吐量和可靠性指定的。這些抽象參數將映射到數據包遍歷的特定網絡的實際服務參數中。

優先順序。此數據包重要性的獨立度量。

延遲。對於具有此指示的數據包,及時交付很重要。

吞吐量。高數據速率對於具有此指示的數據包很重要。

可靠性。對於具有此指示的數據包,確保交付的更高級別的工作很重要。

例如,ARPANET具有優先級位,並且可以在“標準”消息(類型0)和“不受控制”消息(類型3)之間進行選擇(單包消息和多包消息之間的選擇也可以視為服務參數)。不受控制的消息往往傳遞的可靠性較差,並且延遲較少。假設要通過ARPANET發送Internet數據包。令互聯網服務類型為:

優先順序:5

延遲:0

吞吐量:1

可靠性:1

在此示例中,這些參數到ARPANET可用參數的映射將是由於Internet優先級處於其範圍的上半部而將ARPANET優先級位設置為on,以選擇標準消息,因為指示了吞吐量和可靠性要求,並且延遲不是。有關服務映射的更多詳細信息,請參見“服務映射”。

生存時間

發送者將生存時間設置為允許數據包進入Internet系統的最長時間。如果數據包在Internet系統中的生存時間長於生存時間,則必須銷毀該數據包。

在處理Internet標頭時,必須減少此字段,以反映處理數據包所花費的時間。即使沒有關於實際花費時間的本地信息,該字段也必須遞減1。時間以秒為單位進行度量(即值1表示一秒鐘)。因此,最長生存時間為255秒或4.25分鐘。由於即使處理數據包的時間少於一秒,每個處理數據包的模塊也必須將TTL至少減少一個,因此TTL必須僅被視為存在數據包的時間的上限。目的是使無法傳遞的數據包被丟棄,並限制最大數據包的生存期。

一些更高級別的可靠連接協議基於以下假設:舊的重複數據包在經過一定時間後將不會到達。 TTL是此類協議確保滿足其假設的一種方式。

選項

這些選項在每個數據包中都是可選的,但在實現中是必需的。也就是說,選項的存在與否是發送者的選擇,但是每個Internet模塊必須能夠解析每個選項。選項字段中可能存在多個選項。

選項可能不會在32位邊界上結束。 Internet標頭必須用零的八位字節填充。其中的第一個將被解釋為選項的結束選項,其餘的將被解釋為Internet標頭填充。

每個Internet模塊必須能夠對每個選項進行操作。如果要傳遞分類,限制或隔離的流量,則需要“安全選項”。

校驗和

如果更改了Internet標頭,則會重新計算Internet標頭校驗和。例如,減少了生存時間,增加了Internet選項或對其進行了更改或由於分段而造成的。 Internet級別的此校驗和旨在保護Internet標頭字段免受傳輸錯誤的影響。

在某些應用中,一些數據位錯誤是可以接受的,而重傳延遲是不可接受的。如果Internet協議強制數據正確性,則無法支持此類應用程序。

錯誤

Internet協議錯誤可能會通過ICMP消息報告。

3.3、接口

IP用戶界面的功能描述充其量只是虛構的,因為每個操作系統都具有不同的功能。因此,我們必須警告讀者,不同的IP實現可能具有不同的用戶界面。但是,所有IP必須提供一定的最小服務集,以確保所有IP實現都可以支持相同的協議層次結構。本節指定所有IP實現所需的功能接口。

Internet協議一方面與本地網絡接口,另一方面與更高級別的協議或應用程序接口。在下文中,由於較高級別的協議或應用程序(甚至是網關程序)正在使用Internet模塊,因此將其稱為“用戶”。由於Internet協議是數據包協議,因此在數據包傳輸之間保持最少的內存或狀態,並且用戶在Internet協議模塊上的每個調用都會提供IP執行請求的服務所需的所有信息。

上層接口示例

以下兩個示例調用滿足了用戶與Internet協議模塊通信的要求(“ =>”表示返回):

RFC791:INTERNET PROTOCOL網絡協議

請注意,優先級已包含在TOS中,並且安全性/隔離專區是作為選項傳遞的。

RFC791:INTERNET PROTOCOL網絡協議

當用戶發送數據包時,它將執行提供所有參數的SEND調用。 Internet協議模塊在收到此呼叫後,會檢查參數並準備並發送消息。如果參數正確,並且數據包被本地網絡接受,則調用成功返回。如果自變量錯誤,或者本地網絡不接受數據包,則調用將失敗。如果未成功返回,則必須就問題的原因做出合理的報告,但是此類報告的詳細信息取決於各個實現。

當數據包從本地網絡到達Internet協議模塊時,要麼有來自正在尋址的用戶的未決RECV呼叫,要麼沒有。在第一種情況下,通過將信息從數據包傳遞給用戶來滿足掛起的呼叫。在第二種情況下,被通知的用戶將收到未決的數據包。如果所尋址的用戶不存在,則會將ICMP錯誤消息返回給發送方,並丟棄數據。

在實現的特定操作系統環境中,可以適當地通過偽中斷或類似的機制來通知用戶。

然後,未決數據包可以立即滿足用戶的RECV呼叫,或者直到數據包到達之前,呼叫可能仍未決。

如果發送主機有多個地址(多個物理連接或邏輯地址),則源地址將包含在發送呼叫中。Internet模塊必須檢查以確保源地址是該主機的合法地址之一。

一種實現還可以允許或要求對互聯網模塊的調用以表示對一類數據包的興趣或保留其獨佔使用(例如,在協議字段中具有一定值的所有數據包)。

本節從功能上描述了USER / IP接口。所使用的表示法與高級語言中的大多數函數調用過程相似,但是這種用法並不意味着排除陷阱類型的服務調用(例如SVC,UUO,EMT)或任何其他形式的進程間通信。

附錄A:示例和場景

範例1:

這是承載互聯網數據包的最小數據的示例:

RFC791:INTERNET PROTOCOL網絡協議

圖5、網絡報文示例

注意,每個刻度線代表一個位的位置。

這是Internet協議版本4中的Internet數據包; Internet標頭由五個32位字組成,數據包的總長度為21個八位位組。該數據包是完整的數據包(不是分段)。

範例2:

在此示例中,我們首先顯示一個中等大小的Internet數據包(452個數據八位字節),然後顯示兩個Internet分段,如果允許的最大大小的傳輸是280個八位字節,則可能由於該數據包的分段而導致。

RFC791:INTERNET PROTOCOL網絡協議

圖6、網絡報文示例

現在,第一個分段是由於在256個數據八位字節之後拆分數據包而產生的。

RFC791:INTERNET PROTOCOL網絡協議

圖7、報文分段示例

還有第二個分段。

RFC791:INTERNET PROTOCOL網絡協議

圖8、報文分段示例

範例3:

在這裡,我們顯示一個包含選項的數據包的示例:

RFC791:INTERNET PROTOCOL網絡協議

圖9、網絡報文示例

附錄B:數據傳輸順序

本文檔中描述的報頭和數據的傳輸順序解析為八位位組級別。 每當圖表顯示一組八位字節時,這些八位字節的傳輸順序就是用英語閱讀它們的正常順序。 例如,在下圖中,八位位組按照編號順序進行傳輸。

RFC791:INTERNET PROTOCOL網絡協議

圖10、字節傳輸順序

每當八位位組代表數字量時,圖中最左邊的位就是高階或最高有效位。 即,標記為0的位是最高有效位。 例如,下圖表示值170(十進制)。

RFC791:INTERNET PROTOCOL網絡協議

圖11、bit位示意圖

同樣,每當一個多字節的字段代表一個數字量時,整個字段的最左位就是最高有效位。傳輸多字節的數量時,最重要的字節首先傳輸。

名詞解釋

1822

BBN報告1822,“主機和IMP的互連規範”。主機和ARPANET之間的接口規範。

ARPANET leader

主機IMP接口上關於ARPANET消息的控制信息。

ARPANET message

主機和ARPANET中的IMP之間的傳輸單位。最大大小約為1012個八位位組(8096位)。

ARPANET packet

IMPs之間的ARPANET內部使用的一種傳輸單位。最大大小約為126個八位位組(1008位)。

Destination,目的地

目的地址,Internet標頭字段。

DF

flags字段中攜帶的Don’t Fragment位。

Flags

帶有各種控制標誌的Internet標頭字段。

Fragment Offset

此Internet頭字段指示分段在Internet數據包中的位置。

GGP

Gateway to Gateway Protocol,網關到網關協議,網關之間主要用於控制路由和其他網關功能的協議。

header

消息,段,數據包,數據包或數據塊開頭的控制信息。

ICMP

ICMP是在Internet模塊中實現的Internet控制消息協議(Internet Control Message Protocol),從網關到主機以及在主機之間使用ICMP報告錯誤並提出路由建議。

Identification

Internet標頭字段,其中包含由發送方分配的標識值,以幫助組裝數據包的分段。

IHL

Internet頭字段Internet包頭長度(Internet Header Length)是Internet包頭的長度,以32位字為單位。

IMP

Interface Message Processor,接口消息處理器,ARPANET的數據包交換機。

Internet Address

由網絡字段和本地地址字段組成的四個八位字節(32位)的源或目標地址。

internet datagram

一對Internet模塊(包括Internet標頭)之間交換的數據單位。

internet fragment

具有Internet標頭的Internet數據包的一部分數據。

Local Address

網絡內主機的地址。 Internet本地地址到網絡中主機地址的實際映射非常普遍,允許多對一映射。

MF

Internet標頭標誌字段中攜帶了“More-Fragments Flag,更多分段標誌”。

module

協議或其他過程的一種實現,通常以軟件形式實現。

more-fragments flag

一個標誌,指示此Internet數據包是否包含Internet數據包的末尾,並在Internet標頭的Flags字段中攜帶。

NFB

Internet分段的數據部分中的分段塊數(Number of Fragment Blocks)。也就是說,以8個八位位組為單位測量的一部分數據的長度。

octet

一個八位字節。

Options

Internet標頭的“選項”字段可能包含幾個選項,每個選項的長度可能是幾個八位位組。

Padding

Internet標頭的Padding字段用於確保數據以32位字邊界開始。填充為零。

Protocol

在本文檔中,下一個更高級別的協議標識符是Internet標頭字段。

Rest

Internet地址的本地地址部分。

Source

源地址,Internet標頭字段。

TCP

Transmission Control Protocol,傳輸控制協議:一種主機到主機協議,用於在Internet環境中進行可靠的通信。

TCP Segment

TCP模塊之間交換的數據單位(包括TCP標頭)。

TFTP

Trivial File Transfer Protocol,普通文件傳輸協議:一種基於UDP的簡單文件傳輸協議。

Time to Live

Internet標頭字段,指示此Internet數據包可以存在多長時間的上限。

TOS

Type of Service,服務種類。

Total Length

Internet標頭字段“總長度”是數據包的長度,以八位字節為單位,包括Internet標頭和數據。

TTL

Time to Live,生存時間。

Type of Service

Internet標頭字段,指示此Internet數據包的服務類型(或質量)。

UDP

User Datagram Protocol用戶數據包協議:用於面向事務的應用程序的用戶級別協議。

User

互聯網協議的用戶。 這可以是更高級別的協議模塊,應用程序或網關程序。

Version

“版本”字段指示Internet標頭的格式。

原創文章,作者:投稿專員,如若轉載,請註明出處:https://www.506064.com/zh-hant/n/277808.html

(0)
打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
投稿專員的頭像投稿專員
上一篇 2024-12-19 13:27
下一篇 2024-12-19 13:27

相關推薦

發表回復

登錄後才能評論