Session Initiation Protocol (SIP) SIP, uygulama katmanında oturum kontrol(signalling) protokoludur. Oturum açar, oturum parametrelerini değiştirir, oturumu sonlandırır. Oturumlar, ip telefon cağrıları, multimedia sunumlar veya konferanslar olabilir. Oturum, iki uç arasında karşılıklı veri paylaşımıdır. SIP, sip proxyler ile çağrıların yönlendirilmesini sağlar, onaylama ve yetkilendirme hizmeti sağlar. Uç noktaları yani oturum eşlerini tespit etmek için sip proxy kullanılır. SIP aynı zamanda mevcut bir oturuma katılımcı cağırabilir. Mevcut oturuma medya ekleyabilir, çıkarabilir. SIP, transparan olarak isim eşlemeyi ve yönlendirmeyi destekleyerek insanların yer değiştirebilmesine imkan sağlar. Kullanıcılar bağlı oldukları ağdan bağımsız olarak her yerde bilinen harici bir tanımlayıcı ile tanımlanırlar. SIP'te, multimedya bağlantısı kurmak ve sonlandırmak 5 ayak üzerine oturur: 1- Kullanıcı konumu: Uç noktanın tespiti için kullanılır. 2- Kullanıcı erişilebilirliği: Bağlantıya katılmak isteyen kullanıcıları tespit etmek 3- Kullanıcı kapasiteleri: Destekli medya ve medya parametrelerinin tespiti 4- Oturum ayarları: Çağrı yapma, çağrılan ve çağıran taraftaki oturum parametrelerini yapılandırma 5- Oturum yönetimi: Oturumun taşınması, sonlandırılması, oturum parametrelerini güncelleme, servisleri uyandırma SIP'in kendisi bir haberleşme protokolü değildir. Diğer TCP/IP protokolleri ile birlikte bir multimedya oturumu sağlayan bir parçadır. Örneğin RTP (Real-time Transport Protocol) ile gerçek-zamanlı veri iletişimini sağlar. Burada veri RTP ile taşınırken veri akışının kontrolü SIP ile sağlanır. Çünkü SIP kendisi hizmet vermek için tasarlanmamıştır. RTP, RTSP gibi diğer protokollerin ihtiyaç duyduğu genel bilgileri sağlar. Örneğin SIP kullanıcının yerini belirler ve herhangi bir medyayı ona ulaştırır. SIP , bazı güvenlik önlemleri de sunar. DoS ataklarına karşı, onaylama (hem kullanıcıdan proxy'ye, hem de proxy'den kullanıcıya), veri bütünlüğü, gibi... SIP, HTTP gibi istek/cevap modeline göre çalışmaktadır. Her bir istek karşı tarafta bir method, fonksiyon çalışmasına veya en azindan bir cevap oluşmasına neden olur. Örneğin INVITE isteği için aşağıda örnek bir başlık: INVITE sip:bob@biloxi.com SIP/2.0 Via: SIP/2.0/UDP pc33.atlanta.com;branch=z9hG4bK776asdhds Max-Forwards: 70 To: Bob From: Alice ;tag=1928301774 Call-ID: a84b4c76e66710@pc33.atlanta.com CSeq: 314159 INVITE Contact: Content-Type: application/sdp Content-Length: 142 Bu başlık olması gereken minumum bilgileri içeriyor. INVITE ve OK cevabi proxy üzerinden geçer. Ancak ACK bilgileri doğrudan uç noktalar arasında gider gelir. Görüşme sonlanırken de BYE mesajı proxy'ye uğramaz. BYE için ACK gönderilmez. Çünkü ACK sadece INVITE içindir. INVITE ile domain gönderilir. Buna cevap dönerken domain'i kendi domaini yapar. Böylece dns sorgularına gerek kalmaz. SIP ile yapılan diğer en önemli iş kayıt olmaktır (registration). Proxy sunucunun uç noktanın konumunu tespit etmesi kayıt ile olur. Açılışta ve periyodik bazı zamanlarda SIP phone, domainindeki SIP registrar denen sunucuya REGISTER mesajı gönderir. REGISTER mesajı SIP URI'si(sip:bob@biloxi.com) ile beraber gönderilir. Genellikle SIP registrar, SIP proxy sunucu üzerinde konumlandırılır. Bir kişi aynı anda iki farklı yerden register olabilir. Bu proxy'nin alternatif konumalndırma yapmasını sağlar. Aynı şekilde bir cihazdan aynı zamanda iki kişi kayıt olabilir. Konumlama servisi, soyut bir kavramdır. URI ile yer tespit eder. Ancak bu tek yol değildir. Sistem yöneticisi tarafından yapılan eşleştirme de bir yöntemdir. Kayıt yalnızca gelen trafiğin yönlendirilmesi için kullanılır. Çıkan trafik için bir kimlik doğrulama sistemi değildir. Kimlik doğrulama ve yetkilendirme farklı bir konudur. SIP, katmanlı yapıya sahiptir. En alt katman syntax ve enconing sağlar. Encoding BNF formatındadır. İkinci katman taşıma katmanıdır. İstemcinin/sunucunun bir isteği nasıl göndereceği, cevabı nasıl alacğaını belirler. 3. katman transaction katmanıdır. Bu katman SIP'in en temel parçasıdır. Bir transcation, client tarafından servera gönderilen bir istektir. Transaction katmanın üstünde transaction user (TU) katmanı vardır. Herbir SIP entrisi (stateless proxy ler hariç) bir TU dur. Bir TU, bir istek göndermek istediğinde istemci transaction i oluşturur ve bu isteği hedef IP adresi, port ile birlikte taşınacağı yere gönderir. Bir TU, oluşturduğu isteği sonlandırabilir. Bir client, isteğini yada işini kestiğinde sunucunun o istek için daha fazla işlem yapmasına engel olur. İşlemi sonlandırma CANCEL isteği ile olur. Sisteme kayıt REGISTER methodu ile olurken, user agentların (UA: UAC ve UAS) kapasiteleri OPTIONS methodu ile belirlenir. Diğer bütün istekleri karşılıklı bir diyalog içeisinde olur. Bir diyaloğun başlaması için kullanılabilecek tek yol INVITE methodutur. INVITE, SIP te en çok kullanılan methodttur ve iki uç nokta veya eş arasında oturum açılmasını sağlar. Bir oturum, katılımcılar ve aralarındaki medyadan oluşur. REGISTER methodunu kabul eden, katılımcıların kaydını yapan snunucuya Registrar denir. user agent istemcileri ve sunuculari, stateless ve statefull proxy ler ile registrar gibi SIP elementleri icerdikleri core ozellikler itibari ile digerlerinden ayrilir. stateless proxy haric core parcalarin hepsi transcation users'dir. Istekler bir dialog olarak karşılıklı gönderilir. Bir dialog, iki user agent arasındaki SIP ilişkidir. INVITE metodu bir dialog kurmanın tek yoludur. Bir UAC istek gonderdiginde bunu takiben UAC kurali gonderlir. SIP'teki en onemli method REGISTER metodudur. Bu method iki uc arasinda baglanti kurar. Oturum, uçlar ve uçlar arasındaki medya trafiğinden oluşur. Tanımlar: Address-of-Record: Bir AOR SIP veya SIPS URI'sidir. public adres olarak da adlandırılır. Back-to-Back User Agent: Bir B2BUA, istek alan ve bu isteği bir user agent server (UAS) gibi işleyen mantıksal bir oluşumdur. İsteklerin nasıl cevaplanacağını tespit etmek için user agent client (UAC) gibi davranır ve istek üretir. Proxy server'dan farklı olarak dialog zamanını da yönetir ve bağlı olduğu dialoglar üzerinden gönderilen isteklere katılmak zorundadır. Call leg: dialog'ların diğer ismidir. Dialog: Bir dialog iki UA arasında bir s,re devam eden uctan-uca SIP ilişkidir. Downstream: İsteğin yönünü gösterir, from the user agent client to user agent server. Proxy, Proxy Server: