SMPP - Protokol Peer-to-Peer Mesej Ringkas

hello! Walaupun utusan dan rangkaian sosial menggantikan kaedah komunikasi tradisional setiap hari, ini tidak menjejaskan populariti SMS. Pengesahan pada tapak yang popular, atau pemberitahuan transaksi diulang, mereka hidup dan akan hidup. Pernahkah anda terfikir bagaimana ia berfungsi? Selalunya, protokol SMPP digunakan untuk menghantar mesej massa, yang akan dibincangkan di bawah.

Sudah ada artikel tentang Habré tentang smpp, 1,2, tetapi matlamat mereka bukan untuk menerangkan protokol itu sendiri. Sudah tentu, anda boleh segera bermula dari sumber asal - spesifikasi, tetapi saya rasa lebih baik jika terdapat ringkasan ringkas mengenainya. Saya akan menerangkan menggunakan v3.4 sebagai contoh. Saya akan gembira untuk kritikan objektif anda.

Protokol SMPP ialah protokol pemesejan rakan ke rakan. Ini bermakna setiap pelayan rakan sebaya/hab mempunyai hak yang sama. Dalam kes paling mudah, skema pemesejan SMS kelihatan seperti ini:

SMPP - Protokol Peer-to-Peer Mesej Ringkas

Walau bagaimanapun, jika pengendali negara tidak mempunyai laluan ke beberapa wilayah terpencil, dia meminta perantara untuk ini - hab SMS. Kadangkala, untuk menghantar satu SMS, anda perlu membina rantaian antara beberapa negara, malah benua.

Mengenai protokol

SMPP ialah protokol lapisan aplikasi yang berdasarkan pertukaran PDU dan dihantar melalui TCP / IP, atau sesi X25 untuk menghantar mesej SMS dan ussd. Biasanya, SMPP digunakan dalam mod berterusan, yang membantu menjimatkan masa. SMPP menggunakan model komunikasi pelanggan-pelayan.

Mod komunikasi

SMPP - Protokol Peer-to-Peer Mesej Ringkas

Pertukaran mesej antara pengirim dan pusat SMS melalui SMPP boleh dilakukan dalam mod berikut:

Pemancar (transmitter) - menghantar mesej dalam satu arah, satu demi satu
Penerima - hanya menerima mesej daripada pusat SMS.
Transceiver (transceiver) - Pertukaran mesej antara pusat SMS dan pengguna

Struktur

SMPP - Protokol Peer-to-Peer Mesej Ringkas

Panjang mesej

Satu mesej SMS boleh mengandungi 70 aksara apabila menaip dalam Cyrillic dan tidak lebih daripada 157 aksara Latin + 3 UDH Jika anda menghantar SMS dengan sejumlah besar aksara, ia akan dibahagikan kepada beberapa segmen dan digabungkan dalam peranti penerima. Dalam kes pembahagian, bilangan aksara dikurangkan oleh pengepala mesej, yang menunjukkan sebahagian daripada mesej. Oleh itu, apabila menghantar mesej SMS yang besar, ia mengandungi maksimum 153 aksara Latin atau 67 aksara atipikal.

Skim Pengekodan Data

Walau bagaimanapun, simbol memerlukan pengekodan untuk menyampaikan mesej. Dalam protokol SMPP, medan khas bertanggungjawab untuk pengekodan - Skim Pengekodan Data, atau DCS. Ini ialah medan yang menentukan cara mesej harus dikenali. Di samping itu, medan DCS termasuk:

  • set aksara yang mentakrifkan pengekodan;
  • kelas mesej;
  • permintaan untuk pemadaman automatik selepas membaca;
  • petunjuk pemampatan mesej;
  • bahasa mesej siaran;

Abjad 7-bit standard (GSM 03.38). Ia dibangunkan untuk sistem pemesejan GSM. Pengekodan ini sesuai untuk bahasa Inggeris dan beberapa bahasa Latin. Setiap aksara terdiri daripada 7 bit dan dikodkan menjadi oktet.

UTF-16 (dalam GSM UCS2) Untuk memasukkan aksara yang hilang dalam abjad 7-bit, pengekodan UTF-16 telah dibangunkan, yang menambah aksara tambahan (termasuk Cyrillic) dengan mengurangkan saiz mesej daripada 160 kepada 70; pengekodan jenis ini hampir mereplikasi Unicode sepenuhnya.

Data yang ditentukan pengguna 8-bit. Ini termasuk KOI8-R dan Windows-1251. Walaupun penyelesaian ini kelihatan lebih menjimatkan berbanding dengan UTF-16 yang sama. Persoalan yang munasabah timbul tentang keserasian pada peranti yang berbeza. Kerana dalam kes ini, kedua-dua peranti mesti dikonfigurasikan terlebih dahulu.

Kelas mesej

  • Class0, atau flash, mesej yang disimpan dalam memori telefon mengikut budi bicara pengguna;
  • Kelas1, atau yang disimpan dalam ingatan telefon;
  • Kelas1, atau yang disimpan dalam ingatan telefon;
  • Class2 mesti memastikan bahawa mesej disimpan dalam memori terminal mudah alih, jika tidak, ia mesti memaklumkan pusat SMS tentang kemustahilan menyimpan;
  • Class3 - dalam kes ini, telefon mesti menghantar pemberitahuan bahawa mesej boleh disimpan, tanpa mengira jumlah memori dalam peranti. Jenis mesej ini membayangkan bahawa mesej telah sampai kepada penerima;

Jenis Mesej

Mesej senyap (SMS0) Jenis mesej SMS tanpa kandungan. SMS ini tiba tanpa pemberitahuan dan tidak dipaparkan pada skrin peranti.

PDU

Setiap operasi pdu dipasangkan dan terdiri daripada permintaan dan respons. Contohnya: arahan yang mengatakan bahawa sambungan telah diwujudkan (bind_transmitter / bind_transmitter_resp), atau bahawa mesej telah dihantar (deliver_sm / deliver_sm_resp)

SMPP - Protokol Peer-to-Peer Mesej Ringkas

Setiap paket pdu terdiri daripada dua bahagian - pengepala dan badan. Struktur pengepala adalah sama untuk mana-mana paket pdu: panjang arahan ialah panjang paket, id ialah nama paket dan perintah status menunjukkan sama ada mesej berjaya dihantar atau dengan ralat.

Parameter TLV tambahan

TLV (Nilai Panjang Teg), atau medan tambahan. Parameter sedemikian digunakan untuk mengembangkan fungsi protokol dan tidak diperlukan. Medan ini muncul di hujung medan pdu. Sebagai contoh, menggunakan TLV dest_addr_np_information, anda boleh mengatur penghantaran maklumat tentang mudah alih sesuatu nombor.

Ton dan Npi

Parameter TON (Type of Number) memberitahu SMSC tentang format pengalamatan dan jenis rangkaian.
Parameter NPI (Numbering Plan Identification) yang menunjukkan pelan penomboran.

SMPP - Protokol Peer-to-Peer Mesej Ringkas

Alamat sumber mesej, atau nama alfa

Mesej yang dihantar ke telefon anda terdapat dalam dua jenis: digital dan abjad. Nombor digital boleh panjang (serupa dengan nombor telefon) atau pendek. Kadangkala pengendali mempunyai sekatan untuk menghantar daripada nama neutral, contohnya Infosms, Alert dsb. Kadangkala pengendali tidak akan membenarkan lalu lintas jika nama itu tidak didaftarkan pada rangkaian mereka. Walau bagaimanapun, ini adalah ciri pengendali.

Peringkat penyerahan

SMPP - Protokol Peer-to-Peer Mesej Ringkas

SMS-HANTAR - ini menghantar mesej MO FSM (mesej ringkas daripada terminal mudah alih)
SMS-HANTAR LAPORAN — pengesahan bahawa mesej telah dihantar oleh SMSC
SRI SM (SendRoutingInfo) - SMSC menerima maklumat daripada HLR mengenai lokasi MSC / VLR pelanggan
SRI SM RESP — maklum balas daripada HLR berkenaan daging kedudukan pelanggan
MT-FSM — selepas menerima lokasi, mesej dihantar menggunakan operasi “Majukan Mesej Ringkas”.
MT-FSM ACK — maklum balas daripada SMSC bahawa mesej telah dihantar
LAPORAN STATUS SMS — SMSC menghantar status penghantaran mesej.

Status penghantaran mesej

LAPORAN STATUS SMS boleh mengambil beberapa nilai:
DELIVRD mesej berjaya dihantar
DITOLAK — mesej ditolak oleh pusat SMS
EXPIRED — mesej dikeluarkan daripada baris gilir penghantaran selepas tamat TTL (seumur hidup mesej)
UNDELIV - kes lain tidak bersalin
Tidak diketahui-tiada balasan diterima berkenaan penghantaran.

Kesilapan pemindahan

Kadangkala terdapat sebab mengapa mesej SMS tidak dihantar kepada pelanggan. Akibat daripada sebab-sebab ini adalah berlakunya kesilapan. Ralat dikembalikan kepada PDUs_sms_resp. Semua ralat boleh dibahagikan kepada sementara (Sementara) dan kekal (Kekal).

Sebagai contoh, absent_subscriber boleh diklasifikasikan sebagai sementara - pelanggan tidak tersedia atau tidak dalam talian, dan kekal - pelanggan tidak wujud. Bergantung pada ralat yang berlaku, dasar untuk menghantar semula mesej ini dibentuk.

Contohnya, jika pelanggan sibuk dalam panggilan dan menerima ralat telefon bimbit MT sibuk, mesej itu boleh dihantar semula selepas beberapa minit, namun, jika perkhidmatan penerimaan mesej pelanggan disekat, menghantar semula sekali lagi tidak akan masuk akal. Anda boleh mencari senarai ralat pada halaman SMSC, contohnya, seperti эта.

Sumber: www.habr.com

Tambah komen