Hai Meskipun messenger dan jejaring sosial memadati metode komunikasi tradisional setiap hari, ini tidak mengurangi popularitas SMS. Verifikasi pada situs populer, atau notifikasi transaksi, menunjukkan bahwa mereka hidup dan akan hidup. Pernahkah Anda bertanya-tanya bagaimana cara kerjanya? Sangat sering, SMPP digunakan untuk mengirim pesan massal, yang akan dibahas di bawah kucing.
Sudah ada artikel tentang Habr tentang smpp,
1 ,
2 , tetapi tujuan mereka bukan untuk menggambarkan protokol itu sendiri. Tentu saja, Anda dapat segera mulai dengan sumber utama -
spesifikasinya , tetapi saya pikir akan menyenangkan jika memiliki ringkasan singkat. Saya akan menjelaskan dengan contoh v3.4 Saya senang dengan kritik objektif Anda.
SMPP adalah protokol pengiriman peer-to-peer. Ini berarti bahwa setiap server peer / hub sama. Dalam kasus paling sederhana, skema pengiriman pesan SMS terlihat seperti ini:

Namun, jika operator nasional tidak memiliki rute ke beberapa daerah terpencil, ia meminta hub perantara - SMS ini. Terkadang, untuk mengirim satu SMS, Anda perlu membangun rantai antar beberapa negara, atau bahkan benua.
Tentang Protokol
SMPP adalah protokol lapisan aplikasi yang didasarkan pada pertukaran
PDU dan ditransmisikan melalui TCP / IP, atau sesi X25 untuk mengirim sms dan pesan ussd. Biasanya SMPP digunakan dalam mode koneksi konstan, ini membantu menghemat waktu. SMPP menggunakan model komunikasi client-server.
Mode komunikasi

Pertukaran pesan antara pengirim dan
SMSC melalui SMPP dapat dilakukan dalam mode berikut:
Transmitter (pemancar) - pengiriman pesan dalam satu arah, secara bergantian
Receiver (penerima) - hanya menerima pesan dari SMSC.
Transreceiver (transceiver) - Perpesanan antara SMSC dan pengguna
Struktur

Panjang Pesan
Satu SMS-pesan dapat berisi 70 karakter saat mengetik dalam bahasa Cyrillic dan tidak lebih dari 157 karakter Latin + 3
UDH Jika dikirim. SMS dengan sejumlah besar karakter, itu akan dibagi menjadi beberapa segmen dan digabungkan dalam perangkat penerima. Dalam hal segmentasi, jumlah karakter berkurang karena tajuk pesan di mana bagian pesan ditunjukkan. Karena itu, ketika mengirim pesan SMS besar, itu berisi maksimal 153 karakter Latin atau 67 karakter atipikal.
Skema pengkodean data
Namun, karakter harus dikodekan untuk mengirim pesan. Dalam protokol SMPP, bidang khusus bertanggung jawab untuk pengkodean - Skema Pengodean Data, atau DCS. Ini adalah bidang yang menunjukkan bagaimana pesan harus dikenali. Selain itu, bidang DCS meliputi:
- set karakter yang mendefinisikan encoding;
- pesan kelas;
- meminta penghapusan otomatis setelah membaca;
- indikasi kompresi pesan;
- bahasa siaran;
Alfabet 7-bit standar (GSM 03.38). Ini dikembangkan untuk sistem pesan GSM. Pengkodean seperti ini cocok untuk bahasa Inggris dan beberapa bahasa Latin. Setiap karakter terdiri dari 7 bit dan dikodekan dalam oktet.
UTF-16 (dalam GSM UCS2) Untuk memasukkan karakter yang hilang dalam pengkodean 7-bit, pengkodean UTF-16 dikembangkan yang menambahkan karakter tambahan (termasuk Cyrillic) dengan mengurangi ukuran pesan dari 160 menjadi 70, jenis pengkodean ini hampir sepenuhnya mengulangi Unicode
Data yang ditentukan pengguna 8-bit. Ini termasuk KOI8-R dan Windows-1251. Meskipun solusi ini tampaknya lebih ekonomis dibandingkan dengan UTF-1 yang sama, untuk menggunakan pengkodean seperti itu, diperlukan konfigurasi awal pada perangkat penerima dan pemancar. Jika pada beberapa dari mereka data penyandian tidak didukung, pesan tidak akan ditampilkan dengan benar. Karena dalam kasus ini, kedua perangkat harus dikonfigurasi terlebih dahulu.
Pesan kelas
- Class0, atau flash, pesan yang disimpan dalam memori telepon atas permintaan pengguna;
- Class1, atau yang disimpan di telepon;
- Class2, harus memastikan bahwa pesan disimpan dalam memori terminal seluler, jika tidak, ia harus memberi peringatan kepada SMSC tentang ketidakmampuan untuk menyimpan;
- Class3 - dalam hal ini, ponsel harus mengirim pemberitahuan bahwa pesan dapat disimpan, terlepas dari jumlah memori dalam perangkat. Jenis pesan ini menyiratkan bahwa pesan telah mencapai tujuannya;
Jenis pesan
Pesan senyap (SMS0) Jenis pesan SMS tanpa konten. SMS semacam itu datang tanpa pemberitahuan dan tidak ditampilkan di layar perangkat.
PDU
Setiap operasi pdu dipasangkan dan terdiri dari permintaan dan respons. Misalnya: perintah yang mengatakan tentang membuat koneksi (bind_transmitter / bind_transmitter_resp), atau bahwa pesan telah dikirim (deliver_sm / deliver_sm_resp)

Setiap paket pdu terdiri dari dua bagian - header dan badan. Struktur header adalah sama untuk setiap paket pdu: panjang perintah adalah panjang paket, id adalah nama paket, dan perintah status menunjukkan pesan yang berhasil dikirim, atau dengan kesalahan.
Opsi TLV Tingkat Lanjut
TLV (Nilai Panjang Tag), atau bidang opsional. Parameter tersebut digunakan untuk memperluas fungsi protokol dan tidak diperlukan. Bidang ini ditunjukkan di akhir bidang pdu. Sebagai contoh, menggunakan TLV dest_addr_np_information, Anda dapat mengatur transfer informasi tentang porting nomor.
Ton dan Npi
Parameter TON (Type of Number), menginformasikan SMSC tentang format pengalamatan dan tipe jaringan.
Parameter NPI (Numbering Plan Identification) yang menunjukkan rencana penomoran.

Alamat sumber pesan, atau nama alfa
Pesan yang dikirim ke telepon terdiri dari dua jenis: digital dan alfabet. Digital bisa panjang (mirip dengan nomor telepon) dan pendek. Terkadang operator memiliki batasan pengiriman dari nama netral, misalnya Informasi, Peringatan, dll. Terkadang operator tidak mengizinkan lalu lintas jika nama tersebut tidak terdaftar di jaringan mereka. Namun, ini lebih merupakan fitur dari operator.
Tahap pengiriman
SMS-SUBMIT mengirim pesan MO FSM (pesan singkat dari terminal seluler)
LAPORAN PENGIRIMAN SMS - konfirmasi bahwa pesan dikirim oleh SMSC
SRI SM (SendRoutingInfo) - SMSC menerima informasi dari HLR mengenai MSC / VLR dari lokasi pelanggan
SRI SM RESP - respons dari HLR mengenai posisi daging pelanggan
MT-FSM - setelah menerima lokasi, pesan dikirim menggunakan operasi “Forward Short Message”
MT-FSM ACK - balas dari SMSC bahwa pesan telah dikirim
LAPORAN STATUS SMS - SMSC mengirim status pengiriman pesan.
Status Pengiriman Pesan
LAPORAN SMS-STATUS dapat mengambil beberapa nilai:
Pesan
DELIVRD berhasil terkirim
REJECTD - pesan ditolak oleh pusat SMS
EXPIRED - pesan dihapus dari antrian kirim setelah akhir TTL (masa pakai pesan)
UNDELIV - kasus non-pengiriman lainnya
TIDAK DIKETAHUI - tidak ada balasan balasan yang diterima.
Kesalahan transmisi
Terkadang pesan tidak terkirim. Akibatnya, terjadi kesalahan. Kesalahan dikembalikan ke PDUs_sms_resp. Semua kesalahan dapat dibagi menjadi sementara (Sementara) dan permanen (Permanen).
Sebagai contoh, yang sementara adalah absent_subscriber, pelanggan tidak tersedia atau tidak di jaringan, dan pelanggan permanen tidak ada. Bergantung pada kesalahan yang terjadi, kebijakan untuk meneruskan pesan-pesan ini dibentuk.
Misalnya, jika pelanggan sibuk berbicara dan menerima handset MT sedang sibuk kesalahan, pesan dapat dikirim lagi dalam beberapa menit, namun, jika pelanggan memiliki layanan pesan yang diblokir, pengiriman ulang tidak masuk akal. Anda dapat menemukan daftar kesalahan pada halaman SMSC, misalnya, seperti
ini .