SMPPの解説
SMPP(Short Message Peer-to-Peer)は、アプリケーション(ESME)と携帯通信事業者のSMSCの間でA2P SMSを運ぶオープンなTCPプロトコルです。ESMEは持続的なバインドを確立し、メッセージをバイナリのsubmit_sm PDUとして送信し、同じソケット経由で配信レポートを受信します。
仕組み
- 1
バインド
ESMEはTCP接続(理想的にはTLS)を開き、system_idとパスワードを含むbind_transceiverを送信します。Transmitter、Receiver、またはTransceiverとしてバインドでき、現代のデフォルトはSMPP 3.4経由のTransceiverバインドです。
回答全文を読む - 2
送信
各メッセージはsubmit_sm PDUとして送信され、SMSCはmessage_idを含むsubmit_sm_respで応答します。未確認のまま送信され得るPDUの数を示す「ウィンドウ」が、実際のスループットを制限する最も一般的な要因となります。
回答全文を読む - 3
配信レポートを受信する
配信レポートは、同じソケット上でdeliver_sm PDUとして非同期に届き、message_idによって元のメッセージと照合されます。
回答全文を読む - 4
セッションの維持
30秒ごとのenquire_linkハートビートによりバインドを維持し、クライアントは指数バックオフを用いて再接続を行い、アンバインドによってセッションを正常に終了します。送信に失敗した場合は、デコード用の数値によるcommand_statusが返されます。
回答全文を読む
用語集
各用語には、詳細な解説が記載された専用の回答ページがあります。
- SMPPとは?SMPP(Short Message Peer-to-Peer)は、SMSC、ESME(外部短文メッセージエンティティ)、およびアグリゲーター間でSMSを交換するためのオープンプロトコル標準です。
- SMPPプロトコルはどのように動作しますか?SMPP(Short Message Peer-to-Peer)は、アプリケーション(ESME)と携帯通信事業者のSMSCの間でA2P SMSを伝送するオープンなTCPプロトコルです。
- ESMEとは?ESME(External Short Messaging Entity)とは、SMSC外部でSMSを送信または受信するアプリケーションを指すSMPP用語です。
- SMSCとは?SMSC(SMSセンター)は、モバイルデバイスと外部アプリケーション間でSMSメッセージを保存、転送、および配信する、モバイルネットワークの中核的なインフラストラクチャコンポーネントです。
- SMPPのウィンドウサイズとは何ですか?ウィンドウとは、ある時点で単一のバインドにおいて、ESMEが処理中(送信済みだが未承認)として保持できるSMPP PDUの数です。
- SMPP 3.4 vs SMPP 5.0 — 変更点と使い分けについてSMPP 3.4 (1999)は、現在稼働しているほぼすべてのA2Pバインドで使用されているSMS相互接続プロトコルです。
- DLR(配信レポート)とは?DLRとは、SMSが端末に配信された(または配信に失敗した)ことを示す非同期の確認です。
- TPS(Transactions Per Second)とは何ですか?TPS(1秒あたりのトランザクション数)— MPSまたは送信レートとも呼ばれます — は、メッセージングバインドまたはアカウントのスループットの上限です。これは、スロットリングエラーが返されるまでに、SMSCが1秒間に受け入れ可能なSMS submit_sm PDUの数を示します。
- メッセージングにおけるTLS 1.3 — 何が変わり、なぜそれがSMPPにとって重要なのかTLS 1.3(RFC 8446、2018)は、より高速なハンドシェイクを備えたTLS 1.2の後継として、過去10年間に破られたすべてのアルゴリズムを排除し、前方秘匿性(forward secrecy)を必須化しました。
よくある質問
RESTではなくSMPPを選択すべきなのはどのような場合ですか?
Choose SMPP when you sustain several hundred messages per second or need persistent binds (capacity per bind is agreed with your account team), run latency-critical OTP where every millisecond counts, or integrate into an operator/aggregator ecosystem that already speaks SMPP everywhere. Otherwise a REST SMS API (no fixed per-account rate limit at BroadNet) is simpler to run and delivers over the identical routes.
回答全文を読む新規の統合にはSMPP 5.0を使用すべきですか?
ほぼありません。特定の取引先から5.0が要求されない限り、TLS経由でSMPP 3.4にバインドしてください。インストールベース、ツール、通信事業者のサポートはすべて3.4に基づいています。また、商用のA2Pルートにおいて、5.0による到達率の優位性はありません。
回答全文を読むSMPP 5.0は3.4よりもメッセージの到達率が高いですか?
いいえ。到達率は通信事業者の配信ルートに依存するものであり、SMPPのバージョンによるものではありません。5.0で改善された項目(Unicodeヘッダー、課金用TLV)は、通常3.4の上位にあるアプリケーションレイヤーで処理されます。
回答全文を読むSMPP 3.4でアラビア語や絵文字を送信するにはどうすればよいですか?
data_codingをUCS-2 (0x08)に設定するか、本文をmessage_payload TLVで送信してください。3.4はUnicodeコンテンツを問題なく処理できるため、そのために5.0を使用する必要はありません。
回答全文を読むどのバインドタイプとポートを使用すべきですか?
TLS経由のトランスシーバーバインドはA2Pの標準であり、1つのソケットでsubmit_smの送信とDLRの受信を行います。BroadNetではSMPP 3.4バインドを提供しています。ホスト、ポート、および認証情報は、テストアクセスのお申し込み時に提供されます。
回答全文を読む