SMPP Protokolü ve BindSm Komutu

Batuhan Düzgün tarafından yayınlanmıştır 27. May 2012 02:51

Merhaba arkadaşlar bu yazıda sizlere SMPP protokolü devamı niteliğinde olan SMPP protokol giriş ve BindSm, BindSmResp komutlarından bahsedeceğim. Bu yazıda Toplu SMS gönderim yapabilen SMPP protokolünde bağlantı kurulumu nasıl yapılır ona değineceğim. Ayrıca, OPENSMPP API üzerinden kod örneği vererek yazıyı pekiştireceğim.
 
SMPP Nedir?
 
SMPP, Short Message Peer To Peer olarak yani noktadan noktaya kısa mesaj gönderim protokolüdür. Şu denilebilir. Zaten GSM network üzerinden mobil telefonlar arası SMS gönderimi yapılıyor. Neden böyle bir protokole ihtiyaç duyuldu ? Sorunun cevabı gayet basit, reklam amaçlı, bildirim amaçlı geniş kitlelere SMS gönderimleri yapabilmek içindir. Yani toplu SMS gönderimlerini gerçekleştirebilmek nedeniyle böyle bir protokol ortaya çıkarıldı. SMPP' nin yaptığı iş tam olarak şudur; kullanıcılardan veya uç birimlerden aldığı SMS isteklerini TCP/IP yoluyla SMSC' lere (Short Message Service Centre) iletilir. Bu mimaride Client birimler ESME (External Short Message Entity) olarak, Server rolünü üstlenmiş yazılımlar ise SMSC olarak adlandırılır. Bu iki uç birim arasında noktadan noktaya paket transferi yapılır. Böylece internet yoluyla hazırlanan SMS istek paketleri karşıdaki SMSC'ye gönderilir. Buraya gelen istekler kuyruklara dağıtılır. (Ki bu yapı genelde veritabanı sistemi şeklindedir. Bunun için bir veritabanı mimarisi hazırlanacaktır.) Kuyruklara giren SMS istekleri daha sonra GSM operatöründeki donanımlar vasıtasıyla GSM Ağı üzerinden mobil telefonlara ulaştırılır.
 
Böylesine ağır bir veri akışının olduğu, ki milyonlarca SMS istekleri dahi gerçekleşebilir, bir sistemde ilk ve sağlıklı bağlantı kurulumu çok önemlidir. Çünkü gerçekleştirilmek istenen bağlantı isteği lumlu sonuçlanmazsa diğer adımlara geçmenin bir mantığı yoktur. İşte bu yazıda SMPP protokolü için bağlantı isteğini dile getiren komut BindSm paket yapısıdır. 
 
SMPP Yapısına bir örnek aşağıdaki gibidir. 
  
BindSm Nedir ?
 
BindSm komutu SMPP protokülünde ESME ile SMSC arasında bağlantı kurulumu için tasarlanmış bir paket yapısıdır. Bu komutun kendine ait bir çerçeve yapısı yani formatı vardır.  
  
BindSm Formatı (Çerçeve Yapısı) ...
 
BindSm komutu için üç tip bulunmaktadır. SMSC'ye yapılan bağlantı isteği çeşitli işlevleri sağlaması istenebilir. Bu nedenle 3 çeşit bağlantı çeşidi bulunmaktadır.
 
- Receiver Mode (BOUND_RX) : Bu bağlantı modunda SMSC'ye bağlanan ESME uygulaması, sadece SMSC'den gelen paketleri dinler. SMSC'ye herhangi bir paket gönderiminde bulunmaz. Yani Receiver modda açılan bir SMPP bağlantısı, TCP/IP bağlantısı sadece tek yönlü dinler ve SMSC'den gelen paketleri kabul eder. Yani Receiver bağlantı modunda SMSC'ye SMS istekleri gönderilemez. Çünkü, işlevi ve amacı sadece SMSC'den gelenleri almakt ve işlemektir.
 
- Transmitter Mode (BOUND_TX) : Bu bağlantı modunda SMSC'ye bağlanan ESME uygulaması, sadece SMSC'ye paket ve istek gönderir. Yani SMSC'den gelen paket ve istekleri dinlemez ve kabul etmez. Yaptığı iş var olan SMPP isteklerini ve paketlerini SMSC'ye göndermektir.
 
-Transceiver Mode (BOUND_TRX) : Bu bağlantı modunda ise SMSC'ye paketde gönderilir. SMSC'den gelen paketlerde dinlenir ve kabul edilir. Yani yukarıdaki iki iletişim türünün birleşimidir.
 
SMPP Header Yapısı ...
 
İlk olarak paketin başına yerleştirilecek olan SMPP Header yapısından bahsetmek gerekir. SMPP Header başlığı her paketin öncesine mutlaka konulmalıdır. Bu  başlık yapısı içinde komut tipi, komut uzunluğu, sıra numarası ve durum bilgisi gibi değerler yer alır. Aşağıda verilmiştir.
 
 
 
SMPP Body Yapısı ... 
 
SMPP header yerleştirildikten sonra SMPP Body kısmı yerleştirilir. Bu yapıda, iletişim için gerekli olan TON, NPI, Address Range, System Id ve Password gibi alanlara dair bilgiler yerleştirilir. 
 
System Id : SMSC'de tanımlanmış ESME kimliğidir. Örneğin : SMSC bana batux adında bir System id tanımlayabilir.
Password : Tanımlanmış olan sistem kimliği için gerekli olan şifredir. SMSC tarafından verilir.
TON Değeri : ESME üzerinden yapılacak isteklerin, yani telefon numaralarının tipini verir. Mesela International uluslararası numara  formatıdır.
NPI Değeri : ESME üzerinden yapılacak isteklerin, yani telefonların WAP, National veya başka numara formatında gideceğini gösterir.
 
 
 
Yukarıdaki yapılar birleştirildiğinde BindSm paketi oluşturulmuş olunur. Ayrıca buna ek olarak opsiyonel parametreler adı altında sistemin daha da genişlemesi için TLV adında paketcikler BindSm paketinin gövdesine aek olarak yerleştirilebilir. Her TLV paketinin kendine özgü bir anlamı ve işlevi vardır. TLV Tag, Length ve Value'dan meydana gelmektedir. 
 
Şimdide OPENSMPP üzerinden BindSm gönderimine basit bir örnek verelim. Kodlar aşağıdaki gibidir ve Java dilinde yazılmıştır.
 
 
 
Bağlantı isteği kurulduktan sonra paket iletimi sağlıklı bir şekilde başlanır. Dikkat ederseniz Bind isteği için bir BindSmResp paketi senkron olarak beklenir. Yani bu şu anlama gelir; Bind işlemi başarılı olmadan diğer işlemlere başlanmamalıdır.
 
Umarım zevkle okuyacağınız bir yazı olmuştur. Bir sonraki makalemde görüşmek dileğiyle ...
 
Batuhan Düzgün
Bilgisayar Mühendisi
Endüstri Mühendisi 

Currently rated 4.0 by 4 people

  • Currently 4/5 Stars.
  • 1
  • 2
  • 3
  • 4
  • 5

Etiketler:

Java | SMPP Protokolü

Comments

Add comment


(Will show your Gravatar icon)  

  Country flag

biuquote
  • Comment
  • Preview
Loading





Bu site BlogEngine.NET 1.4.5.0 ile oluşturulmuştur. Türkçe çevirisi BlogEngine TR ekibi tarafından yapılmıştır.

Batuhan Düzgün

Sakarya Üniversitesi 

Bilgisayar Mühendisi

Endüstri Mühendisi

Yeditepe Üniversitesi

Bilgisayar Mühendisliği Yüksek Lisans 

 sahibinden.com

   Kıdemli Uzman Yazılım Mühendisi  

E-Mail 

   batuhan.duzgun@sahibinden.com

   batuhan.duzgun@windowslive.com

  github.com/batux

 

Sayfalar

Calendar

<<  November 2018  >>
MoTuWeThFrSaSu
2930311234
567891011
12131415161718
19202122232425
262728293012
3456789

Yazıları geniş takvimde göster