M. Tim Jones, 資深首席軟件工程師, eMulex
2006 年 4 月 10 日
流控制傳輸協(xié)議(Stream Control Transmission PRotocol,SCTP)是一種可靠的傳輸協(xié)議,它在兩個(gè)端點(diǎn)之間提供穩(wěn)定、有序的數(shù)據(jù)傳遞服務(wù)(非常類(lèi)似于 TCP),并且可以保護(hù)數(shù)據(jù)消息邊界(例如 UDP)。然而,與 TCP 和 UDP 不同,SCTP 是通過(guò)多宿主(Multi-homing)和多流(Multi-streaming)功能提供這些收益的,這兩種功能均可提高可用性。在本文中,我們將學(xué)習(xí) linux® 2.6 內(nèi)核中 SCTP 的要害特性,并通過(guò)服務(wù)器和客戶機(jī)的源代碼了解該協(xié)議提供多流的能力。
SCTP 是在 ip 網(wǎng)絡(luò)上使用的一種可靠的通用傳輸層協(xié)議。盡管 SCTP 協(xié)議最初是為發(fā)送電話信號(hào)而設(shè)計(jì)的(RFC 2960),但帶來(lái)了一個(gè)意外的收獲:它通過(guò)借鑒 UDP 的優(yōu)點(diǎn)解決了 TCP 的某些局限。SCTP 提供的特性使套接字初始化的可用性、可靠性和安全性都得以提高。(圖 1 給出了 IP 堆棧的層次化架構(gòu)。)

本文簡(jiǎn)要介紹了 Linux 2.6 內(nèi)核中 SCTP 的概念,重點(diǎn)介紹了一些高級(jí)特性(例如多宿主和多流),并且給出了服務(wù)器和客戶機(jī)的部分代碼片斷(并給出了一個(gè)可以獲得更多代碼的 URL),從而展示了這種協(xié)議提供多流的能力。
下面讓我們開(kāi)始介紹 IP 堆棧的內(nèi)容。
IP 堆棧
Internet 協(xié)議套件被劃分成幾層;每層都提供特定功能,如圖 1 所示。
自下而上:
所有應(yīng)用層協(xié)議都使用套接字層作為與傳輸層協(xié)議之間的接口。Sockets API 是由 UC Berkeley 在 BSD UNIX® 操作系統(tǒng)上開(kāi)發(fā)的。
在深入鉆研 SCTP 之前,讓我們首先簡(jiǎn)單回顧一下傳統(tǒng)的傳輸層協(xié)議。
傳輸層協(xié)議
兩種最流行的傳輸層協(xié)議是傳輸控制協(xié)議(TCP)和用戶數(shù)據(jù)報(bào)協(xié)議(UDP):
然而,UDP 是一種快速協(xié)議,可以保護(hù)自己傳輸?shù)南⒌倪吔纭?/p>
本文引出了另外一個(gè)選擇:SCTP。它提供了像 TCP 一樣可靠、有序地發(fā)送數(shù)據(jù)的功能,但卻以像 UDP 一樣面向消息的方式來(lái)進(jìn)行操作,這可以保護(hù)消息邊界。SCTP 還提供了幾個(gè)高級(jí)特性:
新聞熱點(diǎn)
疑難解答
圖片精選
網(wǎng)友關(guān)注