540 likes | 667 Views
第 6 章 通訊協定. Internet Protocol (IP). IP 簡介. IP 位於 Network 層。 對上可載送 Transport 層各種協定的資訊 , 例如: TCP 、 UDP 等等。 對下可將 IP 封包放到 Link 層 , 透過乙太網路、 Token Ring 、 FDDI 、 X.25 、 Frame Relay 等等各種規格的技術來傳送。. IP 所提供的服務. IP 封包的傳送。 IP 封包的切割與重組。. 傳送 IP 封包.
E N D
第 6 章 通訊協定 Internet Protocol (IP)
IP簡介 • IP 位於 Network 層。 • 對上可載送 Transport 層各種協定的資訊, 例如:TCP、UDP 等等。 • 對下可將 IP 封包放到 Link 層, 透過乙太網路、Token Ring、FDDI、X.25、Frame Relay 等等各種規格的技術來傳送。
IP所提供的服務 • IP 封包的傳送。 • IP 封包的切割與重組。
傳送 IP封包 要將 IP 封包從來源裝置傳送到目的裝置, 必須依賴以下兩種機制: • IP 位址 • IP 路由 (IP Routing)
IP位址 • IP 位址如同現實生活中的地址。 • 所有使用 IP 的裝置, 至少都必須有一個獨一無二的 IP 位址, IP 封包才能正確送達目的裝置。
誰負責分派 IP位址? • 負責分派 IP 位址的最高機構為 Internet Corporation for Assigned Names and Numbers (ICANN, http://www.icann.org/ )。 • ICANN 依地區與國家, 授權給公正的單位來執行 IP 位址分派的工作。 • 台灣是由財團法人臺灣網路資訊中心 (TWNIC, http://www.twnic.net/ ) 負責。
IP路由 • Internet 可視為由許多個網路連結起來所形成的大型網路。必須透過 IP 路由 (IP Routing) 的轉送, 才能將 IP 封包經過一個個的網路, 送達目的地。
路由器 • 在實體上,每個網路是透過路由器 (Router) 來相互連接。 • 路由器的功能是為 IP 封包選擇傳送的路徑。 • IP 封包必須靠沿途各路由器的通力合作, 才能到達目的地。 • IP 路由的過程中, 是由路由器負責選擇路徑, 而 IP 封包則是處於被動的狀態。
Connectionless 的傳送特性 • IP 封包使用 Connectionless 傳送方式。 • 來源裝置不必理會目的裝置是否已準備好, 只管將 IP 封包逐一送出即可。 • 目的裝置是否正確收到每個封包, 則是由上層的協定 (例如:TCP) 來負責檢查。
切割與重組 IP封包 • 路由器必須將過長的封包加以切割, 以便能在 MTU 較小的網路上傳輸。 • 切割後的 IP 封包, 會由目的裝置重組, 恢復成原來 IP 封包的模樣。 • 每一種 Data Link 層的技術, 都有其所能傳輸的最大封包長度 (MTU):
IP封包 • IP 表頭: • 記錄有關 IP 位址、路由、封包識別等資訊。長度為 4 Bytes的倍數, 最短為 20 Bytes, 最長可達 60 Bytes。 • IP Payload: • 載送上層協定的封包。長度最短為 8 Bytes, 最長可達 65515 Bytes。
IP封包的包裝 • IP 對上可接受 Transport 層協定所交付的封包, 形成 IP Payload: • 對下則將整個 IP 封包交付給 Data Link 層的協定, 包裝後直接在介質上傳送:
Version (版本) • 佔 4 Bits, 記錄 IP 的版本編號。 • 目前最常見的 IP 版本為 IP Version 4, 亦即第 4 版, 欄位值為 4 (十進位) 或 0100 (二進位)。後續版本為 IP Version 6, 也就是第 6 版, 但目前仍不普及。
IHL (表頭長度) • IHL ( Internet Header Length ) 用來定義 IP 表頭的長度。 • 由於 IP 表頭長度並不固定, 因此有必要記載其長度。 • 以 4 Bytes 為基本單位。例如:IHL 欄位值為 0101 (二進位) 時, 換算為十進位為 5, 即代表 IP 表頭的長度為 5 x 4 = 20 Bytes。
範例 1 某到達之IP 封包其前8 位元為: 01000010 接收者丟棄該封包為什麼?
解答 此封包中有錯誤。最左的4位元0100 代表版本這部分正確。後面4位元(0010) 代表標頭長度為2 x 4=8,這是錯誤的,因為最小的標頭長度,需為20位元組,這封包在傳輸過程有被破壞過。
範例 2 某IP封包其IHL 為1000(2 進制)問此封包攜帶多少位元組的選項?
解答 IHL值為8,代表標頭的總長為32(8 x 4)位元組。最前面20 位元組為主要標頭,剩下的12 位元組為選項。
Type of Service (服務類型) 路由器可根據 Type of Service 中的 6 項參數, 決定如何處理 IP 封包: • Precedence • 用來決定 IP 封包的優先等級。 • Delay、Throughput、Reliability、Cost • 提供路由器選擇路徑時的參考。 • Reserved • 保留未使用。
Precedence (優先等級) • 數值愈大, 代表 IP 封包優先等級愈高。 • 平常的 IP 封包一律使用 0, 也就是優先等級最低的 Routine。
Delay (延遲性) • 用來定義 IP 封包對於延遲性的要求。 • Low Delay 代表 IP 封包儘量不要延遲。 • 具有即時性需求的應用程式 (如影音會議) 會將 Delay 參數設為 1, 一般 IP 封包則設為 0。
Throughput (傳輸量) • 用來定義 IP 封包對於頻寬的要求。 • High Throughput 代表路由器應儘量選擇頻寬較高的傳遞路徑來傳送此封包。 • 傳輸資料量大的應用程式, 會將此參數設為 1, 至於一般的 IP 封包皆設為 0。
Reliability (可靠度) • 定義 IP 封包對於路徑可靠度的要求。 • High Reliability 代表路由器應儘量選擇可靠度較高的路徑來傳送此封包。 • 若應用程式希望在傳送過程中儘量減少 IP 封包遺失, 會將 Reliability 參數設為 1。一般的 IP 封包皆設為 0。
Cost (成本) • 定義 IP 封包對於路徑成本的要求。 • Low Cost 代表路由器應儘量選擇成本較低的傳遞路徑來傳送此封包。 • 若傳輸的資料不是很重要, 則應用程式可將 Cost 參數設為 1。一般的 IP 封包皆設為 0。
Type of Service 的重要觀念 路由器必須具備以下條件, Type of Service 參數才能發揮作用: • 路由器必須具解讀這些參數的能力。 • 路由器必須有多條路徑可供選擇, Delay、Throughput、Reliability、Cost 等參數才會有作用。 • 當路由器有多條路徑可供選擇時, 路由器必須 『知道』 每條路徑的特性。
Total Length (總長度) • 記錄整個 IP 封包的長度, 單位為 Byte。 • 整個 IP 封包最大可達 1500 Bytes, 所以 此欄位的最大值即為 1500 (十進位)。
Identification (識別碼) • 記錄 IP 封包的識別碼。 • 識別碼由來源裝置決定, 按照 IP 封包發出的順序遞增 1。 • 每個 IP 封包到達目的裝置的先後順序可能與出發時的順序不同。目的裝置可利用此欄位, 判斷 IP 封包原來的順序, 並予以重組。
Flag (封包切割標示) • 與 IP 封包的切割與重組有關。 • 總共有 3 個參數, 每參數佔 1 Bit:
DF 參數 • 定義 IP 封包是否可加以切割。 • Don‘t Fragment 代表不允許路由器切割 IP 封包 ( 此時封包若大於 MTU 值, 路由器會丟棄此封包, 並發出 ICMP 訊息通知來源裝置 )。
MF 參數 • 定義此 IP fragment 是否為原始封包的最後一個 IP fragment。 • IP fragment 是切割後所產生的新封包。 • Last Fragment 代表此 IP fragment 是原始 IP 封包經切割後, 所產生的最後 1 個 IP fragment ( 或原始封包未經切割 )。
Fragment Offset (切割重組點) • 用來記錄 IP fragment 所載送的是原始 IP Payload 的哪一段資料。Fragment Offset 的單位是 8 Bytes。 • 因 IP 封包切割後, 原始封包內 IP Payload 的資料會分散到每個 IP fragment 中, 因此需要分別註明以便重組。
Fragment Offset 範例-1 • 假設原始 IP 封包長度為 4520 Bytes, IP 表頭的長度為 20 Bytes, IP Payload 長度為 4500 Bytes。 • 若必須經由乙太網路傳送, 在切割後每個 IP fragment 最大長度為 1500 Bytes, 其中 IP 表頭的長度為 20 Bytes, IP Payload 最大長度為 1480 Bytes。 • 因此, 會產生如下圖的 4 個新 IP fragment:
Fragment Offset 範例-3 • 切割後所產生的第 1 個 IP fragment 載送了原始 IP Payload 的第 1 Byte到第 1480 Byte, 因此 Fragment Offset 設為 0。 • 第 2 個 IP fragment 載送了原始 IP Payload 從第 1481 Byte 到第 2960 Byte, 因此 Fragment Offset 設為 1480 / 8 = 185 (因為以 8 Bytes 為單位)。依此類推:
Time to Live (存活時間) • 記錄 IP 封包的 『存活時間』, 以限制 IP 封包在路由器之間轉送的次數。 • 當 IP 封包每經過一部路由器時, 路由器便會將 Time to Live 欄位值減 1。 • 當路由器收到此欄位值為 0 的 IP 封包時, 便直接將之丟棄, 不再轉送。
範例 4 某到達IP封包其前面幾個以16 進制表示數字之為: 45000028000100000102................... 問這個封包還可以經過幾個路由器,而不會被丟掉?其資料屬於哪一種上層協定?
解答 要找到TTL 值,我們要跳8 個位元組,TTL 在第九位元組為01,表示這個封包只能再旅行一個站。協定欄為TTL 的下一個位元組,其值為02 表示上層的協定是IGMP。
Protocol (協定) • 記錄上層所使用的協定。
Header Checksum (表頭錯誤檢查碼) • 來源裝置先針對資料進行數學函數運算, 得到的結果即是錯誤檢查碼。 • 目的裝置對資料進行同樣的函數運算, 將結果與來源的錯誤檢查碼作核對。若兩者相同, 代表資料正確無誤。
Header Checksum 的檢查範圍 • IP 只針對 IP 表頭進行檢查, 並不會檢查 IP Payload 的正確性。 • IP Payload 正確性應由上層的協定來檢查。 • IP 封包所經過的每部路由器都必須執行錯誤檢查。 • 路由器核對 Checksum 發現不符時, 會將此 IP 封包丟棄。
Source Address (來源裝置的 IP位址) • 記錄來源裝置的 IP 位址, 佔 32 Bits。 • Source Address 及以下的 Destination Address 欄位, 可說是 IP 表頭中最重要的資訊。
Destination Address(目的裝置的 IP位址) • 記錄目的裝置的 IP 位址, 佔 32 Bits 。
Options 與 Padding • 此 2 欄位為選擇性, 提供 IP 封包功能擴充的可能性。 • 所有額外功能都記錄在 Options 欄位。 • 由於 Options 欄位長度不一定是 4 Bytes 的倍數。為讓整個 IP 封包的長度為 4 Bytes 的倍數, 因此再用不固定長度的 Padding 欄位, 讓 Options 與 Padding 加起來剛好是 4 Bytes 的倍數。
擷取 IP封包-1 • 以一個 FTP 協定的封包作為範例:
擷取 IP封包-2 1. Version:4 代表此 IP 封包的版本為 IPv4。 2. Header Length:IP 表頭的長度為 20 Bytes。 3. Precedence:優先等級為 Routine, 即最低的等級。 4. Type of Service:Normal Service 代表 Delay、Throughput、Reliability、Cost 等欄位皆設為 Normal。 5. Total Length:IP 封包的長度。因為此例是在乙太網路上傳送的 IP 封包, 因此長度為 1500 Bytes。