0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

让“可靠”变得“更快更安全”的数据传输协议:SCTP

中兴文档 来源:中兴文档 2023-12-28 17:25 次阅读

粉丝点名要看的文章,这就来咯!

在《灵魂拷问:TCP&UDP彻底搞懂了吗?》里,文档君和大家一起学习到了TCP和UDP这2种协议的区别和工作原理

TCP和UDP的优点和缺点都很明显,总之是:各有千秋、旗鼓相当、难分轩轾、互有短长。

聪明的粉丝是善于思考和发问的:有没有一种协议,可以将TCP和UDP的优点集于一身?

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

来吧,今天文档君就和大家一起了解一下SCTP,解答各位粉丝的疑问吧!

Part1什么是SCTP?

SCTP(Stream Control Transmission Protocol,流控传输协议)的出现,并不是万丈高楼平地起,而是站在TCP这个巨人肩膀上,让数据传输从“可靠”变得“更快更安全”。

假设有2个主机(Host)之间想要通过IP通信,SCTP在TCP的基础上,进行了下面的一系列改造:

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

端点端点位于主机上,是一个逻辑实体。简单来说,2个主机之间进行数据传输的话,端点可以看作是“起点”和“终点”。 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进行数据传输。 细心的粉丝应该也发现了,对于同1个目的端点,起始端点的多个传送地址之间,端口号可以相同,IP地址必须不相同。 如果将网络世界比作是海洋,主机可以看做是港口,端点就是港口中专营数据进出口的商家,传送地址就是港口中的一个个码头,海量的数据通过码头完成了装载出发和到达卸载。偶联(Association)2个端点之间,通过四步握手机制建立的逻辑联系或者通道,叫做偶联。 SCTP规定:在任何时刻的2个端点之间,最多只能建立1个偶联。 港口A中的本端端点(商家A),要想与港口B中的对端端点(商家B)进行数据传输,必须握手四次,成功达成共识,相当于签订了一个进行数据传输的合同。 只有成功建立偶联(签订合同)后,2个端点之间才可以进行数据的传输。

流(Stream)

流是SCTP协议中的一个特殊术语,主要用来指明数据的序列:1个流中包含了多个消息,而且消息之间是有先后顺序的。

在1个偶联中,包含了多个流,每个流,都是从1个端点到另外1个端点的单向逻辑通道。

每个流都有自己专属的流ID,不同流之间是相互独立的,每个流可以单独发送数据而不受其他流的影响。

数据是如何从一个码头传输到另外一个码头的?

TCP和SCTP各有自己的方式:SCTP采用了流,流中的数据是以块为基本单位;TCP采用了包,包中的数据以字节为基本单位。

相当于TCP在传输数据的时候,一艘货船上只装载1件货物。而STCP在传输数据的时候,将多件货物打包成集装箱,一艘货船上可以装载N多个集装箱,而且集装箱之间是有编号的,是顺序排列的。

通路(Path)通路是在一个偶联中,数据在传输过程中所经过的路径。这个路径,是可以多条的。通路的数量,取决于一个偶联中的起始端点、目的端点中使用的传送地址的数量。 简单来说,本端端点(商家A)拥有2个码头,对端端点(商家B)也拥有2个码头,那数据要装船启航,就有4条不同的航线可以选择。

Path0:本端传送地址1(100.100.10.1:1000)发送SCTP分组到对端传送地 址1(200.200.20.1:2000)。

Path1:本端传送地址2(100.100.10.2:1000)发送SCTP分组到对端传送地 址1(200.200.20.1:2000)。

Path2:本端传送地址1(100.100.10.1:1000)发送SCTP分组到对端传送地 址2(200.200.20.2:2000)。

Path3:本端传送地址2(100.100.10.2:1000)发送SCTP分组到对端传送地 址2(200.200.20.2:2000)。

一般情况下,两个端点之间会选择一条航线,作为首选通路。一旦首选通路出现故障,SCTP可以将航线自动切换到其他备用的通路上。 Part2SCTP如何加快数据传输? 在上述改进的基础上,SCTP的数据传输效率有了飞跃。 SCTP的基本工作步骤如下:

建立偶联:握手四次,成功达成共识。

打开数据流:在建立偶联后,发送OPEN消息来打开1个新的数据流。OPEN消息中包含了流的ID、优先级和其他参数

发送数据:一旦数据流打开,就可以在这个流上发送数据,通过发送USER消息来完成。USER消息中包含了流ID和要发送的数据。

关闭数据流:数据都已经传输完毕,发送1个CLOSE消息来关闭数据流。CLOSE消息中包含了流ID和其他参数。

关闭偶联:发送1个SHUTDOWN消息来关闭偶联。SHUTDOWN消息中包含了关闭连接的原因和其他参数。

在发送数据的环节上,SCTP拥有一些独特的办法:

首先,SCTP是面向消息的传输,将上层应用传递下来的用户数据以消息的形式传输,SCTP提供消息的拆分、绑定、重组功能。在传输侧,将用户数据装入一个集装箱,这个集装箱叫做SCTP分组。 每个SCTP分组包括一个公共头和多个块,块分为控制块和数据块,控制块用于SCTP的连接控制,包括连接的建立、关闭、传输路径的维护等;数据块包含了应用层的用户数据。

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

而且如果某个用户数据的长度很短,装在一个集装箱内会很浪费空间。SCTP可以将多个用户数据绑定在一起,装在同一个集装箱的数据块中,大大提高了利用率。在接收侧,SCTP将一个集装箱的内用户数据,重新组装成完整的用户数据,传递给上层应用。

其次,SCTP支持多路复用,即允许在1个偶联中发送多个流。每个流,都是一艘艘装载满数据的货船,每个货船都有自己独特的ID,相互之间互不影响。

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

Part3SCTP如何让数据传输更安全? SCTP在以下几个方面,对数据传输的安全性、稳定性进行了有效的保障。只是因为建立连接时,多握了一次手

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

SCTP的四次握手流程如下:

本端端点(商家A)发送INIT消息到对端端点(商家B),向对端端点(商家B)通知本端端点(商家A)的接收窗口大小、地址列表、初始标记及发送的第一个DATA包的发送序号。

对端端点(商家B)收到INIT消息后,回送INIT ACK消息给本端端点。INIT ACK消息中除了携带着与INIT消息相同的自己的连接信息外,还携带有状态的COOKIE信息。

本端端点(商家A)收到INIT ACK消息后。利用消息中的STATE COOKIE生成COOKIE ECHO消息,将COOKIE ECHO消息发到对端端点(商家B),告诉对端端点(商家B)已收到消息。

对端端点(商家B)在收到合法的COOKIE ECHO后,开始进行创建连接TCB(传输控制块)和申请资源的工作,发送COOKIE ACK消息给本端端点,并进入ESTABLISH状态。对端端点(商家B)在收到COOKIE ACK后,状态变为ESTABLISH,至此完成连接建立工作。

与TCP的三次握手流程对比,SCTP在第2步和第3步中使用了COOKIE ECHO和INIT ACK消息,这2个消息都包含了对端端点(商家B)的参数信息和Cookie值。 这些参数信息和Cookie值用于验证对端端点(商家B)的身份,保证连接的安全性。还因为在传输数据时,多了身份的认证。SCTP提供了无差错的传输服务,靠的是在集装箱公共分组头里面,包含了一个验证标签(VerificATIon Tag)和一个可选的32位校验码(Checksum)。

验证标签的值,在建立偶联(签订合同)时,由本端端点(商家A)和对端端点(商家B)共同设置的。 如果收到的集装箱公共分组头中如果没有期望的验证标签值,对端端点(商家B)会认为这个集装箱是危险的或者无效的,将丢弃这个集装箱。

集装箱中的校验码,是通过ADLER-32算法在数据块的基础上计算出来的32位字符串。本端端点(商家A)把计算后的校验码放在集装箱中,是为了给数据块的一个额外保护,用来避免由网络造成的数据差错。 对端端点(商家B)收到集装箱,也通过ADLER-32算法在数据块基础上计算出来1个校验码,如果和集装箱里已有的32位校验码一致,说明数据块是没有差错的。 如果两个校验码不一致,说明数据块出错了,对端端点(商家B)也会丢弃这个集装箱。

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

也因为在通路空闲时,多了心跳的检测

SCTP通过心跳检测功能,定期检查连接的健康状况,从而及时发现和修复连接问题。

当某条通路空闲时,本端端点(商家A)会要求SCTP生成相应的心跳消息,并通过该通路发送到对端端点(商家B),而对端端点(商家B)必须立即发回对应的心跳确认消息。

通过这样的方式,SCTP精确测量回路时延RTT(Round Trip Time),达到监控偶联的可用情况和保持SCTP 偶联的激活状态的目的。

Part4SCTP的发展趋势如何?

前面讲过,SCTP是在TCP的基础上进行了一些改进。

这是因为TCP在处理多媒体应用时,存在拥塞控制问题和可靠传输问题。

所以早在1990年代中期,人们就开始研究SCTP协议,并先后发布了多个版本。

每个新版本,都是对前一个版本的改进,并在2000 年成为 RFC 2960,相关的RFC 3286是介绍性的文档、RFC 4960(2007)是RFC 2960的替代协议。

为了适应不断发展变化的网络标准,SCTP也在不断进化,比如:增加了端到端的认证功能、改进了心跳机制,优化了调度算法。

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

TCP/UDP有其先发优势,已经广泛应用在网络的各种场景中。

SCTP作为后来者,目前的应用范围有限,却也在越来越多的场景中得到应用,比如:多媒体会议、视频会议。

Part5今天大家学到了什么?

文档君为大家总结了一下,你学会了吗?

站在TCP的肩膀上,SCTP有一些自己的特点,比如:端点、偶联、流、通路。

消息传输、多路复用,让数据传输更加有效率。

多一次握手,验证标签和验证码,检测心跳,SCTP就想给数据一些稳稳的安全感。

一项技术都是早早出现、慢慢改进、逐步应用,需要经过时间的检验。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 数据传输
    +关注

    关注

    9

    文章

    1823

    浏览量

    64463
  • 协议
    +关注

    关注

    2

    文章

    598

    浏览量

    39155
  • SCTP
    +关注

    关注

    0

    文章

    7

    浏览量

    8131
收藏 人收藏

    评论

    相关推荐

    socket 数据传输效率提升技巧

    在现代网络应用中,数据传输效率是衡量系统性能的关键指标之一。对于使用socket进行数据传输的应用,优化传输效率不仅可以提升用户体验,还能降低成本。 1. 选择合适的传输
    的头像 发表于 11-12 14:34 182次阅读

    CAN总线数据传输速率设置

    CAN(Controller Area Network)总线是一种串行通信协议,主要用于汽车和工业控制系统中,以实现电子控制单元(ECU)之间的通信。CAN总线的数据传输速率,也称为波特率,是衡量
    的头像 发表于 11-12 10:03 164次阅读

    LORA模块的数据传输速率

    LoRa(Long Range)是一种用于物联网(IoT)应用的低功耗广域网(LPWAN)技术。它以其长距离通信能力和低功耗特性而闻名。LoRa模块的数据传输速率可以根据不同的配置和地区的规定
    的头像 发表于 10-31 17:03 560次阅读

    HTTP海外安全挑战与解决方案:保护跨国数据传输

    HTTP海外安全挑战与解决方案是保护跨国数据传输安全的重要议题。
    的头像 发表于 10-15 08:08 195次阅读

    网络数据传输速率的单位是什么

    网络数据传输速率的单位是 bps(bit per second) ,即比特每秒,也可以表示为b/s或bit/s。它表示的是每秒钟传输的二进制数的位数。比特(bit)是计算机中数据量的单位,也是信息论
    的头像 发表于 10-12 10:20 880次阅读

    高速数据传输线缆组件 恶劣环境中的可靠选择

    无法确保高品质的数据传输,因此需要 ODU高速数据传输线缆组件 的加入。 ODU高速数据传输线缆组件 ODU可以提供基于标准传输协议的高速
    的头像 发表于 08-22 09:32 307次阅读

    DTU如何运用VPN加密技术提升数据传输安全

    在当前的物联网时代,数据安全传输显得尤为重要。DTU作为一款通过无线通信网络进行传送的无线终端设备,其在气象、水文水利、地质等行业的应用中,对于数据传输安全性有着极高的要求。本文将
    的头像 发表于 07-04 14:53 395次阅读
    DTU如何运用VPN加密技术提升<b class='flag-5'>数据传输</b><b class='flag-5'>安全</b>?

    GMSL技术 实现高带宽、低延迟和高可靠性数据传输# ADI# GMSL# 汽车# 数据传输

    adi数据传输电机
    Excelpoint世健
    发布于 :2024年05月17日 16:34:25

    请问NFC数据传输如何保证数据安全

    NFC数据传输如何保证数据安全
    发表于 04-07 06:18

    水利SL427协议是什么?水资源监测数据传输规约sl427

    结构、数据传输可靠性等。 SL427协议规约明确了水资源监测数据的标准格式,包括数据采集时间、地点、指标参数等统一字段的定义与编码标准,以
    的头像 发表于 03-16 17:30 617次阅读

    安全可靠,这款DTU数据传输更加安全高效

    位,重点场景数据保护水平大幅提升,重大风险得到有效防控”。随着大数据时代到来和蜂窝物联网终端在现实中的逐渐普及和使用,数据传输的稳定性和安全性也成为许多企业需要去
    的头像 发表于 03-07 14:42 995次阅读
    <b class='flag-5'>安全可靠</b>,这款DTU<b class='flag-5'>让</b>您<b class='flag-5'>数据传输</b>更加<b class='flag-5'>安全</b>高效

    DTU的多种协议,解锁数据传输的无限可能

    DTU,即数据传输单元,是一种在物联网(IoT)网络中常用的设备,主要用于在传感器和智能设备之间进行数据传输。DTU使用多种协议来实现这一目标,这些协议不仅提高了
    的头像 发表于 03-01 11:00 734次阅读
    DTU的多种<b class='flag-5'>协议</b>,解锁<b class='flag-5'>数据传输</b>的无限可能

    多业务光端机安全性解析:保障数据传输可靠性与保密性

    随着信息技术的飞速发展,数据安全性和保密性已成为各行各业关注的焦点。多业务光端机作为一种高速、高效的光通信设备,在保障数据传输可靠性与保密性方面发挥着重要作用。 一、多业务光端机的
    的头像 发表于 02-23 13:58 409次阅读

    万兆单模光模块SFP-XG-LX:高速长距离数据传输利器

    万兆单模光模块SFP-XG-LX是一种采用单模光纤作为传输介质的高速网络模块,支持万兆以太网标准,适用于长距离的数据传输。其特点包括高速传输、长距离、高兼容性、安装方便等。广泛应用于数据
    的头像 发表于 12-04 17:09 1016次阅读

    虹科方案 | 如何破解CAN与车载以太网之间数据传输协议转换的难题?

    在车辆网络时代,数据传输协议转换在通信领域中扮演着至关重要的角色。它们不仅能够实现车辆内部系统之间的互联互通,还支持车辆与外部网络进行通信,从而为驾驶者带来智能、便捷的驾驶体验。本文将介绍CAN总线与车载以太网
    的头像 发表于 11-27 09:55 878次阅读
    虹科方案 | 如何破解CAN与车载以太网之间<b class='flag-5'>数据传输</b>和<b class='flag-5'>协议</b>转换的难题?