# TCP 與 SCTP 協定轉換機制

Aaron Liao

由於SCTP通訊協定是新興傳輸協定，目前多數之網路設備與網路程式設計皆以TCP通訊協定傳輸可靠資料，因此，在SCTP通訊協定尚未普及之前，TCP與SCTP通訊協定會有一段期間是長期共存的，為了讓使用TCP通訊協定之系統能夠與SCTP通訊協定之系統相互通訊，因此，陸續有學者提出代理之方法，同時，為了將SCTP通訊協定之優點直接應用於現有之TCP網路環境中，以下將分別進行探討相關方法。

1\. SCTPGATE

Huang \[1] 提出SCTPGATE之SCTP Proxy方法，SCTPGATE可達到代理TCP與SCTP通訊協定資料交換之目的，作者將SCTP通訊協定加入SOCKS v4 \[2] 應用程式中，使SOCKS應用程式可同時支援TCP與SCTP通訊協定，因此能夠處理TCP與SCTP通訊協定間的傳輸資料，可負責代理轉送的工作。SOCKS協定於OSI 模型中位於傳輸層與應用層間，不僅能作為proxy伺服器，亦能夠設定條件作為防火牆過濾之功能。作者所提出之SCTPGATE運作模式如圖1所示，SCTP client之網路應用程式所傳輸的資料在經過SCTPGATE時，SOCKS會接收SCTP client傳送的資料，並以TCP協定進行代理轉送資料予remote TCP server，以此代理方式達成TCP與SCTP通訊協定之互通。

<figure><img src="https://1601960473-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-MUChKlZqi2XYlRIHyoh%2Fuploads%2F1uiKvnVKEDYgQN1t7a8R%2Fimage.png?alt=media&#x26;token=1c9a6b39-09db-4a3b-a452-2b864ab45279" alt=""><figcaption><p>圖1、SCTPGATE網路堆疊圖</p></figcaption></figure>

<figure><img src="https://1601960473-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-MUChKlZqi2XYlRIHyoh%2Fuploads%2FQYYs3RKEBZnvWWJyYWFE%2Fimage.png?alt=media&#x26;token=c6baed11-ee19-4695-8161-5cae38a5ca1b" alt=""><figcaption><p>圖2、SCTPGATE系統流程圖</p></figcaption></figure>

SCTPGATE整體的運作方法如圖2所示，客戶端（client）在與遠端主機連線之前，需先行發送連線請求給SCTPGATE，在請求中會告知SCTPGATE遠端主機之IP位址與連接埠號（port number），而SCTPGATE在接收到此請求之後，會根據請求中所指定的IP與連接埠進行連線的建立，當完成連線建立時，SCTPGATE再回報客戶端端通知連線已經建立成功，而SCTPGATE則開始負責兩端點資料的轉送工作。SCTPGATE之方法為接收以TCP（SCTP）通訊協定傳輸之資料，再將資料轉以SCTP（TCP）通訊協定傳送，轉換方式運作為於傳輸層之上將資料接收並重新封裝後進行傳輸，而非將傳輸層之TCP通訊協定與SCTP通訊協定互相轉換。

2\. TCP/SCTP translator

Chang等學者 \[3] 在2005年提出了TCP/SCTP通訊協定轉換機制的proxy網路架構與概念，於TCP與SCTP協定間進行轉換，讓TCP端點設備可透過SCTP proxy轉換伺服器而能夠與使用SCTP之端點通訊。在圖3表示TCP/SCTP translator之轉換能夠在傳輸層對於TCP與SCTP通訊協定直接進行轉換，因此可以讓單獨運作TCP與SCTP通訊協定之端點設備可透過TCP/SCTP translator之代理轉換而互相通訊。

<figure><img src="https://1601960473-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-MUChKlZqi2XYlRIHyoh%2Fuploads%2F0X87tSBY6RlVW3wmX6TR%2Fimage.png?alt=media&#x26;token=93c4f705-4988-4e35-9231-1b8aa76ce28c" alt=""><figcaption><p>圖3、TCP/SCTP translator網路堆疊圖（一）</p></figcaption></figure>

TCP轉換至SCTP通訊協定過渡期間所面臨的情況，即當兩端點皆為TCP通訊協定時，如圖4所示，需要分別架設一部TCP/SCTP translator用以將一方端點網路所傳輸之TCP訊息轉換為SCTP訊息後傳輸至另一方，並再將接收之SCTP訊息轉換還原為TCP訊息，再傳送給TCP端點。

<figure><img src="https://1601960473-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-MUChKlZqi2XYlRIHyoh%2Fuploads%2FPxqGXKT55j0qPIn8MOcV%2Fimage.png?alt=media&#x26;token=474266f4-286c-4c9a-808b-433f1e075b9a" alt=""><figcaption><p>圖4、TCP/SCTP translator網路堆疊圖（二）</p></figcaption></figure>

圖5為TCP/SCTP轉換之示意圖，TCP node (A) 傳送之TCP訊息在經過TCP/SCTP translator (C)時，整個TCP訊息會被拆解並且對應為SCTP訊息，再以SCTP通訊協定將資料傳輸至TCP/SCTP translator (D)，而當TCP/SCTP translator (D) 接收到SCTP訊息時，會將SCTP訊息拆解恢復為對應之TCP訊息後，再轉送給TCP node (B)。這樣的轉換方式不需更動兩端點之網路設備與設定就能夠達到以SCTP通訊協定代替TCP通訊協定傳輸資料之目的。

<figure><img src="https://1601960473-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-MUChKlZqi2XYlRIHyoh%2Fuploads%2FBVyWrRBwOK4bLZazEXMN%2Fimage.png?alt=media&#x26;token=5d8ac71c-4e6f-4a71-ba39-cfe50e09f26a" alt=""><figcaption><p>圖5、TCP/SCTP轉換示意圖</p></figcaption></figure>

在TCP/SCTP訊息轉換的處理方面，圖6為初始連線的轉換流程，當TCP node (A) 與TCP node (B) 建立TCP連線時，需要進行三向交握的連線過程，由圖6可知，當TCP node (A) 送出的TCP之SYN訊息在經過TCP/SCTP translator (C) 時，TCP的SYN訊息會轉換為SCTP之INIT訊息，並且在傳送到TCP/SCTP translator (D) 時，再將SCTP INIT訊息轉換為原本TCP SYN訊息並傳送至TCP node (B)，將TCP通訊協定初始連線所使用的封包與SCTP通訊協定初始連線之封包互相對應轉換，而完成連線建立之目的。

<figure><img src="https://1601960473-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-MUChKlZqi2XYlRIHyoh%2Fuploads%2Fj0WF12IuZ9mYys2EbZeM%2Fimage.png?alt=media&#x26;token=de886f1b-182e-4014-85e6-1a2c91d45d60" alt=""><figcaption><p>圖6、初始連線流程圖</p></figcaption></figure>

在結束連線的過程，如圖7所示，TCP通訊協定以四向交握方式終止連線，需要由節點雙方提出結束連線之請求才會完全中斷連線，而SCTP通訊協定僅以三向交握終止連線，僅需要一方提出終止連線就會中斷連線，並沒有TCP通訊協定之半關閉（half-closed）狀態。

<figure><img src="https://1601960473-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-MUChKlZqi2XYlRIHyoh%2Fuploads%2FG5uBZd7xeEBEp1PgfKYR%2Fimage.png?alt=media&#x26;token=0c8bdf27-ff3d-4453-9643-056dd5c18e59" alt=""><figcaption><p>圖7、終止連線流程圖</p></figcaption></figure>

TCP/SCTP translator之設計概念是將TCP通訊協定之封包格式與功能與SCTP通訊協定相互對應，因而，當translator收到TCP通訊協定之封包時，能夠轉換為SCTP通訊協定之封包訊息。同理，在接收到SCTP訊息時也能夠轉換為TCP通訊協定之封包。TCP/SCTP translator之概念亦具有通透性（transparent）之優點，原本之網路環境可不需要進行任何變更則能夠使用，轉換的方式是於傳輸層直接進行TCP與SCTP通訊協定之轉換。

本文探討了目前的SCTP proxy之設計與實作，SCTPGATE之實作結合了SOCK v4協定，SOCK協定屬於傳輸層與應用層之間。而TCP/SCTP translator之概念為傳輸層TCP通訊協定與SCTP通訊協定之間的直接轉換，然而，實作TCP/SCTP translator需要更深入設計TCP與SCTP通訊協定之間的轉換，需要完整的處理協定間功能的對應。

參考文獻

\[1] T.C. Huang, Design and Implementation of TCP-Compatible SCTP Vertical Handoff Platform for All-IP Heterogeneous Networks, Master Thesis, Department of Computer Science, National Tsing-Hua University, HsingChu, Taiwan, 2005.

\[2] Y. D. Lee, SOCKS: A Protocol for TCP proxy across firewalls, <http://archive.socks.permeo.com/protocol/socks4.protocol>.

\[3] L.H. Chang, J.J. Lo, H.J. Lin, C.L. Lo, and C.F. Tai, “The Design and Analysis of SCTP Proxy”, The 11th Mobile Computing Workshop, Chang Gung University, Taoyuan, Taiwan, March 31, 2005.


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://applezulab.netdpi.net/network/tcp-sctp-translator.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
