Chapter 12 傳輸控制通訊協定

117
© The McGraw-Hill Companies, Inc., 2006 © The McGraw-Hill Companies, Inc., 2007 Chapter 12 傳傳傳傳傳傳傳傳

description

Chapter 12 傳輸控制通訊協定. 目標. 本章結束後,您將能夠: 可以去列舉並了解 TCP 所提供的服務 了解 TCP 的流量控制、錯誤控制、及壅塞控制 熟悉 TCP 區段中的各欄位 了解預接式連線的各階段 了解 TCP 的狀態轉換圖 熟悉 TCP 的選項. 12.1 TCP 的服務. 我們先看看有哪些應用層的程序使用 TCP 所提供的服務。. 本節所討論的主題包括:. 程序對程序的通訊 串流傳送服務 全雙工通訊 預接式服務 可靠性服務. 範例 1. - PowerPoint PPT Presentation

Transcript of Chapter 12 傳輸控制通訊協定

Page 1: Chapter 12 傳輸控制通訊協定

© The McGraw-Hill Companies, Inc., 2006© The McGraw-Hill Companies, Inc., 2007

Chapter 12傳輸控制通訊協定

Page 2: Chapter 12 傳輸控制通訊協定

12 - 2

© The McGraw-Hill Companies, Inc., 2006© The McGraw-Hill Companies, Inc., 2007

目標

本章結束後,您將能夠: 可以去列舉並了解 TCP 所提供的服務 了解 TCP 的流量控制、錯誤控制、及壅塞控制 熟悉 TCP 區段中的各欄位 了解預接式連線的各階段 了解 TCP 的狀態轉換圖 熟悉 TCP 的選項

Page 3: Chapter 12 傳輸控制通訊協定

12 - 3

© The McGraw-Hill Companies, Inc., 2006© The McGraw-Hill Companies, Inc., 2007

Page 4: Chapter 12 傳輸控制通訊協定

12 - 4

© The McGraw-Hill Companies, Inc., 2006© The McGraw-Hill Companies, Inc., 2007

12.1 TCP 的服務 我們先看看有哪些應用層的程序使用 TCP 所提供的服務。

本節所討論的主題包括: 程序對程序的通訊 串流傳送服務 全雙工通訊 預接式服務 可靠性服務

Page 5: Chapter 12 傳輸控制通訊協定

12 - 5

© The McGraw-Hill Companies, Inc., 2006© The McGraw-Hill Companies, Inc., 2007

Page 6: Chapter 12 傳輸控制通訊協定

12 - 6

© The McGraw-Hill Companies, Inc., 2006© The McGraw-Hill Companies, Inc., 2007

範例 1

就我們在第 11 章所說的,在 UNIX 系統中,公認埠號被儲存在 /etc/services 的這個檔案中。檔案中的每一行給予某個服務的名稱及對應的公認埠號。我們可以使用 grep 的系統工具來擷取指定應用所對應的那一行或多行的資料。下面顯示 FTP 的埠號:

Page 7: Chapter 12 傳輸控制通訊協定

12 - 7

© The McGraw-Hill Companies, Inc., 2006© The McGraw-Hill Companies, Inc., 2007

Page 8: Chapter 12 傳輸控制通訊協定

12 - 8

© The McGraw-Hill Companies, Inc., 2006© The McGraw-Hill Companies, Inc., 2007

Page 9: Chapter 12 傳輸控制通訊協定

12 - 9

© The McGraw-Hill Companies, Inc., 2006© The McGraw-Hill Companies, Inc., 2007

Page 10: Chapter 12 傳輸控制通訊協定

12 - 10

© The McGraw-Hill Companies, Inc., 2006© The McGraw-Hill Companies, Inc., 2007

12.2 TCP 的特色前面章節已經提過 TCP 所提供的服務,而我們會在本節中簡短的概述一下 TCP 的幾項特點。

本節所討論的主題包括: 編號系統 流量控制 錯誤控制 壅塞控制

Page 11: Chapter 12 傳輸控制通訊協定

12 - 11

© The McGraw-Hill Companies, Inc., 2006© The McGraw-Hill Companies, Inc., 2007

每條連線所傳送的位元組都被 TCP 編號,第一個號碼是由亂數產生而來。

請注意:請注意:

Page 12: Chapter 12 傳輸控制通訊協定

12 - 12

© The McGraw-Hill Companies, Inc., 2006© The McGraw-Hill Companies, Inc., 2007

範例 2

解答以下是每個區段的序號:

想像某一 TCP 連線傳送一個 5,000 位元組的檔案。第一個位元組號碼為 10,001 ,如果資料被分成 5 個區段送出,每個區段各自攜帶 1,000 個位元組,請問每一個區段的序號為何?

Page 13: Chapter 12 傳輸控制通訊協定

12 - 13

© The McGraw-Hill Companies, Inc., 2006© The McGraw-Hill Companies, Inc., 2007

區段序號欄的值就是該區段的第一個位元組資料編號。

請注意:請注意:

Page 14: Chapter 12 傳輸控制通訊協定

12 - 14

© The McGraw-Hill Companies, Inc., 2006© The McGraw-Hill Companies, Inc., 2007

區段的回應欄之值定義預期接收的下一個位元組,其回應號碼是累計的。

請注意:請注意:

Page 15: Chapter 12 傳輸控制通訊協定

12 - 15

© The McGraw-Hill Companies, Inc., 2006© The McGraw-Hill Companies, Inc., 2007

12.3 區段 在 TCP 中的一個封包稱為一個區段 ( segment ) 。

本節所討論的主題包括: 格式 封裝

Page 16: Chapter 12 傳輸控制通訊協定

12 - 16

© The McGraw-Hill Companies, Inc., 2006© The McGraw-Hill Companies, Inc., 2007

Page 17: Chapter 12 傳輸控制通訊協定

12 - 17

© The McGraw-Hill Companies, Inc., 2006© The McGraw-Hill Companies, Inc., 2007

Page 18: Chapter 12 傳輸控制通訊協定

12 - 18

© The McGraw-Hill Companies, Inc., 2006© The McGraw-Hill Companies, Inc., 2007

Page 19: Chapter 12 傳輸控制通訊協定

12 - 19

© The McGraw-Hill Companies, Inc., 2006© The McGraw-Hill Companies, Inc., 2007

Page 20: Chapter 12 傳輸控制通訊協定

12 - 20

© The McGraw-Hill Companies, Inc., 2006© The McGraw-Hill Companies, Inc., 2007

TCP 的檢查碼機制是強制執行的。

請注意:請注意:

Page 21: Chapter 12 傳輸控制通訊協定

12 - 21

© The McGraw-Hill Companies, Inc., 2006© The McGraw-Hill Companies, Inc., 2007

Page 22: Chapter 12 傳輸控制通訊協定

12 - 22

© The McGraw-Hill Companies, Inc., 2006© The McGraw-Hill Companies, Inc., 2007

12.4 TCP 連線 TCP 屬於預接式 ( connection-oriented ) 的傳輸協定,它在來源端與目的端之間建立一條虛擬路徑,所有屬於相同訊息的區段,就依這條虛擬路徑傳送。預接式的傳輸需要以下三個階段:連線的建立、資料的傳輸、及連線的結束。

本節所討論的主題包括: 連線的建立 資料的傳輸 連線的結束

Page 23: Chapter 12 傳輸控制通訊協定

12 - 23

© The McGraw-Hill Companies, Inc., 2006© The McGraw-Hill Companies, Inc., 2007

Page 24: Chapter 12 傳輸控制通訊協定

12 - 24

© The McGraw-Hill Companies, Inc., 2006© The McGraw-Hill Companies, Inc., 2007

SYN 區段並沒有攜帶任何的資料,但是它會消耗 1 個序號。

請注意:請注意:

Page 25: Chapter 12 傳輸控制通訊協定

12 - 25

© The McGraw-Hill Companies, Inc., 2006© The McGraw-Hill Companies, Inc., 2007

SYN+ACK 區段並沒有攜帶任何的資料,但是它也會消耗 1 個序號。

請注意:請注意:

Page 26: Chapter 12 傳輸控制通訊協定

12 - 26

© The McGraw-Hill Companies, Inc., 2006© The McGraw-Hill Companies, Inc., 2007

ACK 區段並沒有攜帶任何的資料,它也不會消耗任何的序號。

請注意:請注意:

Page 27: Chapter 12 傳輸控制通訊協定

12 - 27

© The McGraw-Hill Companies, Inc., 2006© The McGraw-Hill Companies, Inc., 2007

Page 28: Chapter 12 傳輸控制通訊協定

12 - 28

© The McGraw-Hill Companies, Inc., 2006© The McGraw-Hill Companies, Inc., 2007

如果 FIN 區段沒有攜帶任何的資料時,它只會消耗 1 個序號。

請注意:請注意:

Page 29: Chapter 12 傳輸控制通訊協定

12 - 29

© The McGraw-Hill Companies, Inc., 2006© The McGraw-Hill Companies, Inc., 2007

Page 30: Chapter 12 傳輸控制通訊協定

12 - 30

© The McGraw-Hill Companies, Inc., 2006© The McGraw-Hill Companies, Inc., 2007

如果 FIN+ACK 區段沒有攜帶任何的資料時,它只會消耗 1 個序號。

請注意:請注意:

Page 31: Chapter 12 傳輸控制通訊協定

12 - 31

© The McGraw-Hill Companies, Inc., 2006© The McGraw-Hill Companies, Inc., 2007

Page 32: Chapter 12 傳輸控制通訊協定

12 - 32

© The McGraw-Hill Companies, Inc., 2006© The McGraw-Hill Companies, Inc., 2007

12.5 狀態轉換圖 要把連線建立、結束、及資料傳送等各種可能發生的事件追蹤的很好, TCP 軟體是以有限狀態機 ( finite state machine ) 的方式實現。

本節所討論的主題包括: 範例

Page 33: Chapter 12 傳輸控制通訊協定

12 - 33

© The McGraw-Hill Companies, Inc., 2006© The McGraw-Hill Companies, Inc., 2007

Page 34: Chapter 12 傳輸控制通訊協定

12 - 34

© The McGraw-Hill Companies, Inc., 2006© The McGraw-Hill Companies, Inc., 2007

Page 35: Chapter 12 傳輸控制通訊協定

12 - 35

© The McGraw-Hill Companies, Inc., 2006© The McGraw-Hill Companies, Inc., 2007

Page 36: Chapter 12 傳輸控制通訊協定

12 - 36

© The McGraw-Hill Companies, Inc., 2006© The McGraw-Hill Companies, Inc., 2007

一般情況下, MSL 的值介於 30 秒到 1 分鐘之間。

請注意:請注意:

Page 37: Chapter 12 傳輸控制通訊協定

12 - 37

© The McGraw-Hill Companies, Inc., 2006© The McGraw-Hill Companies, Inc., 2007

Page 38: Chapter 12 傳輸控制通訊協定

12 - 38

© The McGraw-Hill Companies, Inc., 2006© The McGraw-Hill Companies, Inc., 2007

Page 39: Chapter 12 傳輸控制通訊協定

12 - 39

© The McGraw-Hill Companies, Inc., 2006© The McGraw-Hill Companies, Inc., 2007

Page 40: Chapter 12 傳輸控制通訊協定

12 - 40

© The McGraw-Hill Companies, Inc., 2006© The McGraw-Hill Companies, Inc., 2007

Page 41: Chapter 12 傳輸控制通訊協定

12 - 41

© The McGraw-Hill Companies, Inc., 2006© The McGraw-Hill Companies, Inc., 2007

Page 42: Chapter 12 傳輸控制通訊協定

12 - 42

© The McGraw-Hill Companies, Inc., 2006© The McGraw-Hill Companies, Inc., 2007

12.6 流量控制 流量控制 ( flow control ) 用來管控來源端在收到目的端回應之前能夠送出的資料量。 TCP 定義了一個窗口在緩衝器中,這個緩衝器儲存了已經從應用程式傳遞過來,並準備好要被傳送的資料。

本節所討論的主題包括: 滑動窗口協定 傻瓜視窗症候群

Page 43: Chapter 12 傳輸控制通訊協定

12 - 43

© The McGraw-Hill Companies, Inc., 2006© The McGraw-Hill Companies, Inc., 2007

Page 44: Chapter 12 傳輸控制通訊協定

12 - 44

© The McGraw-Hill Companies, Inc., 2006© The McGraw-Hill Companies, Inc., 2007

滑動窗口讓傳輸更有效率,也用來控制資料的流量,

接收端不會因為接收太多的資料而無法消化,TCP 的滑動窗口是以位元組為計算單位。

請注意:請注意:

Page 45: Chapter 12 傳輸控制通訊協定

12 - 45

© The McGraw-Hill Companies, Inc., 2006© The McGraw-Hill Companies, Inc., 2007

範例 3

如果接收端 ( B 主機 ) 擁有一個 5,000 位元組大的緩衝器,並且已接收 1,000 個位元組的資料但還沒有處理。請問 A 主機之接收端窗口 ( rwnd ) 的值為何?

解答

rwnd = 5,000 – 1,000 = 4,000 。B 主機在它的緩衝器滿出來之前還可以接收 4,000 個位元組。

B 主機會將這個值公布在下一個要傳給 A 的區段中。

Page 46: Chapter 12 傳輸控制通訊協定

12 - 46

© The McGraw-Hill Companies, Inc., 2006© The McGraw-Hill Companies, Inc., 2007

範例 4

如果 rwnd 的值為 3,000 個位元組,而 cwnd 的值為 3,500 個位元組,請問 A 主機之窗口大小為何?

解答

窗口大小為 rwnd 和 cwnd 中較小的那個值,所以等於 3,000 個位元組。

Page 47: Chapter 12 傳輸控制通訊協定

12 - 47

© The McGraw-Hill Companies, Inc., 2006© The McGraw-Hill Companies, Inc., 2007

範例 5 圖 12.21 說明了一個虛構的滑動窗口之範例。 傳送端已經傳送到第 202 號的位元組資料。我們假設

cwnd 等於 20 ( 實際上這個值可能等於上千個位元組 ) 。 接收端已經傳送一個 200 號的回應號碼,以及 9 個位

元組的 rwnd ( 實際上這個值可能等於上千個位元組 ) 。 傳送端窗口大小為 rwnd 和 cwnd 中較小的那個值,所

以等於 9 個位元組。 第 200 到 202 號的位元組資料已經傳送,但是尚未被

回應。第 203 到 208 號的位元組資料可以被傳送,而不需要擔心有關回應與否。第 209 號以上的位元組資料還不能被傳送。

Page 48: Chapter 12 傳輸控制通訊協定

12 - 48

© The McGraw-Hill Companies, Inc., 2006© The McGraw-Hill Companies, Inc., 2007

Page 49: Chapter 12 傳輸控制通訊協定

12 - 49

© The McGraw-Hill Companies, Inc., 2006© The McGraw-Hill Companies, Inc., 2007

範例 6

在圖 12.21 中,傳送端接收到一個封包,此封包內含有 202 號的回應號碼及 rwnd=9 等資訊。主機已經將 203 、 204 和 205 號的位元組資料傳送出去。 cwnd 的值仍然是 20 ,請說明新的窗口情況。

解答

圖 12.22 說明了新的窗口。注意,在這種情況下,窗口左邊所關閉的位元組個數與右邊所開啟的位元組個數是相同的,窗口的大小並沒有被更動。而 202 號的回應號碼表示第 200 和 201 號的位元組資料已經被接收,傳送端不需要再去擔心它們了,窗口可以滑過它們了。

Page 50: Chapter 12 傳輸控制通訊協定

12 - 50

© The McGraw-Hill Companies, Inc., 2006© The McGraw-Hill Companies, Inc., 2007

Page 51: Chapter 12 傳輸控制通訊協定

12 - 51

© The McGraw-Hill Companies, Inc., 2006© The McGraw-Hill Companies, Inc., 2007

範例 7

在圖 12.22 中,傳送端接收到一個封包,此封包內含有 206號的回應號碼及 rwnd=12 等資訊。主機並沒有傳送新的位元組資料。 cwnd 的值仍然是 20 ,請說明新的窗口情況。

解答

rwnd 的值小與 cwnd ,所以窗口大小為 12 。圖 12.23 說明了新的窗口情況。注意,窗口的右邊開啟 7 個位元組,窗口的左邊關閉了 4 個位元組;窗口的大小由原本的 9 增加到 12 。

Page 52: Chapter 12 傳輸控制通訊協定

12 - 52

© The McGraw-Hill Companies, Inc., 2006© The McGraw-Hill Companies, Inc., 2007

Page 53: Chapter 12 傳輸控制通訊協定

12 - 53

© The McGraw-Hill Companies, Inc., 2006© The McGraw-Hill Companies, Inc., 2007

範例 8

在圖 12.23 中,傳送端接收到一個封包,此封包內含有 210 號的回應號碼及 rwnd=5 等資訊。主機已經將 206 、 207 、208 和 209 號的位元組資料傳送出去。 cwnd 的值仍然是 20 ,請說明新的窗口情況。

解答

rwnd 的值小與 cwnd ,所以窗口大小為 5 。圖 12.24 說明了這樣的情況,注意,這種情況在很多的實作中是不被允許的,儘管傳送端還沒有送出 215 到 217 號的位元組資料,但是接收端並不知道這件事。

Page 54: Chapter 12 傳輸控制通訊協定

12 - 54

© The McGraw-Hill Companies, Inc., 2006© The McGraw-Hill Companies, Inc., 2007

Page 55: Chapter 12 傳輸控制通訊協定

12 - 55

© The McGraw-Hill Companies, Inc., 2006© The McGraw-Hill Companies, Inc., 2007

範例 9

接收端要如何避免先前範例中窗口大小被收縮的情況發生?

解答

接收端需要去記錄最後的回應號碼及最後的 rwnd 值。如果我們將回應號碼與 rwnd 相加的話會得到接在窗口右牆之後的位元組編號。如果我們希望去防止右牆往左移動 ( 收縮 ) 的情況發生,我們必須保持下面的關係:

Page 56: Chapter 12 傳輸控制通訊協定

12 - 56

© The McGraw-Hill Companies, Inc., 2006© The McGraw-Hill Companies, Inc., 2007

為了去避免收縮傳送端之窗口,接收端必須等待其緩衝器中有更多的空間被釋放。

請注意:請注意:

Page 57: Chapter 12 傳輸控制通訊協定

12 - 57

© The McGraw-Hill Companies, Inc., 2006© The McGraw-Hill Companies, Inc., 2007

有關滑動窗口的幾個觀念: 窗口大小等於 rwnd 和 cwnd 中較小的那個值。 來源端不需要將整個窗口大小的資料一次送完。 窗口的大小可由接收端的要求而開啟或關閉,但是不

應該被收縮。 接收端可在任何時候送出回應,只要它不會造成窗口

收縮的情況。 接收端可以暫時把窗口關閉;然而,在窗口關閉後,

傳送端還是可以繼續傳送僅包含 1 位元組資料的區段。

請注意:請注意:

Page 58: Chapter 12 傳輸控制通訊協定

12 - 58

© The McGraw-Hill Companies, Inc., 2006© The McGraw-Hill Companies, Inc., 2007

12.7 錯誤控制 TCP 使用錯誤控制 ( error control ) 的機制來提供可靠性。錯誤控制包含了偵測受損的區段、遺失的區段、亂序的區段、及重複的區段之各種機制,錯誤控制當然也包含將偵測到的問題加以修正的機制。 TCP 使用 3 種簡單的工具來達到錯誤偵測與更正的功能,分別是檢查碼 ( checksum ) 、回應 ( acknowledgement ) 、及計時控制 ( time-out ) 。

本節所討論的主題包括: 檢查碼 回應 回應種類

重送 亂序的區段 相關範例

Page 59: Chapter 12 傳輸控制通訊協定

12 - 59

© The McGraw-Hill Companies, Inc., 2006© The McGraw-Hill Companies, Inc., 2007

ACK 區段並沒有消耗任何序號,所以不需要被回應。

請注意:請注意:

Page 60: Chapter 12 傳輸控制通訊協定

12 - 60

© The McGraw-Hill Companies, Inc., 2006© The McGraw-Hill Companies, Inc., 2007

在最新的實作中,重送的動作會發生在重送計時器的時間到期時,或是已經有 3 個重複的 A

CK 抵達時。

請注意:請注意:

Page 61: Chapter 12 傳輸控制通訊協定

12 - 61

© The McGraw-Hill Companies, Inc., 2006© The McGraw-Hill Companies, Inc., 2007

TCP 不會針對 ACK 區段去設定重送計時器。

請注意:請注意:

Page 62: Chapter 12 傳輸控制通訊協定

12 - 62

© The McGraw-Hill Companies, Inc., 2006© The McGraw-Hill Companies, Inc., 2007

資料有可能不照順序抵達,並且被接收端的 TCP 暫存起來,但是 TCP 保證不會有亂序的區

段被傳遞到上層的程序。

請注意:請注意:

Page 63: Chapter 12 傳輸控制通訊協定

12 - 63

© The McGraw-Hill Companies, Inc., 2006© The McGraw-Hill Companies, Inc., 2007

Page 64: Chapter 12 傳輸控制通訊協定

12 - 64

© The McGraw-Hill Companies, Inc., 2006© The McGraw-Hill Companies, Inc., 2007

Page 65: Chapter 12 傳輸控制通訊協定

12 - 65

© The McGraw-Hill Companies, Inc., 2006© The McGraw-Hill Companies, Inc., 2007

接收端的 TCP 只會傳遞已經排序好的資料給上層的程序。

請注意:請注意:

Page 66: Chapter 12 傳輸控制通訊協定

12 - 66

© The McGraw-Hill Companies, Inc., 2006© The McGraw-Hill Companies, Inc., 2007

Page 67: Chapter 12 傳輸控制通訊協定

12 - 67

© The McGraw-Hill Companies, Inc., 2006© The McGraw-Hill Companies, Inc., 2007

Page 68: Chapter 12 傳輸控制通訊協定

12 - 68

© The McGraw-Hill Companies, Inc., 2006© The McGraw-Hill Companies, Inc., 2007

Page 69: Chapter 12 傳輸控制通訊協定

12 - 69

© The McGraw-Hill Companies, Inc., 2006© The McGraw-Hill Companies, Inc., 2007

如果回應的遺失沒有適當的處理,可能會產生死結 ( deadlock ) 的情況。

請注意:請注意:

Page 70: Chapter 12 傳輸控制通訊協定

12 - 70

© The McGraw-Hill Companies, Inc., 2006© The McGraw-Hill Companies, Inc., 2007

12.8 壅塞控制 壅塞控制 ( congestion control ) 會提到關於壅塞的控制方法與技巧,讓網路的負載能被控制在其容量之內。

本節所討論的主題包括: 網路效能 壅塞控制機制 TCP 中的壅塞控制

Page 71: Chapter 12 傳輸控制通訊協定

12 - 71

© The McGraw-Hill Companies, Inc., 2006© The McGraw-Hill Companies, Inc., 2007

Page 72: Chapter 12 傳輸控制通訊協定

12 - 72

© The McGraw-Hill Companies, Inc., 2006© The McGraw-Hill Companies, Inc., 2007

Page 73: Chapter 12 傳輸控制通訊協定

12 - 73

© The McGraw-Hill Companies, Inc., 2006© The McGraw-Hill Companies, Inc., 2007

Page 74: Chapter 12 傳輸控制通訊協定

12 - 74

© The McGraw-Hill Companies, Inc., 2006© The McGraw-Hill Companies, Inc., 2007

Page 75: Chapter 12 傳輸控制通訊協定

12 - 75

© The McGraw-Hill Companies, Inc., 2006© The McGraw-Hill Companies, Inc., 2007

在慢速啟動的演算法中,壅塞窗口的大小會以指數方式成長,直到它到達某個門檻值為止。

請注意:請注意:

Page 76: Chapter 12 傳輸控制通訊協定

12 - 76

© The McGraw-Hill Companies, Inc., 2006© The McGraw-Hill Companies, Inc., 2007

Page 77: Chapter 12 傳輸控制通訊協定

12 - 77

© The McGraw-Hill Companies, Inc., 2006© The McGraw-Hill Companies, Inc., 2007

在壅塞避免的演算法中,壅塞窗口的大小會以加法的方式成長,直到壅塞被偵測到為止。

請注意:請注意:

Page 78: Chapter 12 傳輸控制通訊協定

12 - 78

© The McGraw-Hill Companies, Inc., 2006© The McGraw-Hill Companies, Inc., 2007

大部份的實作對壅塞偵測有不同的反應:如果是透過時間到期所偵測,會開始於一個新的慢速啟動階段。

如果是透過三次回應所偵測,會開始於一個新的壅塞避免階段。

請注意:請注意:

Page 79: Chapter 12 傳輸控制通訊協定

12 - 79

© The McGraw-Hill Companies, Inc., 2006© The McGraw-Hill Companies, Inc., 2007

Page 80: Chapter 12 傳輸控制通訊協定

12 - 80

© The McGraw-Hill Companies, Inc., 2006© The McGraw-Hill Companies, Inc., 2007

Page 81: Chapter 12 傳輸控制通訊協定

12 - 81

© The McGraw-Hill Companies, Inc., 2006© The McGraw-Hill Companies, Inc., 2007

12.9 TCP 計時器大部份 TCP 的實作使用了四種計時器來維持運作的平穩性。

本節所討論的主題包括: 重送計時器 持續計時器 維持存活計時器 等候結束計時器

Page 82: Chapter 12 傳輸控制通訊協定

12 - 82

© The McGraw-Hill Companies, Inc., 2006© The McGraw-Hill Companies, Inc., 2007

Page 83: Chapter 12 傳輸控制通訊協定

12 - 83

© The McGraw-Hill Companies, Inc., 2006© The McGraw-Hill Companies, Inc., 2007

在 TCP 中,同一時間下只能處理一個 RTT 的量測程序。

請注意:請注意:

Page 84: Chapter 12 傳輸控制通訊協定

12 - 84

© The McGraw-Hill Companies, Inc., 2006© The McGraw-Hill Companies, Inc., 2007

範例 10

讓我們來看一個假設的範例,圖 12.38 說明了某條連線的一部份,圖中顯示連線的建立及部份的資料傳輸階段。

1.當 SYN 區段傳送出去時, RTTM 、 RTTS 、及 RTTD 尚未有值,而 RTO 的值被設定為 6 秒。這時變數的值如下所示:

2.當 SYN+ACK 區段抵達,其 RTTM 被量測後為 1.5 秒,其變數的值如下所示:

RTO = 6

RTTM = 1.5 RTTS = 1.5RTTD = 1.5 / 2 = 0.75 RTO = 1.5 + 4 . 0.75 = 4.5

Page 85: Chapter 12 傳輸控制通訊協定

12 - 85

© The McGraw-Hill Companies, Inc., 2006© The McGraw-Hill Companies, Inc., 2007

範例 10 ( 續 )

3.當第一個資料區段傳送出去時,一個新的 RTT 量測程序被啟動。請注意,當傳送端傳送 ACK 區段時並不會啟動 RTT 量測程序,因為它不會消耗序號也不會啟動計時器。第二個資料區段也不會啟動 RTT 量測程序,因為已經有一個量測程序正在進行中。最後一個 ACK區段的抵達被用來計算下一個 RTTM 的值。儘管最後一個 ACK 區段是用來回應兩個資料區段 ( 累計式 ) ,它的抵達完成了第一個區段之 RTTM 的值。其變數的值如下所示:

RTTM = 2.5RTTS = 7/8 (1.5) + 1/8 (2.5) = 1.625RTTD = 3/4 (0.75) + 1/4 |1.625 − 2.5| = 0.78RTO = 1.625 + 4 (0.78) = 4.74

Page 86: Chapter 12 傳輸控制通訊協定

12 - 86

© The McGraw-Hill Companies, Inc., 2006© The McGraw-Hill Companies, Inc., 2007

Page 87: Chapter 12 傳輸控制通訊協定

12 - 87

© The McGraw-Hill Companies, Inc., 2006© The McGraw-Hill Companies, Inc., 2007

TCP 在計算新的 RTO 值的時候,並不會考慮一個重送區段的 RTT 值。

請注意:請注意:

Page 88: Chapter 12 傳輸控制通訊協定

12 - 88

© The McGraw-Hill Companies, Inc., 2006© The McGraw-Hill Companies, Inc., 2007

範例 11 圖 12.39 延續先前的範例,有一個重送的情況發生,並使

用 Karn 演算法。 圖中的第一個區段傳送之後卻遺失了。在 4.74 秒之後

RTO 計時器的時間到期。 此區段會被重送,並且其 RTO 計時器被設定為 9.48 秒

( 先前 RTO 值的兩倍 ) 。 這一次在時間到期之前就收到 ACK 區段了。 我們會等到傳送新的區段及接收 ACK 才會再一次的計算 RTO 的值 ( Karn演算法 ) 。

Page 89: Chapter 12 傳輸控制通訊協定

12 - 89

© The McGraw-Hill Companies, Inc., 2006© The McGraw-Hill Companies, Inc., 2007

Page 90: Chapter 12 傳輸控制通訊協定

12 - 90

© The McGraw-Hill Companies, Inc., 2006© The McGraw-Hill Companies, Inc., 2007

12.10 選項 TCP 標頭最多包含 40 位元組的選項 ( option ) 資訊,這些選項運送額外的資訊給目的端或是做為選項對齊的功能。

Page 91: Chapter 12 傳輸控制通訊協定

12 - 91

© The McGraw-Hill Companies, Inc., 2006© The McGraw-Hill Companies, Inc., 2007

Page 92: Chapter 12 傳輸控制通訊協定

12 - 92

© The McGraw-Hill Companies, Inc., 2006© The McGraw-Hill Companies, Inc., 2007

Page 93: Chapter 12 傳輸控制通訊協定

12 - 93

© The McGraw-Hill Companies, Inc., 2006© The McGraw-Hill Companies, Inc., 2007

EOP 只能被使用一次。

請注意:請注意:

Page 94: Chapter 12 傳輸控制通訊協定

12 - 94

© The McGraw-Hill Companies, Inc., 2006© The McGraw-Hill Companies, Inc., 2007

Page 95: Chapter 12 傳輸控制通訊協定

12 - 95

© The McGraw-Hill Companies, Inc., 2006© The McGraw-Hill Companies, Inc., 2007

NOP 可以被使用超過一次。

請注意:請注意:

Page 96: Chapter 12 傳輸控制通訊協定

12 - 96

© The McGraw-Hill Companies, Inc., 2006© The McGraw-Hill Companies, Inc., 2007

Page 97: Chapter 12 傳輸控制通訊協定

12 - 97

© The McGraw-Hill Companies, Inc., 2006© The McGraw-Hill Companies, Inc., 2007

MSS 的值於連線建立時被決定,並且在這條連線運作期間都不會改變。

請注意:請注意:

Page 98: Chapter 12 傳輸控制通訊協定

12 - 98

© The McGraw-Hill Companies, Inc., 2006© The McGraw-Hill Companies, Inc., 2007

Page 99: Chapter 12 傳輸控制通訊協定

12 - 99

© The McGraw-Hill Companies, Inc., 2006© The McGraw-Hill Companies, Inc., 2007

窗口調整係數的值只能在連線建立時被決定,並且在這條連線運作期間都不會改變。

請注意:請注意:

Page 100: Chapter 12 傳輸控制通訊協定

12 - 100

© The McGraw-Hill Companies, Inc., 2006© The McGraw-Hill Companies, Inc., 2007

Page 101: Chapter 12 傳輸控制通訊協定

12 - 101

© The McGraw-Hill Companies, Inc., 2006© The McGraw-Hill Companies, Inc., 2007

時間戳記選項的其中一項應用就是用來計算往返時間 ( RTT ) 的值。

請注意:請注意:

Page 102: Chapter 12 傳輸控制通訊協定

12 - 102

© The McGraw-Hill Companies, Inc., 2006© The McGraw-Hill Companies, Inc., 2007

範例 12 圖 12.46 說明了某一端計算往返時間的範例。如果我們要計算另一端的 RTT ,則每件事都要翻轉過來。

傳送端很簡單地將系統時間 ( 例如:從午夜算起的秒數值 ) 填到第一個和第二個區段之時間戳記數值欄位中。

當一個回應區段抵達 ( 第三個區段 ) ,它可以將目前系統時間的值減掉時間戳記回應欄的值,就可以找到目前範例中的 RTT = 12 。

接收端的運作就比較複雜一點,它必須記錄最近一個已傳送的回應號碼 ( 12000 ) 。

接下一張投影片

Page 103: Chapter 12 傳輸控制通訊協定

12 - 103

© The McGraw-Hill Companies, Inc., 2006© The McGraw-Hill Companies, Inc., 2007

範例 12 ( 續 ) 當第一個區段抵達,它包含了位元組編號從 12000 到 1

2099 的資料,而第一個位元組的編號和 lastack 的值相同,所以它將時間戳記的值 ( 4720 ) 複製到 tsrecent 變數中,而 lastack 的值依然保持 12000 ( 沒有新的回應被傳送 ) 。

當第二個區段抵達,因為此區段並沒有包含 lastack 所指定的位元組資料,所以其時間戳記的值會被忽略。當接收端決定要傳送一個累計式的回應 ( 回應編號為 12200 ) 時,它會將 lastack 的值改成 12200 ,並且將 tsrecent 的值填入時間戳記回應欄位。而 tsrecent 的值並不會改變,一直到被一個帶有 12200 位元組資料的新區段 ( 下一個區段 ) 所取代為止。

接下一張投影片

Page 104: Chapter 12 傳輸控制通訊協定

12 - 104

© The McGraw-Hill Companies, Inc., 2006© The McGraw-Hill Companies, Inc., 2007

範例 12 ( 續 ) 請注意,如同範例所示, RTT 的計算是傳送第一個區段

與接收到第三個區段之間的時間差。 RTT 的實際意義是一個封包被傳送與接收到其回應之間

的時間差。第三個區段所攜帶的回應是同時回應第一個區段和第二個區段。

Page 105: Chapter 12 傳輸控制通訊協定

12 - 105

© The McGraw-Hill Companies, Inc., 2006© The McGraw-Hill Companies, Inc., 2007

Page 106: Chapter 12 傳輸控制通訊協定

12 - 106

© The McGraw-Hill Companies, Inc., 2006© The McGraw-Hill Companies, Inc., 2007

時間戳記選項也可用來防止序號回歸 ( Protection Against Wrapped Sequence Numbers, PAWS

) 。

請注意:請注意:

Page 107: Chapter 12 傳輸控制通訊協定

12 - 107

© The McGraw-Hill Companies, Inc., 2006© The McGraw-Hill Companies, Inc., 2007

Page 108: Chapter 12 傳輸控制通訊協定

12 - 108

© The McGraw-Hill Companies, Inc., 2006© The McGraw-Hill Companies, Inc., 2007

範例 13 讓我們來看一下 SACK選項是如何被使用來條列出亂序的

區塊。 在圖 12.48 中,某一端點接收到 5 個資料區段。 第一個區段和第二個區段的順序是連續的,所以有一個累計式 ACK 可以被傳送來報告這兩個區段已經接收。

但是,第 3 、 4 、 5 個區段是亂序抵達的區段,在第二個區段和第三個區段之間有一個間隙,在第四個區段和第五個區段之間也有一個間隙。

接下一張投影片

Page 109: Chapter 12 傳輸控制通訊協定

12 - 109

© The McGraw-Hill Companies, Inc., 2006© The McGraw-Hill Companies, Inc., 2007

範例 13 ( 續 ) 一個 ACK 加上一個 SACK 就可以很明確的告知傳送端

目前的情況。 ACK 的值為 2001 ,代表傳送端不需要再關心位元組編號從 1 到 2000 的資料了。

SACK 有兩個區塊,第一個區塊告知位元組編號從 4001 到 6000 的資料已經亂序抵達了,第二個區塊告知位元組編號從 8001 到 9000 的資料已經亂序抵達了。

這也代表位元組編號從 2001 到 4000 的資料以及位元組編號從 6001 到 8000 的資料已經遺失或被丟棄了,傳送端只需要重新傳送這些位元組資料即可。

Page 110: Chapter 12 傳輸控制通訊協定

12 - 110

© The McGraw-Hill Companies, Inc., 2006© The McGraw-Hill Companies, Inc., 2007

Page 111: Chapter 12 傳輸控制通訊協定

12 - 111

© The McGraw-Hill Companies, Inc., 2006© The McGraw-Hill Companies, Inc., 2007

範例 14 在圖 12.49 的範例中,說明如何使用 ACK 和 SACK 來偵測重複的區段。在這種情況下,我們擁有一些亂序的區段 ( 在一個區塊中 ) 及一個重複的區段。

為了同時去顯示亂序及重複的資料, SACK 使用第一個區塊來顯示重複的資料,使用其它的區塊來顯示亂序的資料。

請注意,只有第一個區塊可以用來顯示重複的區塊。一個很直覺的問題,那就是當傳送端接收到 ACK 和 SACK 的值,它怎麼知道第一個區塊是否是用來顯示重複的區塊 ( 將這個範例與前一個範例相比較 ) 。

答案是如果在第一個區塊中的位元組資料早已經被回應時,當然這個區塊就是一個重複的區塊。

Page 112: Chapter 12 傳輸控制通訊協定

12 - 112

© The McGraw-Hill Companies, Inc., 2006© The McGraw-Hill Companies, Inc., 2007

Page 113: Chapter 12 傳輸控制通訊協定

12 - 113

© The McGraw-Hill Companies, Inc., 2006© The McGraw-Hill Companies, Inc., 2007

範例 15 在圖 12.50 的範例中,展示如果在亂序的區段中有一個區

段被重複時會發生什麼情況。 在這個範例中,有一個區段 ( 4001 : 5000 ) 被重複了,

SACK 選項先宣告這一個被重複的區段,然後才宣告亂序的區塊。

但是這一次重複的區塊尚未被回應,所以我們無法使用前一個範例的方法來判斷第一個區塊是表示重複的區塊,但是因為這個區塊是亂序區塊中的一部份 ( 4001 : 5000 區塊屬於 4001 : 6000 區塊中的一部份 ) ,所以傳送端可以知道它定義的是一個重複的區塊。

Page 114: Chapter 12 傳輸控制通訊協定

12 - 114

© The McGraw-Hill Companies, Inc., 2006© The McGraw-Hill Companies, Inc., 2007

Page 115: Chapter 12 傳輸控制通訊協定

12 - 115

© The McGraw-Hill Companies, Inc., 2006© The McGraw-Hill Companies, Inc., 2007

12.11 TCP套件 我們介紹一個經過簡化,僅呈現其骨幹結構的 TCP套件。 TCP 套件包含了一個稱為傳輸控制區塊 ( transmission control block, TCB ) 的表格、一組計時器、及三個程式模組。

本節所討論的主題包括: 傳輸控制區塊 計時器 主要模組 輸入處理模組 輸出處理模組

Page 116: Chapter 12 傳輸控制通訊協定

12 - 116

© The McGraw-Hill Companies, Inc., 2006© The McGraw-Hill Companies, Inc., 2007

Page 117: Chapter 12 傳輸控制通訊協定

12 - 117

© The McGraw-Hill Companies, Inc., 2006© The McGraw-Hill Companies, Inc., 2007