SMPP - Peer-to-Peer Short Message Protocol

Сайн уу? Шуурхай мессенжерүүд болон олон нийтийн сүлжээнүүд өдөр бүр харилцааны уламжлалт аргуудыг сольж байгаа ч энэ нь SMS-ийн алдар нэрийг бууруулдаггүй. Алдартай сайт дээрх баталгаажуулалт, эсвэл гүйлгээний мэдэгдэл нь тэд амьдарч, амьдрах болно. Энэ бүхэн хэрхэн ажилладаг талаар та бодож үзсэн үү? Ихэнх тохиолдолд SMPP протоколыг бөөнөөр нь мессеж илгээхэд ашигладаг бөгөөд үүнийг захын дагуу хэлэлцэх болно.

Хабре аль хэдийн smpp-ийн тухай нийтлэлүүдтэй байсан. 1,2, гэхдээ тэдний зорилго нь протоколыг өөрөө тайлбарлах явдал биш байв. Мэдээжийн хэрэг, та тэр даруй эх сурвалжаас эхэлж болно - техникийн үзүүлэлтүүд, гэхдээ агуулгынх нь хураангуй байвал зүгээр байх гэж бодож байна. Би v3.4-ийг жишээ болгон тайлбарлах болно.Таны бодитой шүүмжлэлд би баяртай байна.

SMPP протокол нь үе тэнгийнхэн хоорондын мессежийн протокол юм. Энэ нь peer/hub сервер бүр тэнцүү гэсэн үг. Хамгийн энгийн тохиолдолд SMS мессежийн схем дараах байдалтай байна.

SMPP - Peer-to-Peer Short Message Protocol

Гэсэн хэдий ч, хэрэв үндэсний оператор нь маршрутгүй бол тэр алслагдсан бүс нутагт зуучлагчаас асуудаг - SMS төв. Заримдаа нэг SMS илгээхийн тулд хэд хэдэн улс, тэр ч байтугай тивүүдийн хооронд сүлжээ үүсгэх шаардлагатай болдог.

Протоколын тухай

SMPP нь PDU солилцоход суурилсан хэрэглээний түвшний протокол бөгөөд SMS болон ussd мессеж илгээх TCP / IP эсвэл X25 сессээр дамждаг. Ихэвчлэн SMPP нь байнгын холболтын горимд ашиглагддаг бөгөөд энэ нь цаг хэмнэдэг. SMPP нь үйлчлүүлэгч серверийн харилцааны загварыг ашигладаг.

Харилцааны горим

SMPP - Peer-to-Peer Short Message Protocol

Илгээгч болон SMS төв хооронд SMPP-ээр дамжуулан мессеж солилцох ажлыг дараахь горимд хийж болно.

Дамжуулагч (дамжуулагч) - мессежийг нэг чиглэлд, ээлжлэн дамжуулах
Хүлээн авагч (хүлээн авагч) - зөвхөн SMS төвөөс мессеж хүлээн авах.
Transceiver (transceiver) - SMS төв болон хэрэглэгчийн хооронд мессеж солилцох

бүтэц

SMPP - Peer-to-Peer Short Message Protocol

Зурвасын урт

Нэг SMS мессеж нь кирилл үсгээр бичихэд 70 тэмдэгт агуулсан байх ба 157 латин үсгээс илүүгүй + 3 UDH Хэрэв та олон тооны тэмдэгттэй SMS илгээвэл хэд хэдэн сегментэд хуваагдаж, хүлээн авагч төхөөрөмжид нэгтгэгдэнэ. Сегментчлэлийн хувьд тэмдэгтүүдийн тоог мессежийн хэсгийг заадаг мессежийн толгойгоор багасгадаг. Тиймээс том хэмжээний SMS мессеж илгээхдээ дээд тал нь 153 латин тэмдэгт буюу ердийн бус 67 тэмдэгт агуулсан байна.

Өгөгдлийн кодчилолын схем

Гэсэн хэдий ч мессежийг дамжуулахын тулд тэмдэгтүүдийг кодлох шаардлагатай. SMPP протоколд тусгай талбар нь кодчиллыг хариуцдаг - Өгөгдлийн кодчилолын схем эсвэл DCS. Энэ нь мессежийг хэрхэн танихыг заасан талбар юм. Үүнээс гадна, DCS талбар нь:

  • кодчиллыг тодорхойлсон тэмдэгтийн багц;
  • мессежийн ангилал;
  • уншсаны дараа автоматаар устгах хүсэлт;
  • мессежийг шахах шинж тэмдэг;
  • өргөн нэвтрүүлгийн мессежийн хэл;

Стандарт 7 бит цагаан толгой (GSM 03.38). Энэ нь GSM дахь мессежийн системд зориулагдсан болно. Энэхүү кодчилол нь англи болон хэд хэдэн латин хэлэнд тохиромжтой. Тэмдэгт бүр 7 битээс бүрдэх ба октетт кодлогддог.

UTF-16 (GSM UCS2-д) 7 битийн цагаан толгойн үсгийн дутуу тэмдэгтүүдийг оруулахын тулд UTF-16 кодчилол боловсруулсан бөгөөд энэ төрлийн кодчилол нь мессежийн хэмжээг 160-аас 70 болгон бууруулж нэмэлт тэмдэгтүүдийг (кирилл үсэг оруулаад) нэмдэг. бараг бүрэн Юникод давтдаг.

8 битийн хэрэглэгчийн тодорхойлсон өгөгдөл. Үүнд KOI8-R болон Windows-1251 орно. Хэдийгээр энэ шийдэл нь ижил UTF-16-тай харьцуулахад илүү хэмнэлттэй мэт санагдаж байна. Янз бүрийн төхөөрөмж дээр нийцтэй байх үндэслэлтэй асуулт байна. Энэ тохиолдолд хоёр төхөөрөмжийг урьдчилан тохируулсан байх ёстой.

Мессежийн анги

  • Class0 буюу флаш, хэрэглэгчийн хүсэлтээр утасны санах ойд хадгалагдсан мессеж;
  • Class1 буюу утасны санах ойд хадгалагдсан;
  • Class1 буюу утасны санах ойд хадгалагдсан;
  • 2-р анги нь мессежийг гар утасны терминалын санах ойд хадгалах ёстой, эс тэгвээс хадгалах боломжгүй тухай SMS төвд мэдэгдэл өгөх ёстой;
  • Ангилал3 - энэ тохиолдолд утас нь төхөөрөмжийн санах ойн хэмжээнээс үл хамааран мессежийг хадгалах боломжтой гэсэн мэдэгдлийг илгээх ёстой. Энэ төрлийн мессеж нь мессеж хүрэх газартаа хүрсэн гэсэн үг юм;

Мессежийн төрөл

Чимээгүй мессеж (SMS0) Агуулгагүй SMS мессежийн төрөл. Ийм SMS мэдэгдэлгүйгээр ирдэг бөгөөд төхөөрөмжийн дэлгэц дээр харагдахгүй.

PDU

Pdu үйлдэл бүр нь хосолсон бөгөөд хүсэлт, хариултаас бүрдэнэ. Жишээ нь: холболт үүссэн гэсэн команд (bind_transmitter / bind_transmitter_resp) эсвэл мессеж илгээсэн (deliver_sm / delivery_sm_resp)

SMPP - Peer-to-Peer Short Message Protocol

Pdu багц бүр нь толгой (толгой) ба их бие (бие) гэсэн хоёр хэсгээс бүрдэнэ. Толгойн бүтэц нь ямар ч pdu пакетийн хувьд ижил байна: тушаалын урт нь пакетийн урт, id нь пакетийн нэр, статус тушаал нь мессеж амжилттай илгээгдсэн эсвэл амжилтгүй болсон эсэхийг заана.

Нэмэлт TLV параметрүүд

TLV (Тагийн уртын утга) эсвэл нэмэлт талбарууд. Ийм параметрүүдийг протоколын үйл ажиллагааг өргөтгөхөд ашигладаг бөгөөд сонголттой байдаг. Энэ талбарыг pdu талбарын төгсгөлд зааж өгсөн болно. Жишээлбэл, dest_addr_np_information TLV-г ашиглан та дугаарыг шилжүүлэх тухай мэдээллийг дамжуулах ажлыг зохион байгуулж болно.

Тон ба Нпи

TON (Type of Number) параметр нь SMSC-д хаягийн формат болон сүлжээний төрлийг мэдээлдэг.
Дугаарлалтын төлөвлөгөөг харуулсан NPI (Дугаарлах төлөвлөгөөний тодорхойлолт) параметр.

SMPP - Peer-to-Peer Short Message Protocol

Мессежийн эх хаяг эсвэл альфа нэр

Утас руу илгээсэн мессеж нь тоон болон цагаан толгойн гэсэн хоёр төрөлтэй. Тоонууд нь урт (утасны дугаартай төстэй) эсвэл богино байж болно. Заримдаа операторууд Infosms, Alert гэх мэт төвийг сахисан нэрээр илгээхэд хязгаарлалт тавьдаг. Заримдаа операторууд нэр нь сүлжээндээ бүртгэгдээгүй тохиолдолд урсгалыг зөвшөөрдөггүй. Гэхдээ энэ нь операторын онцлог шинж чанар юм.

Өргөдөл гаргах үе шатууд

SMPP - Peer-to-Peer Short Message Protocol

SMS-ИЛГЭЭХ MO FSM мессеж илгээж байна (мобайл терминалаас богино мессеж)
SMS-ИЛГЭЭХ ТАЙЛАН - мессежийг SMSC-ээр илгээсэн болохыг баталгаажуулах
SRI SM (SendRoutingInfo) - SMSC нь захиалагчийн MSC/VLR байршлын талаарх мэдээллийг HLR-ээс хүлээн авдаг.
SRI SM RESP - захиалагчийн албан тушаалын махтай холбоотой HLR-ийн хариу
MT-FSM - байршлыг хүлээн авсны дараа "Богино мессеж дамжуулах" үйлдлийг ашиглан мессеж илгээдэг
MT-FSM-ACK - SMSC-ээс мессеж илгээсэн гэсэн хариу
SMS БАЙДЛЫН ТАЙЛАН — SMSC мессеж хүргэх төлөвийг илгээдэг.

Мессеж хүргэх төлөв

SMS БАЙДЛЫН ТАЙЛАН хэд хэдэн утгыг авч болно:
ХҮРГҮҮЛЭХ мессежийг амжилттай хүргэсэн
ТАТГАЛЗАХГ - SMS төвөөс татгалзсан мессеж
EXPIRED - TTL дууссаны дараа мессежийг илгээх дарааллаас хасна (мессежийн ашиглалтын хугацаа)
БУЦАХ - хүргэгдээгүй бусад тохиолдол
БҮСГҮЙ- Хариу ирээгүй.

Дамжуулах алдаа

Заримдаа SMS мессежийг захиалагчдад хүргэхгүй байх шалтгаанууд байдаг. Эдгээр шалтгааны үр дагавар нь алдаа гарах явдал юм. Алдааг PDUs_sms_resp дотор буцаана. Бүх алдааг түр зуурын (Түр) болон байнгын (Байнгын) гэж хувааж болно.

Жишээлбэл, absent_subscriber нь түр зуурынх, захиалагч нь боломжгүй эсвэл онлайн биш, байнгын - захиалагч байхгүй. Гарч буй алдаанаас хамааран эдгээр мессежийг дахин илгээх бодлогыг бий болгодог.

Жишээлбэл, хэрэв захиалагч ярих завгүй байсан бөгөөд MT гар утас завгүй байна гэсэн алдаа хүлээн авсан бол мессежийг хэдхэн минутын дараа дахин илгээх боломжтой боловч захиалагч мессеж хүлээн авах үйлчилгээг хаасан бол дахин илгээх нь утгагүй болно. Та алдааны жагсаалтыг SMSC хуудаснаас олж болно, жишээлбэл, гэх мэт энэ нь.

Эх сурвалж: www.habr.com

сэтгэгдэл нэмэх