第 6 章 通訊協定
-
Upload
curran-glass -
Category
Documents
-
view
37 -
download
1
description
Transcript of 第 6 章 通訊協定
1
第 6 章 通訊協定
Internet Protocol (IP)
2
IP 簡介
IP 位於 Network 層。 對上可載送 Transport 層各種協定的資訊 , 例
如: TCP 、 UDP 等等。 對下可將 IP 封包放到 Link 層 , 透過乙太網
路、 Token Ring 、 FDDI 、 X.25 、 Frame Relay 等等各種規格的技術來傳送。
3
IP 所提供的服務
IP 封包的傳送。 IP 封包的切割與重組。
4
傳送 IP 封包
要將 IP 封包從來源裝置傳送到目的裝置 , 必須依賴以下兩種機制: IP 位址 IP 路由 (IP Routing)
5
IP 位址
IP 位址如同現實生活中的地址。 所有使用 IP 的裝置 , 至少都必須有一個獨一
無二的 IP 位址 , IP 封包才能正確送達目的裝置。
6
誰負責分派 IP 位址?
負責分派 IP 位址的最高機構為 Internet Corpor
ation for Assigned Names and Numbers (ICANN, http://www.icann.org/ ) 。
ICANN 依地區與國家 , 授權給公正的單位來執行 IP 位址分派的工作。
台灣是由財團法人臺灣網路資訊中心 (TWNIC, http://www.twnic.net/ ) 負責。
7
IP 路由 Internet 可視為由許多個網路連結起來所形成的大型網路。
必須透過 IP 路由 (IP Routing) 的轉送 , 才能將 IP 封包經過一個個的網路 , 送達目的地。
8
路由器
在實體上 , 每個網路是透過路由器 (Router) 來相互連接。
路由器的功能是為 IP 封包選擇傳送的路徑。 IP 封包必須靠沿途各路由器的通力合作 , 才
能到達目的地。 IP 路由的過程中 , 是由路由器負責選擇路徑 ,
而 IP 封包則是處於被動的狀態。
9
Connectionless 的傳送特性
IP 封包使用 Connectionless 傳送方式。 來源裝置不必理會目的裝置是否已準備好 , 只
管將 IP 封包逐一送出即可。 目的裝置是否正確收到每個封包 , 則是由上層
的協定 ( 例如: TCP) 來負責檢查。
10
切割與重組 IP 封包
路由器必須將過長的封包加以切割 , 以便能在 MTU 較小的網路上傳輸。
切割後的 IP 封包 , 會由目的裝置重組 , 恢復成原來 IP 封包的模樣。
每一種 Data Link 層的技術 , 都有其所能傳輸的最大封包長度 (MTU) :
11
IP 在 TCP/IP 中的位置
12
IP 封包
IP 表頭: 記錄有關 IP 位址、路由、封包識別等資訊。
長度為 4 Bytes 的倍數 , 最短為 20 Bytes, 最長可達 60 Bytes 。
IP Payload : 載送上層協定的封包。長度最短為 8 Bytes, 最
長可達 65515 Bytes 。
13
IP 封包的包裝 IP 對上可接受 Transport 層協定所交付的
封包 , 形成 IP Payload :
對下則將整個 IP 封包交付給 Data Link 層的協定 , 包裝後直接在介質上傳送:
14
IP 表頭內容
15
Version ( 版本 )
佔 4 Bits, 記錄 IP 的版本編號。 目前最常見的 IP 版本為 IP Version 4, 亦即
第 4 版 , 欄位值為 4 ( 十進位 ) 或 0100 ( 二進位 ) 。後續版本為 IP Version 6, 也就是第 6 版 , 但目前仍不普及。
16
IHL ( 表頭長度 )
IHL ( Internet Header Length ) 用來定義 IP 表頭的長度。
由於 IP 表頭長度並不固定 , 因此有必要記載其長度。
以 4 Bytes 為基本單位。例如: IHL 欄位值為 0101 ( 二進位 ) 時 , 換算為十進位為 5, 即代表 IP 表頭的長度為 5 x 4 = 20 Bytes 。
17
範例 範例 11
某到達之 IP 封包其前 8 位元為:
01000010
接收者丟棄該封包為什麼?
18
解答
此封包中有錯誤。最左的 4 位元 0100 代表版本這部分正確。後面 4 位元 (0010) 代表標頭長度為 2 x 4=8 ,這是錯誤的,因為最小的標頭長度,需為 20 位元組,這封包在傳輸過程有被破壞過。
19
範例 範例 22
某 IP 封包其 IHL 為 1000 ( 2 進制)問此封包攜帶多少位元組的選項?
20
解答
IHL 值為 8 ,代表標頭的總長為 32 ( 8 x
4 )位元組。最前面 20 位元組為主要標頭,剩下的 12 位元組為選項。
21
Type of Service ( 服務類型 )
路由器可根據 Type of Service 中的 6 項參數 , 決定如何處理 IP 封包: Precedence
用來決定 IP 封包的優先等級。 Delay 、 Throughput 、 Reliability 、 Cost
提供路由器選擇路徑時的參考。 Reserved
保留未使用。
22
Type of Service 的參數位置
23
Precedence ( 優先等級 )
數值愈大 , 代表 IP 封包優先等級愈高。 平常的 IP 封包一律使用 0, 也就是優先等級最低的
Routine 。
24
Delay (延遲性 )
用來定義 IP 封包對於延遲性的要求。 Low Delay 代表 IP 封包儘量不要延遲。 具有即時性需求的應用程式 ( 如影音會議 ) 會將 Dela
y 參數設為 1, 一般 IP 封包則設為 0 。
25
Throughput ( 傳輸量 )
用來定義 IP 封包對於頻寬的要求。 High Throughput 代表路由器應儘量選擇頻寬較高的
傳遞路徑來傳送此封包。 傳輸資料量大的應用程式 , 會將此參數設為 1, 至於
一般的 IP 封包皆設為 0 。
26
Reliability ( 可靠度 )
定義 IP 封包對於路徑可靠度的要求。 High Reliability 代表路由器應儘量選擇可靠度較高的
路徑來傳送此封包。 若應用程式希望在傳送過程中儘量減少 IP 封包遺失 ,
會將 Reliability 參數設為 1 。一般的 IP 封包皆設為 0 。
27
Cost ( 成本 )
定義 IP 封包對於路徑成本的要求。 Low Cost 代表路由器應儘量選擇成本較低的傳遞路徑
來傳送此封包。 若傳輸的資料不是很重要 , 則應用程式可將 Cost 參
數設為 1 。一般的 IP 封包皆設為 0 。
28
Type of Service 的重要觀念
1. 路由器必須具解讀這些參數的能力。2. 路由器必須有多條路徑可供選擇 , Delay 、 Th
roughput 、 Reliability 、 Cost 等參數才會有作用。
3. 當路由器有多條路徑可供選擇時 , 路由器必須 『知道』 每條路徑的特性。
路由器必須具備以下條件 , Type of Service 參數才能發揮作用:
29
各應用程式的Type of Service 建議值
30
Total Length (總長度 )
記錄整個 IP 封包的長度 , 單位為 Byte 。 整個 IP 封包最大可達 1500 Bytes, 所以 此
欄位的最大值即為 1500 ( 十進位 ) 。
31
Identification ( 識別碼 )
記錄 IP 封包的識別碼。 識別碼由來源裝置決定 , 按照 IP 封包發出的順序遞增 1 。
每個 IP 封包到達目的裝置的先後順序可能與出發時的順序不同。目的裝置可利用此欄位 , 判斷 IP 封包原來的順序 , 並予以重組。
32
Flag ( 封包切割標示 )
與 IP 封包的切割與重組有關。總共有 3 個參數 , 每參數佔 1 Bit :
33
DF 參數
定義 IP 封包是否可加以切割。 Don‘t Fragment 代表不允許路由器切割 IP 封包 ( 此
時封包若大於 MTU 值 , 路由器會丟棄此封包 , 並發出 ICMP 訊息通知來源裝置 ) 。
34
MF 參數 定義此 IP fragment 是否為原始封包的最後一
個 IP fragment 。 IP fragment 是切割後所產生的新封包。
Last Fragment 代表此 IP fragment 是原始 IP 封包經切割後 , 所產生的最後 1 個 IP fragment ( 或原始封包未經切割 ) 。
35
Fragment Offset ( 切割重組點 )
用來記錄 IP fragment 所載送的是原始 IP Payload 的哪一段資料。 Fragment Offset 的單位是 8 Bytes 。 因 IP 封包切割後 , 原始封包內 IP Payload
的資料會分散到每個 IP fragment 中 , 因此需要分別註明以便重組。
36
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 :
37
Fragment Offset 範例 -2
38
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 為單位 ) 。依此類推:
39
詳細分段範例
40
Time to Live (存活時間 )
記錄 IP 封包的 『存活時間』 , 以限制 IP 封包在路由器之間轉送的次數。
當 IP 封包每經過一部路由器時 , 路由器便會將 Time to Live 欄位值減 1 。
當路由器收到此欄位值為 0 的 IP 封包時 , 便直接將之丟棄 , 不再轉送。
41
範例 範例 44
某到達 IP 封包其前面幾個以 16 進制表示數字之為:
45000028000100000102...................
問這個封包還可以經過幾個路由器,而不會被丟掉?其資料屬於哪一種上層協定?
42
解答
要找到 TTL 值,我們要跳 8 個位元組, TT
L 在第九位元組為 01 ,表示這個封包只能再旅行一個站。協定欄為 TTL 的下一個位元組,其值為 02 表示上層的協定是 IGMP 。
43
Protocol ( 協定 )
記錄上層所使用的協定。
44
Header Checksum ( 表頭錯誤檢查碼 )
來源裝置先針對資料進行數學函數運算 , 得到的結果即是錯誤檢查碼。
目的裝置對資料進行同樣的函數運算 , 將結果與來源的錯誤檢查碼作核對。若兩者相同 , 代表資料正確無誤。
45
Header Checksum 的檢查範圍
IP 只針對 IP 表頭進行檢查 , 並不會檢查 IP Payload 的正確性。 IP Payload 正確性應由上層的協定來檢查。
IP 封包所經過的每部路由器都必須執行錯誤檢查。 路由器核對 Checksum 發現不符時 , 會將此 I
P 封包丟棄。
46
Source Address ( 來源裝置的 IP 位址 )
記錄來源裝置的 IP 位址 , 佔 32 Bits 。 Source Address 及以下的 Destination Addre
ss 欄位 , 可說是 IP 表頭中最重要的資訊。
47
Destination Address( 目的裝置的 IP 位址 )
記錄目的裝置的 IP 位址 , 佔 32 Bits 。
48
Options 與 Padding
此 2 欄位為選擇性 , 提供 IP 封包功能擴充的可能性。
所有額外功能都記錄在 Options 欄位。 由於 Options 欄位長度不一定是 4 Bytes 的倍
數。為讓整個 IP 封包的長度為 4 Bytes 的倍數 , 因此再用不固定長度的 Padding 欄位 , 讓 Options 與 Padding 加起來剛好是 4 Bytes 的倍數。
49
擷取 IP 封包 -1
以一個 FTP 協定的封包作為範例:
50
擷取 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 。
51
擷取 IP 封包 -3
6. Identification :此 IP 封包的識別碼。7. 此為 More Fragments 欄位。因為是未經切割的 IP
封包 , 因此為 0 。8. 此為 Don‘t Fragments 欄位。 1 代表傳送過程中不
可切割。9. 因為未經切割 , 所以 Fragment Offset 為 0 。10. Windows 2000 預設的 Time to Live 為 128 。當 I
P 封包通過路由器時 , Time to Live 欄位值會遞減 1 。
52
擷取 IP 封包 -4
11. 記錄 Transport 層所用的協定。 FTP 使用的是 TCP 協定。
12. 這是錯誤檢查碼。每個 IP 封包可能會有不同的錯誤檢查碼。
13. IP 封包來源裝置的 IP 位址。14. IP 封包目的裝置的位址。15. 這並非 IP 表頭的欄位 , 而是網路監視器自行計算
所得的 IP Payload 長度。
53
IPv6 VS IPv4
兩者的差異大量增加 IP 位址: IPv4 的位址是 32bits, IPv6 的位址是 128bits擴大了位址的容量
表頭格式的簡化: IPv6 將 IPv4 的表頭作了 大幅的修改,捨棄了部分的欄位,更作了 最佳的處理
加強表頭的延伸能力和選項部分: IPv6改 善了 IPv4 在表頭延伸上的限制,也提高了 選項欄位的使用彈性,以適用於未來的發 展
54
IPv6 VS IPv4
新增加流向標記 (Flow Labeling) 的能力: 流向標記可以要求流向特定的處理 ( 例如 即時的服務 )
驗證與隱私的能力:為了資料安全 IPv6 使 用延伸能力來達成驗證,確保隱私和資料 完整的處理能力