0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

讓“可靠”變得“更快更安全”的數(shù)據(jù)傳輸協(xié)議:SCTP

中興文檔 ? 來源:中興文檔 ? 2023-12-28 17:25 ? 次閱讀

粉絲點名要看的文章,這就來咯!

在《靈魂拷問:TCP&UDP徹底搞懂了嗎?》里,文檔君和大家一起學習到了TCP和UDP這2種協(xié)議的區(qū)別和工作原理。

TCP和UDP的優(yōu)點和缺點都很明顯,總之是:各有千秋、旗鼓相當、難分軒輊、互有短長。

聰明的粉絲是善于思考和發(fā)問的:有沒有一種協(xié)議,可以將TCP和UDP的優(yōu)點集于一身?

ffcdd8ce-a559-11ee-8b88-92fbcf53809c.png

來吧,今天文檔君就和大家一起了解一下SCTP,解答各位粉絲的疑問吧!

Part1什么是SCTP?

SCTP(Stream Control Transmission Protocol,流控傳輸協(xié)議)的出現(xiàn),并不是萬丈高樓平地起,而是站在TCP這個巨人肩膀上,讓數(shù)據(jù)傳輸從“可靠”變得“更快更安全”。

假設有2個主機(Host)之間想要通過IP通信,SCTP在TCP的基礎上,進行了下面的一系列改造:

ffdcf002-a559-11ee-8b88-92fbcf53809c.png

端點端點位于主機上,是一個邏輯實體。簡單來說,2個主機之間進行數(shù)據(jù)傳輸?shù)脑挘它c可以看作是“起點”和“終點”。 1個主機可以有多個IP地址和多個開放端口,IP地址+端口號的組合,稱為傳送地址。 一個傳送地址,例如:100.100.10.1:1000,可以唯一標識一個端點。一個端點,可以擁有多個不同的傳送地址。例如:端點A可以使用的傳送地址包括100.100.10.1:1000、100.100.10.2:1000、100.100.10.1:1001。端點B可以使用的傳送地址包括200.200.20.1:2000、200.200.20.2:2000。那么端點A可以使用傳送地址100.100.10.1:1000、100.100.10.2:1000,與端點B進行數(shù)據(jù)傳輸。 細心的粉絲應該也發(fā)現(xiàn)了,對于同1個目的端點,起始端點的多個傳送地址之間,端口號可以相同,IP地址必須不相同。 如果將網(wǎng)絡世界比作是海洋,主機可以看做是港口,端點就是港口中專營數(shù)據(jù)進出口的商家,傳送地址就是港口中的一個個碼頭,海量的數(shù)據(jù)通過碼頭完成了裝載出發(fā)和到達卸載。偶聯(lián)(Association)2個端點之間,通過四步握手機制建立的邏輯聯(lián)系或者通道,叫做偶聯(lián)。 SCTP規(guī)定:在任何時刻的2個端點之間,最多只能建立1個偶聯(lián)。 港口A中的本端端點(商家A),要想與港口B中的對端端點(商家B)進行數(shù)據(jù)傳輸,必須握手四次,成功達成共識,相當于簽訂了一個進行數(shù)據(jù)傳輸?shù)暮贤?只有成功建立偶聯(lián)(簽訂合同)后,2個端點之間才可以進行數(shù)據(jù)的傳輸。

流(Stream)

流是SCTP協(xié)議中的一個特殊術語,主要用來指明數(shù)據(jù)的序列:1個流中包含了多個消息,而且消息之間是有先后順序的。

在1個偶聯(lián)中,包含了多個流,每個流,都是從1個端點到另外1個端點的單向邏輯通道。

每個流都有自己專屬的流ID,不同流之間是相互獨立的,每個流可以單獨發(fā)送數(shù)據(jù)而不受其他流的影響。

數(shù)據(jù)是如何從一個碼頭傳輸?shù)搅硗庖粋€碼頭的?

TCP和SCTP各有自己的方式:SCTP采用了流,流中的數(shù)據(jù)是以塊為基本單位;TCP采用了包,包中的數(shù)據(jù)以字節(jié)為基本單位。

相當于TCP在傳輸數(shù)據(jù)的時候,一艘貨船上只裝載1件貨物。而STCP在傳輸數(shù)據(jù)的時候,將多件貨物打包成集裝箱,一艘貨船上可以裝載N多個集裝箱,而且集裝箱之間是有編號的,是順序排列的。

通路(Path)通路是在一個偶聯(lián)中,數(shù)據(jù)在傳輸過程中所經(jīng)過的路徑。這個路徑,是可以多條的。通路的數(shù)量,取決于一個偶聯(lián)中的起始端點、目的端點中使用的傳送地址的數(shù)量。 簡單來說,本端端點(商家A)擁有2個碼頭,對端端點(商家B)也擁有2個碼頭,那數(shù)據(jù)要裝船啟航,就有4條不同的航線可以選擇。

Path0:本端傳送地址1(100.100.10.1:1000)發(fā)送SCTP分組到對端傳送地 址1(200.200.20.1:2000)。

Path1:本端傳送地址2(100.100.10.2:1000)發(fā)送SCTP分組到對端傳送地 址1(200.200.20.1:2000)。

Path2:本端傳送地址1(100.100.10.1:1000)發(fā)送SCTP分組到對端傳送地 址2(200.200.20.2:2000)。

Path3:本端傳送地址2(100.100.10.2:1000)發(fā)送SCTP分組到對端傳送地 址2(200.200.20.2:2000)。

一般情況下,兩個端點之間會選擇一條航線,作為首選通路。一旦首選通路出現(xiàn)故障,SCTP可以將航線自動切換到其他備用的通路上。 Part2SCTP如何加快數(shù)據(jù)傳輸? 在上述改進的基礎上,SCTP的數(shù)據(jù)傳輸效率有了飛躍。 SCTP的基本工作步驟如下:

建立偶聯(lián):握手四次,成功達成共識。

打開數(shù)據(jù)流:在建立偶聯(lián)后,發(fā)送OPEN消息來打開1個新的數(shù)據(jù)流。OPEN消息中包含了流的ID、優(yōu)先級和其他參數(shù)。

發(fā)送數(shù)據(jù):一旦數(shù)據(jù)流打開,就可以在這個流上發(fā)送數(shù)據(jù),通過發(fā)送USER消息來完成。USER消息中包含了流ID和要發(fā)送的數(shù)據(jù)。

關閉數(shù)據(jù)流:數(shù)據(jù)都已經(jīng)傳輸完畢,發(fā)送1個CLOSE消息來關閉數(shù)據(jù)流。CLOSE消息中包含了流ID和其他參數(shù)。

關閉偶聯(lián):發(fā)送1個SHUTDOWN消息來關閉偶聯(lián)。SHUTDOWN消息中包含了關閉連接的原因和其他參數(shù)。

在發(fā)送數(shù)據(jù)的環(huán)節(jié)上,SCTP擁有一些獨特的辦法:

首先,SCTP是面向消息的傳輸,將上層應用傳遞下來的用戶數(shù)據(jù)以消息的形式傳輸,SCTP提供消息的拆分、綁定、重組功能。在傳輸側,將用戶數(shù)據(jù)裝入一個集裝箱,這個集裝箱叫做SCTP分組。 每個SCTP分組包括一個公共頭和多個塊,塊分為控制塊和數(shù)據(jù)塊,控制塊用于SCTP的連接控制,包括連接的建立、關閉、傳輸路徑的維護等;數(shù)據(jù)塊包含了應用層的用戶數(shù)據(jù)。

000ac838-a55a-11ee-8b88-92fbcf53809c.png

而且如果某個用戶數(shù)據(jù)的長度很短,裝在一個集裝箱內會很浪費空間。SCTP可以將多個用戶數(shù)據(jù)綁定在一起,裝在同一個集裝箱的數(shù)據(jù)塊中,大大提高了利用率。在接收側,SCTP將一個集裝箱的內用戶數(shù)據(jù),重新組裝成完整的用戶數(shù)據(jù),傳遞給上層應用。

其次,SCTP支持多路復用,即允許在1個偶聯(lián)中發(fā)送多個流。每個流,都是一艘艘裝載滿數(shù)據(jù)的貨船,每個貨船都有自己獨特的ID,相互之間互不影響。

001e7086-a55a-11ee-8b88-92fbcf53809c.png

Part3SCTP如何讓數(shù)據(jù)傳輸更安全? SCTP在以下幾個方面,對數(shù)據(jù)傳輸?shù)陌踩?、穩(wěn)定性進行了有效的保障。只是因為建立連接時,多握了一次手

0022c4d8-a55a-11ee-8b88-92fbcf53809c.png

SCTP的四次握手流程如下:

本端端點(商家A)發(fā)送INIT消息到對端端點(商家B),向對端端點(商家B)通知本端端點(商家A)的接收窗口大小、地址列表、初始標記及發(fā)送的第一個DATA包的發(fā)送序號。

對端端點(商家B)收到INIT消息后,回送INIT ACK消息給本端端點。INIT ACK消息中除了攜帶著與INIT消息相同的自己的連接信息外,還攜帶有狀態(tài)的COOKIE信息。

本端端點(商家A)收到INIT ACK消息后。利用消息中的STATE COOKIE生成COOKIE ECHO消息,將COOKIE ECHO消息發(fā)到對端端點(商家B),告訴對端端點(商家B)已收到消息。

對端端點(商家B)在收到合法的COOKIE ECHO后,開始進行創(chuàng)建連接TCB(傳輸控制塊)和申請資源的工作,發(fā)送COOKIE ACK消息給本端端點,并進入ESTABLISH狀態(tài)。對端端點(商家B)在收到COOKIE ACK后,狀態(tài)變?yōu)镋STABLISH,至此完成連接建立工作。

與TCP的三次握手流程對比,SCTP在第2步和第3步中使用了COOKIE ECHO和INIT ACK消息,這2個消息都包含了對端端點(商家B)的參數(shù)信息和Cookie值。 這些參數(shù)信息和Cookie值用于驗證對端端點(商家B)的身份,保證連接的安全性。還因為在傳輸數(shù)據(jù)時,多了身份的認證。SCTP提供了無差錯的傳輸服務,靠的是在集裝箱公共分組頭里面,包含了一個驗證標簽(VerificATIon Tag)和一個可選的32位校驗碼(Checksum)。

驗證標簽的值,在建立偶聯(lián)(簽訂合同)時,由本端端點(商家A)和對端端點(商家B)共同設置的。 如果收到的集裝箱公共分組頭中如果沒有期望的驗證標簽值,對端端點(商家B)會認為這個集裝箱是危險的或者無效的,將丟棄這個集裝箱。

集裝箱中的校驗碼,是通過ADLER-32算法在數(shù)據(jù)塊的基礎上計算出來的32位字符串。本端端點(商家A)把計算后的校驗碼放在集裝箱中,是為了給數(shù)據(jù)塊的一個額外保護,用來避免由網(wǎng)絡造成的數(shù)據(jù)差錯。 對端端點(商家B)收到集裝箱,也通過ADLER-32算法在數(shù)據(jù)塊基礎上計算出來1個校驗碼,如果和集裝箱里已有的32位校驗碼一致,說明數(shù)據(jù)塊是沒有差錯的。 如果兩個校驗碼不一致,說明數(shù)據(jù)塊出錯了,對端端點(商家B)也會丟棄這個集裝箱。

002a8a06-a55a-11ee-8b88-92fbcf53809c.png

也因為在通路空閑時,多了心跳的檢測。

SCTP通過心跳檢測功能,定期檢查連接的健康狀況,從而及時發(fā)現(xiàn)和修復連接問題。

當某條通路空閑時,本端端點(商家A)會要求SCTP生成相應的心跳消息,并通過該通路發(fā)送到對端端點(商家B),而對端端點(商家B)必須立即發(fā)回對應的心跳確認消息。

通過這樣的方式,SCTP精確測量回路時延RTT(Round Trip Time),達到監(jiān)控偶聯(lián)的可用情況和保持SCTP 偶聯(lián)的激活狀態(tài)的目的。

Part4SCTP的發(fā)展趨勢如何?

前面講過,SCTP是在TCP的基礎上進行了一些改進。

這是因為TCP在處理多媒體應用時,存在擁塞控制問題和可靠傳輸問題。

所以早在1990年代中期,人們就開始研究SCTP協(xié)議,并先后發(fā)布了多個版本。

每個新版本,都是對前一個版本的改進,并在2000 年成為 RFC 2960,相關的RFC 3286是介紹性的文檔、RFC 4960(2007)是RFC 2960的替代協(xié)議。

為了適應不斷發(fā)展變化的網(wǎng)絡標準,SCTP也在不斷進化,比如:增加了端到端的認證功能、改進了心跳機制,優(yōu)化了調度算法。

004d12ec-a55a-11ee-8b88-92fbcf53809c.png

TCP/UDP有其先發(fā)優(yōu)勢,已經(jīng)廣泛應用在網(wǎng)絡的各種場景中。

SCTP作為后來者,目前的應用范圍有限,卻也在越來越多的場景中得到應用,比如:多媒體會議、視頻會議。

Part5今天大家學到了什么?

文檔君為大家總結了一下,你學會了嗎?

站在TCP的肩膀上,SCTP有一些自己的特點,比如:端點、偶聯(lián)、流、通路。

消息傳輸、多路復用,讓數(shù)據(jù)傳輸更加有效率。

多一次握手,驗證標簽和驗證碼,檢測心跳,SCTP就想給數(shù)據(jù)一些穩(wěn)穩(wěn)的安全感。

一項技術都是早早出現(xiàn)、慢慢改進、逐步應用,需要經(jīng)過時間的檢驗。

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權轉載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • 數(shù)據(jù)傳輸

    關注

    9

    文章

    1698

    瀏覽量

    64210
  • 協(xié)議
    +關注

    關注

    2

    文章

    590

    瀏覽量

    39048
  • SCTP
    +關注

    關注

    0

    文章

    7

    瀏覽量

    8119
收藏 人收藏

    評論

    相關推薦

    高速數(shù)據(jù)傳輸線纜組件 惡劣環(huán)境中的可靠選擇

    無法確保高品質的數(shù)據(jù)傳輸,因此需要 ODU高速數(shù)據(jù)傳輸線纜組件 的加入。 ODU高速數(shù)據(jù)傳輸線纜組件 ODU可以提供基于標準傳輸協(xié)議的高速
    的頭像 發(fā)表于 08-22 09:32 ?162次閱讀

    使用esp8266進行數(shù)據(jù)傳輸遇到的幾個疑問求解

    發(fā)送數(shù)據(jù)的速度。我們使用我們的軟件設置預期的數(shù)據(jù)傳輸速率,例如,2048 字節(jié)/毫秒,軟件將使用 AT 命令通過串行端口每 1 毫秒發(fā)送一串 2048 字節(jié)的字符串。以下是真正我感到困惑
    發(fā)表于 07-16 07:09

    DTU如何運用VPN加密技術提升數(shù)據(jù)傳輸安全?

    在當前的物聯(lián)網(wǎng)時代,數(shù)據(jù)安全傳輸顯得尤為重要。DTU作為一款通過無線通信網(wǎng)絡進行傳送的無線終端設備,其在氣象、水文水利、地質等行業(yè)的應用中,對于數(shù)據(jù)傳輸安全性有著極高的要求。本文將
    的頭像 發(fā)表于 07-04 14:53 ?219次閱讀
    DTU如何運用VPN加密技術提升<b class='flag-5'>數(shù)據(jù)傳輸</b><b class='flag-5'>安全</b>?

    GMSL技術 實現(xiàn)高帶寬、低延遲和高可靠性數(shù)據(jù)傳輸# ADI# GMSL# 汽車# 數(shù)據(jù)傳輸

    adi數(shù)據(jù)傳輸電機
    Excelpoint世健
    發(fā)布于 :2024年05月17日 16:34:25

    使用YMODEM協(xié)議下的USART進行上下位機的數(shù)據(jù)傳輸遇到的疑問求解

    樓主想?yún)⒖糀N2557的例程,使用YMODEM協(xié)議下的USART進行上下位機的數(shù)據(jù)傳輸,但發(fā)現(xiàn)所有可參考的例子都是使用PC機的超級終端通過串口向下位機發(fā)送,可樓主的項目中是攝像機(上位機)和控制板(下位機)通過串口通信,所以需要進行YMODEM
    發(fā)表于 05-17 06:55

    光纖布線如何保證數(shù)據(jù)可靠傳輸

    在當今的數(shù)字環(huán)境中,數(shù)據(jù)傳輸是技術進步的命脈,通信網(wǎng)絡的穩(wěn)定性和可靠性至關重要。隨著對更快、更高效的數(shù)據(jù)傳輸的需求不斷增長,創(chuàng)新者不斷尋求解決方案來保證無縫連接;在這些解決方案中,光纖
    的頭像 發(fā)表于 04-07 10:34 ?250次閱讀

    請問NFC數(shù)據(jù)傳輸如何保證數(shù)據(jù)安全

    NFC數(shù)據(jù)傳輸如何保證數(shù)據(jù)安全
    發(fā)表于 04-07 06:18

    水利SL427協(xié)議是什么?水資源監(jiān)測數(shù)據(jù)傳輸規(guī)約sl427

    結構、數(shù)據(jù)傳輸可靠性等。 SL427協(xié)議規(guī)約明確了水資源監(jiān)測數(shù)據(jù)的標準格式,包括數(shù)據(jù)采集時間、地點、指標參數(shù)等統(tǒng)一字段的定義與編碼標準,以
    的頭像 發(fā)表于 03-16 17:30 ?467次閱讀

    安全可靠,這款DTU數(shù)據(jù)傳輸更加安全高效

    位,重點場景數(shù)據(jù)保護水平大幅提升,重大風險得到有效防控”。隨著大數(shù)據(jù)時代到來和蜂窩物聯(lián)網(wǎng)終端在現(xiàn)實中的逐漸普及和使用,數(shù)據(jù)傳輸的穩(wěn)定性和安全性也成為許多企業(yè)需要去
    的頭像 發(fā)表于 03-07 14:42 ?894次閱讀
    <b class='flag-5'>安全可靠</b>,這款DTU<b class='flag-5'>讓</b>您<b class='flag-5'>數(shù)據(jù)傳輸</b>更加<b class='flag-5'>安全</b>高效

    DTU的多種協(xié)議,解鎖數(shù)據(jù)傳輸的無限可能

    DTU,即數(shù)據(jù)傳輸單元,是一種在物聯(lián)網(wǎng)(IoT)網(wǎng)絡中常用的設備,主要用于在傳感器和智能設備之間進行數(shù)據(jù)傳輸。DTU使用多種協(xié)議來實現(xiàn)這一目標,這些協(xié)議不僅提高了
    的頭像 發(fā)表于 03-01 11:00 ?585次閱讀
    DTU的多種<b class='flag-5'>協(xié)議</b>,解鎖<b class='flag-5'>數(shù)據(jù)傳輸</b>的無限可能

    多業(yè)務光端機安全性解析:保障數(shù)據(jù)傳輸可靠性與保密性

    隨著信息技術的飛速發(fā)展,數(shù)據(jù)安全性和保密性已成為各行各業(yè)關注的焦點。多業(yè)務光端機作為一種高速、高效的光通信設備,在保障數(shù)據(jù)傳輸可靠性與保密性方面發(fā)揮著重要作用。 一、多業(yè)務光端機的
    的頭像 發(fā)表于 02-23 13:58 ?289次閱讀

    萬兆單模光模塊SFP-XG-LX:高速長距離數(shù)據(jù)傳輸利器

    萬兆單模光模塊SFP-XG-LX是一種采用單模光纖作為傳輸介質的高速網(wǎng)絡模塊,支持萬兆以太網(wǎng)標準,適用于長距離的數(shù)據(jù)傳輸。其特點包括高速傳輸、長距離、高兼容性、安裝方便等。廣泛應用于數(shù)據(jù)
    的頭像 發(fā)表于 12-04 17:09 ?797次閱讀

    虹科方案 | 如何破解CAN與車載以太網(wǎng)之間數(shù)據(jù)傳輸協(xié)議轉換的難題?

    在車輛網(wǎng)絡時代,數(shù)據(jù)傳輸協(xié)議轉換在通信領域中扮演著至關重要的角色。它們不僅能夠實現(xiàn)車輛內部系統(tǒng)之間的互聯(lián)互通,還支持車輛與外部網(wǎng)絡進行通信,從而為駕駛者帶來智能、便捷的駕駛體驗。本文將介紹CAN總線與車載以太網(wǎng)
    的頭像 發(fā)表于 11-27 09:55 ?758次閱讀
    虹科方案 | 如何破解CAN與車載以太網(wǎng)之間<b class='flag-5'>數(shù)據(jù)傳輸</b>和<b class='flag-5'>協(xié)議</b>轉換的難題?

    如何實現(xiàn)MQTT協(xié)議數(shù)據(jù)傳輸?

    如何實現(xiàn)MQTT協(xié)議數(shù)據(jù)傳輸? 隨著物聯(lián)網(wǎng)技術的不斷發(fā)展,越來越多的設備和應用需要實現(xiàn)互聯(lián)互通。而MQTT作為一種輕量級的發(fā)布/訂閱消息傳輸協(xié)議,在物聯(lián)網(wǎng)領域應用廣泛,成為了許多設備之
    的頭像 發(fā)表于 11-15 17:23 ?989次閱讀

    AXI數(shù)據(jù)傳輸讀寫數(shù)據(jù)結構

    在 AXI 數(shù)據(jù)傳輸過程中,主要涉及到 ?窄位寬數(shù)據(jù)傳輸(Narrow Transfer) ?非對齊傳輸(Unaligned Transfer) ?混合大小端傳輸(mix-endian
    的頭像 發(fā)表于 10-31 16:17 ?1282次閱讀
    AXI<b class='flag-5'>數(shù)據(jù)傳輸</b>讀寫<b class='flag-5'>數(shù)據(jù)</b>結構