www.fatihkabakci.com

Personal Website and Computer Science TUR EN

OTURUM BASLATMA PROTOKOLU

Last update: 5/1/2015 11:15:00 AM

Yazan:Fatih KABAKCI

SIP(Session Initiation Protocol-Oturum Baslatma Protokolu) HTTP ve SMTP protokolleri gibi,client-server ortaminda insan ve cihazlar arasinda iletisimi saglayan bir protokoldur.SIP bu iletisimi saglarken istemciden sunucuya(Request) ve sunucudan istemciye(server) dogru iki tipte mesaj modeli kullanir(ayni HTTP protokolunde oldugu gibi).SIP,Internet telefonu icin ek sik kullanilan protokoldur.

SIP 4 adet varliktan olusmaktadir.
  • User Agent
  • Iki tipte kullanilan Client User Agent(Client UA) ve Server User Agent(Server UA) mekanizmalari sirasiyla istekleri sunucuya ileten ve gelen istekleri cevaplayarak istemciye ileten distributorlerdir.
  • Proxy Servers
  • Network'e aktarilan mesajlari dogru router'lere aktaran sunuculardir.
  • Redirect Servers
  • Iletisim sirasinda gonderilecek mesaj icin,yeni bir adres olusturabilen veya ilgili mesaji farkli router'lere yonlendirebilem sunuculardir.
  • Registrar
  • Kullanicilari kaydedererek ilistirdigi paketleri network'e aktaran bir mekanizmadir.

Mesaj Yapisi

  • Start Line:
  • Baslangic hatti iki tiptir.Client tarafindan gonderilen Request Line ve Server tarafindan gonderilen Status Line.
  • Headers:
  • Ek bilgiler icin ayrilmis alanlardir(kaynak ve varis adresleri,hop sinir degeri,verinin uzunlugu vs). Hop Count,Network uzerinde dolasan bir paketin(veri paketi) belirli sayida router uzerinden gecme miktarina denir.Ornegin hop limit 3 olan bir protokolde,bir paket en fazla 3 router uzerinden gecebilir.
  • Seperator Line:
  • Header ve Body arasindaki verileri ayiran bir alandir.
  • Body:
  • Asil olan verinin kendisidir(payload).Ikili(binary) ve textural tipli bir mesaj metnidir.

Istek(Request)

SIP protokolunde kullanilan bir takim fonksiyonlar ve gorevleri asagida verilmektedir.

INVITESIP oturumunu baslatir ve session parametreleri ayarlanir
REGISTERUser Agent'i dogrular ve aga mevcut lokasyonu saglar.
BYEOturumu sonlandirir.
ACKInvite istediginin alindigini belirtir.
CANCELIstegi iptal eder.
OPTIONSHattin kapasitesini sorgular.

INFOSession bilgisi.
MESSAGEAnlik iletiyi(instant message) transfer etmek icin kullanilir.
NOTIFYOlaylarin sonucunu bildirir.SUBSCRIBE istekleri ile birlikte kullanilir.
PRACKGecici cevaplarin alindigini onaylar(ACK).
PUBLISHServis oncesinde anlik ileti icin durum bilgisi saglar
REFERBir istegi daha uygun bir sekilde bir baskasina geciren mekanizmadir.
SUBSCRIBEBir sonraki NOTIFY ve PUBLISH isteklerinin alindigini gostermek icin kullanilir.

Cevap(Response)

Her cevap ya gecici(provisional) ya da sabit(final) olarak karakterize edilmektedir.Her cevap 3 karakter kodlu yapi ile tanimlanir.Bu cevaplarin genel siniflari ise asagida verilmektedir.

1xx Provisional(Ara cevaplar) Isteklerin alindigi onaylar.ACK olmamis Invite'yi cevaplamaz.
2xx Success(Basarim)Istek alinir,islenir ve kabul edilir.
3xx Redirection(Yonlendirme)Alternatif hizmetleri dener ve network uzerinde lokasyon bilgisi saglar.
4xx Request failure(Istemci Hatasi)Sunucu tarafindan islenmemis veya hatali istek.
5xx Server failure(Sunucu Hatasi)Network'un kendi internal(ic) hatasindan dolayi istekleri cevaplayamama durumu.
6xx Global failure(Global,sistematik Hatalar)Istegin yerine getirebilecegi mevcut servisin bulunmamasi durumu.
En sik kullanilan bazi ornek cevap kodlari;
  • (#100) Trying -> Istegin henuz alindigini belirtir.
  • (#180) Ringing -> Bir uctan diger uca giden sesli bildirim.
  • (#200) OK -> Istegin basariyla alindigini belirtir.
  • (#404) Not Found -> Sunucunun kullanicinin IP numarasini tanimlayamama durumu.

Basit bir Senaryo

SIP haberlesmesi icin yukarida anlatilanlar orneklenecektir.'Basic call' diye tabir ettigimiz en temel iletisim senaryosunda Ahmet ve Mehmet adindaki iki kullanicimiz senaryo geregi birbirleri ile iletisime gececektir.

SIP protokolu kullanan Ahmet ve Mehmet aralarında bağlantı kurmak istemektedir.Ahmet,oturumu başlatmak için mehmet'e bir INVITE mesajı gönderir.Bu mesaj bir oturum yoneticisine ulastigi anda mesajin hedefi(destination) tespit edilir ve ilgili uc noktaya(Endpoint) gonderilir.Boylelikle bir oturum baslatilmis olur.Mehmet isteği algıladıktan sonra Ahmet'e sırasıyla istegi ilk defa algiladigini belirten-TRYING,gondericiye sesli bildirim belirten-RINGING ve iletisimi resmen onaylayan-OK onaylama işaretlerini göndererek iletisim isteğini kabul eder.

Ahmet isteği onaylayan Mehmet'e son alarak kendi onay işareti olan ACK'ı göndererek asıl veri(payload) olan media verisini gönderir ve transfer işlemi başlar.Buradaki ACK isareti karsilikli el sikisma islemi olarak da dusunulebilir.Transfer tamamlandıktan sonra Mehmet,Ahmet'e BYE işaretini göndererek oturumu kapatmak ister.Bu isteği kabul eden Ahmet OK mesajı göndererek hattı boşaltmış olur.Burada telefonu kim once kapatirsa BYE isaretini gonderen o kisi olacaktir.

Yukarıdaki bu senaryonun bir görüntüsü aşağıda verilmektedir.

SIP protokolunu kullanan yukarıdaki iki kullanıcının birbirlerine gönderdikleri cevap kodlarının içeriği ise aşağıda verilmiştir.Bu işaretlerin içerikleri kullanılan IP protokolu,oturum yönetici birimi ve URI,IP adreslerine bağlı olarak değişmektedir.Netaşta dahil olduğum bir projede kullandığım bu modülleri belirli kısıtlar altında konunun daha iyi anlaşılması açısından paylaşıyorum.

INVITE

Bir SIP iletişiminin kurulması için bir uç noktadan(endpoint) diğerine gönderilen INVITE mesajı.

RINGING

TRYING sinyalinden sonra iletilen,karşı tarafa bildirim sesi.(Bir telefonu aradığınızdaki ahizeden gelen belirli aralıklarda çalan arama sesi)

OK

INVITE isteğinin alındığı belirten ve iletişime geçmek için hazır olunduğunu söylenen 200 OK mesajı.

ACK

Karşı tarafın kontrol işaretlerinin alındığını bildiren onaylama işareti.

BYE

İletişimi sona erdiğini bildiren işaret.

Ahmet ile Mehmet adlı kullanıcı arasında gerçeklenen bu iletişimin JAVA dilinde oluşturduğu gerçek çıktı ise aşağıdaki gibidir.

Yukaridaki tum bu anlatilanlara gore,bu protokol uzerinde iletisim yapan bir yapiyi Java programlama dilinde modellemek istersek asagidaki gibi bir yapi kurgulanabilir. Bundan dolayi bu yapi sadece mantiksal bir arabirim olarak dusunulmesi,konuyu anlamak icin yararli olacaktir.

SIPUser Sinifi


SIPCall Arayuzu

SIPMessage Sinifi




SIPContact Sinifi


SessionInitiationProtocol Sinifi


Yukarida Java programlama dilinde SIP protokolu haberlesmesi icin olusturulan mantiksal siniflar gosterilmektedir.Bir SIP protokol haberlesmesinde ne gibi bilesenlerin olabilecegi ve bu bilesenler ile bir iletisim sinifinin nasil olusturabileceginin iyi anlasilmasi adina yukaridaki diyagramlar ve siniflar sizler icin hazirlanmistir.Ancak unutulmamalidir ki gercekte yukaridaki siniflarin cok daha karmasik ve fazla olanlari ihtiyaca gore kullanilmaktadir.Yukaridaki siniflari referans alarak veya kendi santraliniz altinda,gerekli SIP,IP URI adreslerini verdiginiz takdirde baglanti konfigurasyonlarini yaparsaniz bir telefon'a baglanarak gercekci siniflarinizi olusturabilirsiniz.
There has been no comment yet

Name:


Question/Comment
   Please verify the image




The Topics in Computer Science

Search this site for





 

Software & Algorithms

icon

In mathematics and computer science, an algorithm is a step-by-step procedure for calculations. Algorithms are used for calculation, data processing, and automated reasoning.

Programming Languages

icon

A programming language is a formal constructed language designed to communicate instructions to a machine, particularly a computer. It can be used to create programs to control the behavior of a machine. Java,C, C++,C#

Database

icon

A database is an organized collection of data. The data are typically organized to model aspects of reality in a way that supports processes requiring information.

Hardware

icon

Computer hardware is the collection of physical elements that constitutes a computer system. Computer hardware refers to the physical parts or components of a computer such as the monitor, memory, cpu.

Web Technologies

icon

Web development is a broad term for the work involved in developing a web site for the Internet or an intranet. Html,Css,JavaScript,ASP.Net,PHP are one of the most popular technologies. J2EE,Servlet, JSP,JSF, ASP

Mobile Technologies

icon

Mobile application development is the process by which application software is developed for low-power handheld devices, such as personal digital assistants, enterprise digital assistants or mobile phones. J2ME

Network

icon

A computer network or data network is a telecommunications network that allows computers to exchange data. In computer networks, networked computing devices pass data to each other along data connections.

Operating Systems

icon

An operating system is software that manages computer hardware and software resources and provides common services for computer programs. The OS is an essential component of the system software in a computer system. Linux,Windows

Computer Science

icon

Computer science is the scientific and practical approach to computation and its applications.A computer scientist specializes in the theory of computation and the design of computational systems.