Issuu on Google+

TCP/IP Stream Control Transmission Protocol

班級: UC104 學號:C1000343 姓名:黃承國

指導老師 :戴致禮


目錄

前序

...........................................................................................................

1

SCTP 技術 多重位址

................................................................................................

2

多重串流

................................................................................................

3

四向交握

................................................................................................

4

封包格式 一般標頭

................................................................................................

5

區塊

................................................................................................

6

總結

................................................................................................

8

參考文獻

................................................................................................

9


前序

隨著網際網路及科技的發展,許多人透過行動設備使用網路進行各項的應用, 由於使用者對於多媒體的服務品質要求越來越高,多媒體的服務品質大都以封包 遺失(Packet Loss)、抖動(Jitter)、延遲(Delay)作為評估的因子。

常用在多媒體傳輸的協定包括有傳輸控制協定(TCP),TCP 雖然提供可靠的傳輸 ,但卻造成較高的延遲,導致傳輸服務品質(QoS)較差。UDP 提供快速的傳輸, 但為較不可靠的傳輸,容易遺失封包。SCTP 結合 TCP 以及 UDP 的優點,SCTP 是串流控制傳輸通訊協定,具有可靠性的新傳輸層通訊協定,SCTP 位於應用層 與網路層之間,提供應用程式與網路運作的程式。

傳輸層協定

SCTP

TCP

UDP

SCTP 服務包括有 (1)程序對程序的通訊 (2)多重串流 (3)多重位址 (4)全雙工通訊 (5)預接式服務 (6)可靠性服務 1


一. SCTP 技術

多重位址

概念是從一台具有多個網路介面的主機,可以通過多個 IP 位址

使用此台主機。在 TCP 中,一個 TCP 連線包含一個來源 IP 位址和一個目的 IP 位址,即使傳送端和接收端為多重位址之主機,兩端在連線中都只能使用其中一 個 IP 位址。

SCTP 導入關聯(association)的概念,可支援多重位址服務(multihoming service), 其傳送端和接收端的主機能夠在一個關聯中定義多個 IP 位址,使用這種容錯, 當某條路徑發生問題時,另外一個介面的路徑仍然可以繼續傳送資料,而不會發 生連線中斷的問題。

2


多重串流 TCP 是屬於一種資料串流導向的通訊協定,用戶端和伺服端之間包含單一個資 料串流,在串流中的任何一個地方發生資料遺失時,將會阻礙其餘資料的傳送。 假設是文字模式我們還可以容許,然而傳送聲音以及影像,就不能接受。

資料區塊串流 TCP

TCP

SCTP 提供允許在一個連線裡提供多重資料串流服務(multistream service)。概念來 自多通道,假設資料只有一個通道傳輸,通道發生阻塞,後面的資料也會跟著阻 塞,達不到 Qos,而現在通道變多了,資料就不容易發生阻塞的情況,服務的品 質也會提升。

資料區塊串流

SCTP

資料區塊串流

SCTP

3


四向交握 在 SCTP 中建立關聯需要四向交握(four-way handshake),一般是用戶端的程式 想要與伺服器的程式建立關聯,使用 SCTP 當作傳輸層通訊協定。其與 TCP 非常 相似,SCTP 伺服器端必須要準備接收任何關聯(被動式開啟)。但是,關聯的建 立必須由用戶端來初始化(主動式開啟) 步驟如下 1.用戶端先傳送第 1 個封包,此封包含有一個 INIT 區塊。這個封包的驗證標籤 (Verification Tag,VT)假如被設為 0,表示驗證標籤尚未定義。INIT 標籤欄位包含 一個從另外一個方向過來的封包會使用到的初始標籤。這個區塊也定義初始 TSN 2.伺服端傳送第 2 個封包,此封包含有一個 INIT ACK 區塊。其驗證標籤(VT) 的數值就是 INIT 區塊當中初始標籤欄位之數值。 3.用戶端傳送第 3 個封包,此封包含有一個 COOKIE ECHO 區塊,用來直接回 應伺服器所傳送的 COOKIE 4.伺服端傳送第 4 個封包,此封包含有一個 COOKIE ACK 區塊,用來回應所接 收到 COOKIE ECHO 區塊

4


二.SCTP 封包格式

一個 SCTP 封包擁有一個強制使用的一般標頭和一系列的區塊(chunk),其 中又分兩種不同型態的區塊,即為控制區塊和資料區塊,控制區塊用來控制和維 持關聯,而資料區塊用來傳送資料。 一般標頭 來源 Port

16 位元

目的地 Port 驗證標籤

32 位元

檢查碼

32 位元

16 位元

1.來源 Port :定義傳送此封包程序的 Port 2.目的 Port :定義接收此封包程序的 Port 3.驗證標籤 :這一個號碼將一個封包對應到一個關聯。防止之前關聯的封包被誤 認是屬於這個關聯。 4.檢查碼 : 一個 CRC-32 的檢查碼

區塊的一般配置 型態

旗標

長度

區塊資訊

1.型態:顧名思義只有定義型態 2.旗標:定義特別區塊可能需要特別旗標 3.長度: 定義區塊的邊界大小 5


區塊

我將針對區塊來解釋四向交握流程

(一)

首先用戶端傳送第一個封包,此封包包含一個 INIT 區塊(chunk)

型態 : 1

旗標 : 0

長度

初始標籤 通告接收者的窗口額度 輸出串流

最大輸入串流個數 初始 TSN 可變長度的參數 6


1.初始標籤:定義了從另外一邊傳送過來的封包驗證標籤(VT)數值 2.通告接收者的窗口額度: 用來定義 INIT 區塊的傳送端所能允許的初始資料量 3.輸出串流:定義關聯的初始者所能支援在輸出方向的串流個數 4.最大輸入串流個數:定義關聯的初始者所能支援在輸入(接收)方向的最大串流 個數 5.初始 TSN : 初始化輸出(傳送)方向的傳輸序號(TSN)

(二)伺服器傳送第二個封包,包含 INIT ACK 區塊(chunk) 型態 : 2

旗標 : 0

長度

初始標籤 通告接收者的窗口額度 輸出串流

最大輸入串流個數 初始 TSN

參數型態 : 7

參數長度 由狀態所構成的 Cookie 變動長度的參數(選項)

1.由狀態所構成的 Cookie : 這個欄位設計原因是因為在 TCP 傳輸三向交握時,惡 意的攻擊者使用偽造的 IP 位址來產生大量假的 SYN 區段,這些區段導致癱瘓 TCP 伺服器。為了解決這項問題在 SCTP 的設計者使用一種策略,就是將第一個封包 的資訊封裝起來,然後傳給用戶端,這個步驟稱為產生一個 Cookie,其 Cookie 會和第二個封包一起傳給用戶端,會有以下兩個情況 :

7


(1).假設傳送第一個封包是攻擊者,則伺服器不會收到第三個封包,所以 Cookie 會消失,伺服器的資源不會有任何的配置

(2).假設第一個封包是真實的,則它需要建立一個關聯並且把 Cookie 傳送出去 , 伺服器接收到就可以開始配置資源

(三)用戶端丟第三個封包,此封包有 Cookie Echo 的區塊

型態 : 10

旗標 : 0

長度

由狀態所構成的 Cookie

(四)伺服器送出第四個封包,此封包有 Cookie Ack 區塊

型態 : 11

旗標 : 0

長度

以確認收到 Cookie Echo 的區塊。允許 SCTP 的資料區塊可以包括在封包裡

結論: 串流控制傳輸通訊協定(SCTP),是一個訊息導向,具可靠性的通訊協定,結合 UDP 和 TCP 的優點,改良了 TCP 的一些缺點,可是實際運作的應用,卻不是那 樣的普及化,這是值得在探討的地方!!目前個人實驗的部分,本來想在網路尋找 SCTP 軟體利用 WireShark 抓取封包,但因為在微軟的系統環境沒有適當對應 SCTP API 套件下,只能改走 TCP。這個部分我只能再找時間,再做實驗。附錄的 lkstcp 是我打算用 LINUX 來做實驗。

8


參考文獻

一. 魏子軒 : 在移動環境中維持 TCP 連線之解決方案 : 淡江大學資訊管理所 二. Behrouz A. Forouzan Sophia Chung Fegan : TCP/IP Protocol Suite,3e :全華出版 三. James F.Kurose Keith W.Ross : Computer Networking

:

全華出版

四. IBM ( http://www.ibm.com/developerworks/linux/library/l-sctp/?ca=dgr-lnxw01SCTP)

附錄

一. lksctp

http://lksctp.sourceforge.net/

9


TCPIP