Kuzeni Session Description Protocol’ü (SDP) anlamadan SIP’yi gerçekten anlamak imkansızdır. SIP oturumların oluşturulması, değiştirilmesi ve yırtılması ile ilgilenirken, SDP sadece bu oturumlardaki medyayla ilgilenmektedir.
Peki, SDP nedir? Eh, tam olarak adının söylediği şey bu. Bir oturumun ortamını tanımlayan bir protokoldür. SIP tabanlı bir ses üzerinden sesli arama, ses veya video veya her ikisinin birden aktarılması durumunda, gereksinimlerden biri katılımcıların medya ayrıntılarını, yani aktarım adresi, aktarım protokolü, kodek, bağlantı noktaları ve diğer oturum açıklaması meta verilerini bilmesi içindir. . Oturum Açıklama Protokolü olarak da bilinen SDP, bu tür bilgilerin reklamını yapmak için SIP (oturum başlatma protokolü) ile kullanılan protokoldür. Yalnız SDP’nin medyayla müzakere etmediğini anlamak önemlidir. SIP istemcileri tarafından G.711 gibi ortak bir medya protokolüne karar vermeden önce “bunu yapabilir misin?” Diye sormak için kullanılmaz. Bunun yerine, bir taraf diğer tarafa “işte destekleyebileceğim tüm medya türleri – birini seç ve kullan” diyor.
Bir voip araması örneği üzerinden açıklayalım;
SIP tabanlı bir VoIP araması başlatma sırasında, arayan bir SIP telefonunda bir numara çevirdiğinde , SIP telefonunun kayıtlı olduğu IP PBX’e gönderilen SIP INVITE mesajına bir SDP mesajı eklenir. SDP mesajında bağlantı ayrıntıları, medya ayrıntıları ve DTMF olay türleri bildirilir.
Tipik olarak, bu tür bilgiler arayanın SIP telefonundan IP PBX’e gönderilir ve daha sonra aramayı alan diğer SIP telefona aktarılır. Bu aşamada halen kurulmakta olan çağrıyı alan SIP telefonu, SDP verilerini çağrıyı yapan SIP telefona aktarılan IP PBX’e geri gönderir. Bu tür bir işlem nedeniyle, çağrı yapılırsa, bu SIP tabanlı VoIP çağrısında yer alan SIP telefonları, medya akışının nereye gönderilmesi gerektiğini ve ne tür ortam ve kodek kullanılacağını bilir. Artık hangi medya türünü ve kodek alacaklarını da biliyorlar.
SDP, bir dizi <character> = <value> satırdan oluşur; burada <character>, büyük / küçük harfe duyarlı bir alfabetik karakterdir ve <value>, yapılandırılmış metindir.
SDP, oturum, zamanlama ve medya açıklamaları olmak üzere üç ana bölümden oluşur. Her mesaj birden fazla zamanlama ve medya açıklaması içerebilir, ancak yalnızca bir oturum açıklaması içerebilir.
Oturum açıklaması ( Session description )
v = (protokol sürüm numarası, şu anda yalnızca 0)
o = (gönderen ve oturum tanımlayıcı: kullanıcı adı, kimlik, sürüm numarası, ağ adresi)
s = (oturum adı: en az bir UTF-8 kodlu karakterle zorunlu)
i = * (oturum başlığı veya kısa bilgi)
u = * (açıklama URI’si)
e = * (isteğe bağlı kişi adıyla sıfır veya daha fazla e-posta adresi)
p = * (isteğe bağlı kişi adıyla sıfır veya daha fazla telefon numarası)
c = * (bağlantı bilgileri — tüm ortamlara dahil edilmişse gerekli değildir)
b = * (sıfır veya daha fazla bant genişliği bilgi satırı)
Bir veya daha fazla Zaman açıklaması (“t =” ve “r =” satırları; aşağıya bakın)
z = * (saat dilimi ayarları)
k = * (şifreleme anahtarı)
a = * (sıfır veya daha fazla oturum özellik satırı)
Sıfır veya daha fazla Ortam açıklaması (her biri bir “m =” çizgisiyle başlar; aşağıya bakın)
Zaman açıklaması ( Time description )
t = (oturumun aktif olduğu süre)
r = * (sıfır veya daha fazla tekrar süresi)
Medya açıklaması ( Media description )
m = (ortam adı ve taşıma adresi)
i = * (ortam başlığı veya bilgi alanı)
c = * (bağlantı bilgileri – oturum düzeyinde varsa isteğe bağlı)
b = * (sıfır veya daha fazla bant genişliği bilgi satırı)
k = * (şifreleme anahtarı)
a = * (sıfır veya daha fazla medya özellik satırı – Oturum özellik satırlarını geçersiz kılma)
Aşağıda örnek SDP mesajlarına bakalım: IP PBX ve IP Phone, arama yapmak için SIP’yi ve medya akışı parametrelerini görüşmek için SDP’yi kullanır.
v = 0
o = Kaan 2890844526 2890844526 IN IP4 10.120.42.3
s = SDP Blogu
c = IN IP4 10.120.42.3
t = 0 0
m = ses 49170 RTP / AVP 0 8 97
a = rtpmap: 0 PCMU / 8000
a = rtpmap: 8 PCMA / 8000
a = rtpmap: 97 iLBC / 8000
m = video 51372 RTP / AVP 31 32
a = rtpmap: 31 H261 / 90000
c=connection information = Bu bana medyanın nereden geleceğini ve nereye gönderileceğini IP adresini söyleyecektir.
m = Her ortam türü için bir ortam hattı olacaktır. Örneğin, istemciniz gerçek zamanlı sesi destekleyebiliyorsa, m = ses hattı olacaktır. Müşteriniz gerçek zamanlı videoyu destekleyebiliyorsa ayrı bir m = video satırı olacaktır. Her ortam satırı, öznitelik satırlarında tanımlanacak kodeklerin sayısını gösterir.
a= Medya satırında reklamı yapılan her kodek için bir özellik satırı olacaktır.
İleti gövdesinde yukarıdaki SDP ile bir SIP iletisi aldıktan sonra, alıcı kendi IP adresini, bağlantı noktalarını ve codec değerlerini tanımlayan SDP ile yanıt verecektir. Alıcı aynı zamanda göndericinin kullanacağı kodekler listesinden seçecek ve potansiyel olarak gerçek zamanlı medya akışlarını başlatacaktır. SDP’nin yazılı olmayan kuralı, mümkünse listelenen bir türün ilk codec bileşenini kullanmanızdır, ancak zorunlu değildir. Gönderen bir şey yapabileceğini söylüyorsa, hangi sırayla listelendiğine bakılmaksızın bu tür medyayı ele almaya hazır olsaydı.