SCTP和UDP有什么区别?
让我们首先了解什么是流控制传输协议 (SCTP)。
SCTP
SCTP 代表流控制传输协议 (Stream Control Transmission Protocol)。它是一种新的稳定、面向消息的传输层协议,经常用于新出现的互联网应用程序。
这些新的应用程序包括 IUA(基于 IP 的 ISDN)、M2UA 和 M3UA(电话信令)、H.248(媒体网关控制)、H.323(IP 电话)和 SIP(IP 电话)等。
SCTP 结合了 UDP 和 TCP 的特性。SCTP 是一种稳定的面向消息的协议。它保护消息边界,同时检测隐藏数据、重复信息和乱序数据。它还具有拥塞控制和流量控制机制。
在 TCP 中,每个连接只有一个流。在 SCTP 中,每个关联可以有多个流。SCTP 中的每个流都需要使用流标识符 (SI) 进行标识。
每个数据块都应在其报头中携带 SI,以便在到达目的地时可以将其适当地放置在其流中。SI 是一个从 0 开始的 16 位数字。
UDP
UDP 代表用户数据报协议 (User Datagram Protocol)。它是一个传输层无连接协议。它支持在网络上连接设备之间快速传输数据。UDP 没有生成、维护和删除连接的开销。
它通常用于发送实时数据,在这种情况下,无法承受传输延迟。UDP 以恒定数据流的形式将数据从一个设备发送到另一个设备。
UDP 报头大小固定,即 8 字节。它不可靠,但速度更快。由于其传输速度,DNS、DHCP、RIP 等协议使用 UDP 在网络上进行精确的数据传输。
UDP 是一种不可靠的协议。在某些情况下需要 UDP 协议。在需要大量带宽和基本信息的场合部署 UDP。
例如,在视频流中,接受数百个数据包会很麻烦并浪费带宽。一些隐藏的数据包不会在视频流中造成问题,也可以避免它们。
UDP 也用于一次通常传输少量信息的应用程序。
例如,UDP 支持协议端口以区分单个设备上实现的多个程序。每个 UDP 消息都包含目标端口号和源端口号。
这使得目标端的 UDP 软件能够将消息传递给正确的应用程序程序,并使应用程序程序能够发送确认。