M. Tim Jones, 資深首席軟件工程師, eMulex
2006 年 4 月 10 日
流控制傳輸協議(Stream Control Transmission PRotocol,SCTP)是一種可靠的傳輸協議,它在兩個端點之間提供穩定、有序的數據傳遞服務(非常類似于 TCP),并且可以保護數據消息邊界(例如 UDP)。然而,與 TCP 和 UDP 不同,SCTP 是通過多宿主(Multi-homing)和多流(Multi-streaming)功能提供這些收益的,這兩種功能均可提高可用性。在本文中,我們將學習 linux® 2.6 內核中 SCTP 的要害特性,并通過服務器和客戶機的源代碼了解該協議提供多流的能力。
SCTP 是在 ip 網絡上使用的一種可靠的通用傳輸層協議。盡管 SCTP 協議最初是為發送電話信號而設計的(RFC 2960),但帶來了一個意外的收獲:它通過借鑒 UDP 的優點解決了 TCP 的某些局限。SCTP 提供的特性使套接字初始化的可用性、可靠性和安全性都得以提高。(圖 1 給出了 IP 堆棧的層次化架構。)
本文簡要介紹了 Linux 2.6 內核中 SCTP 的概念,重點介紹了一些高級特性(例如多宿主和多流),并且給出了服務器和客戶機的部分代碼片斷(并給出了一個可以獲得更多代碼的 URL),從而展示了這種協議提供多流的能力。
下面讓我們開始介紹 IP 堆棧的內容。
IP 堆棧
Internet 協議套件被劃分成幾層;每層都提供特定功能,如圖 1 所示。
自下而上:
所有應用層協議都使用套接字層作為與傳輸層協議之間的接口。Sockets API 是由 UC Berkeley 在 BSD UNIX® 操作系統上開發的。
在深入鉆研 SCTP 之前,讓我們首先簡單回顧一下傳統的傳輸層協議。
傳輸層協議
兩種最流行的傳輸層協議是傳輸控制協議(TCP)和用戶數據報協議(UDP):
然而,UDP 是一種快速協議,可以保護自己傳輸的消息的邊界。
本文引出了另外一個選擇:SCTP。它提供了像 TCP 一樣可靠、有序地發送數據的功能,但卻以像 UDP 一樣面向消息的方式來進行操作,這可以保護消息邊界。SCTP 還提供了幾個高級特性:
新聞熱點
疑難解答