Webエンジニア向けプログラミング解説動画をYouTubeで配信中!
▶ チャンネル登録はこちら

SCTP(エスシーティーピー)とは | 意味や読み方など丁寧でわかりやすい用語解説

SCTP(エスシーティーピー)の意味や読み方など、初心者にもわかりやすいように丁寧に解説しています。

作成日: 更新日:

読み方

日本語表記

シーディーピー (シーディーピー)

英語表記

SCTP (エスシーティーピー)

用語解説

SCTP(Stream Control Transmission Protocol)は、インターネットプロトコルスイートにおいて、トランスポート層で動作するプロトコルの一つである。TCP(Transmission Control Protocol)が提供する信頼性と順序保証に加え、UDP(User Datagram Protocol)が提供する柔軟性を兼ね備えることを目指して開発された。TCPとUDPの間に位置づけられるプロトコルとして、特定の用途でその優れた特性を発揮する。

概要

SCTPは、その名の通り「ストリーム制御」と「伝送プロトコル」の機能を持ち、IPネットワーク上でアプリケーション間のデータ転送を行う。TCPがバイトストリーム指向であり、単一の論理的な接続(コネクション)で全てのデータを順序通りに送受信するのに対し、SCTPはメッセージ指向であり、単一の接続(アソシエーションと呼ぶ)内で複数の独立したデータストリームを確立できる。また、単一の通信相手に対し複数のネットワークインターフェースやIPアドレスを利用できるマルチホーミング機能も大きな特徴である。これらの機能により、従来のトランスポート層プロトコルでは実現が困難であった、高信頼性、高可用性、そして柔軟なデータ転送を提供する。特に、電話網のシグナリングプロトコル(SS7)をIPネットワーク上で利用する際に、既存のシステム要件を満たすために設計された経緯があり、通信の信頼性と冗長性が非常に重視される環境での利用に適している。

詳細

SCTPの主要な特性をより詳しく見ていく。

まず、SCTPはTCPと同様に、データ転送の「信頼性」を保証する。これは、送信されたデータが破損することなく、重複することなく、そして正しい順序で受信側に到達することを意味する。SCTPは、シーケンス番号を用いたパケットの順序制御、確認応答(ACK)による受信確認、タイマーに基づくタイムアウトと再送メカニズム、そしてデータの完全性を保証するためのCRC(Cyclic Redundancy Check)チェックを実装している。また、ネットワークの輻輳(混雑)を回避するための輻輳制御メカニズムも備えており、これはTCPのそれに類似している。これにより、ネットワーク負荷の高い状況でも安定したデータ転送を維持できる。

次に、「メッセージ指向」であるという特徴が挙げられる。TCPがアプリケーションから受け取ったデータを連続したバイトのストリームとして扱い、どこでメッセージが始まるか、どこで終わるかといった「メッセージ境界」を意識しないのに対し、SCTPはアプリケーションが送受信するデータの塊を個々の「メッセージ」として認識し、その境界を維持したまま転送する。これにより、アプリケーションは自分でメッセージの区切りを管理する手間を省くことができ、プロトコルレベルでメッセージの完全性を保証できるため、アプリケーション開発が簡素化される利点がある。

さらに、SCTPの最も革新的な機能の一つが「マルチストリーミング」である。これは、1つのSCTPアソシエーション(SCTPにおける論理的な接続を表す用語)内で、複数の独立したデータストリームを確立できる機能である。各ストリームは独立した順序保証メカニズムを持つため、あるストリームでパケットが失われ、再送待ちが発生しても、他のストリームのデータ転送はブロックされない。TCPでは、たとえ異なるアプリケーションのデータであっても、単一のストリームで転送されるため、一部のデータの順序が乱れたり失われたりすると、後続の全てのデータがブロックされてしまう「Head-of-Line Blocking (HOLB)」問題が発生する可能性がある。SCTPのマルチストリーミングはこの問題を軽減し、遅延に敏感なアプリケーションにおいて、全体のパフォーマンスを向上させることができる。

「マルチホーミング」もSCTPの重要な特徴である。これは、1つのSCTPエンドポイント(通信の終端となるホスト)が複数のIPアドレスを持つことができ、それらを同時に利用できる機能である。つまり、サーバーやクライアントが複数のネットワークインターフェースを備えている場合、SCTPはこれらの複数のIPアドレスを自身のアイデンティティとして登録し、通信相手と共有する。これにより、もし通信経路上のいずれかのインターフェースやネットワークパスに障害が発生しても、SCTPは自動的に別のIPアドレスとパスに切り替えて通信を継続できる。これは、経路の冗長性を提供し、通信の耐障害性(フォールトトレランス)と高可用性を大幅に向上させる。例えば、サーバーが二つの異なるネットワークに接続されている場合、一方のネットワークに障害が発生しても、もう一方のネットワークを通じて通信を続けることが可能になる。

セキュリティ面では、SCTP自体にはエンドツーエンドの暗号化メカニズムは組み込まれていないが、初期の接続確立プロセスにおいて、SYNフラッド攻撃(サービス拒否攻撃の一種)に対して耐性を持つ「Cookieメカニズム」を採用している。これは、TCPの3ウェイハンドシェイクとは異なり、攻撃者が大量の接続要求を送りつけてもサーバーのリソースを容易に枯渇させないように設計されている。SCTP通信を暗号化する際は、通常、TLS(Transport Layer Security)やDTLS(Datagram Transport Layer Security)といった上位層のセキュリティプロトコルと組み合わせて利用される。

SCTPは、これらの独自の特性から、様々な分野で活用されている。特に、信頼性と高可用性が求められる通信インフラにおいてその価値を発揮する。例えば、固定電話網や携帯電話網のシグナリングプロトコル(SS7 over IPやSIGTRAN)の基盤として利用され、通信事業者のコアネットワークで重要な役割を担っている。また、VoIP(Voice over IP)のシグナリングプロトコルであるSIP(Session Initiation Protocol)のトランスポート層としても利用されることがある。最近では、WebRTCにおけるデータチャネルのトランスポート層としても採用されており、Webブラウザ間での信頼性の高いリアルタイムデータ通信を実現している。さらに、分散データベースのレプリケーションや、高可用性クラスタシステムにおけるハートビート通信など、システムの安定稼働が極めて重要となるアプリケーションでもその利用が進んでいる。SCTPは、TCPとUDPのそれぞれの限界を克服し、現代の多様なネットワーク要件に応えるための強力な選択肢となっている。

関連コンテンツ