Bugün sizlere çok önemli hatta en önemlilerinden biri olan SIP “Via header” hakkında yazmak istiyorum.
SIP Via başlığı, SIP yanıtlarını göndermek için downstream path belirlemek için kullanılır. Başka bir deyişle, SIP varlığı örneğin telefonunuz, SIP request’in içine Via header’ı yerleştirir ve hedefteki adrese der ki: bu gönderdiğim requeste vereceğin cevapları via header’a koyduğum adrese gönder.
UAC bir SIP isteği oluşturduğunda, bu isteğe bir Via üstbilgisi eklemelidir. Via header; protokol adı (SIP), protokol sürümü (2.0), aktarım türü (UDP / TCP), UAC’nin ip adresi ve bu istek için kullanılan protokol bağlantı noktası (genellikle 5060) ve branch parametresini içermelidir.
Branch parametresi, SIP transaction belirlemek için kullanılır. Via header’da, isteğin geldiği yere geri yanıt göndermek için “received” veya “rport” gibi başka popüler parametreler de var, ancak bunu başka bir yazı da konuşacağız.
Örneğin, telefonumu SIP Proxy’yi aramak için kullandığımda, Via üstbilgim görünümü bunu şekilde:
Via: SIP/2.0/UDP 192.168.X.X:6000;branch=z9hG4bK.72ccKTzfG
Çağrımı gönderdiğim SIP Proxy’si, aranan kişiye çağrıyı göndermeden önce kendi mevcutiyeni gösteren diğer bir Via header’ı benim eklediğim Via headar üstüne eklemek zorundadır. En son hop yani sunucu her zaman en üstteki via header olur. Sip proxy kendi Via header’ını da ekledikten sonra şu şekilde görünmektedir:
Via: SIP/2.0/UDP 192.168.X.P:5060;branch=z9hG4bKb234.aea6
Via: SIP/2.0/UDP 192.168.X.X:6000;branch=z9hG4bK.72ccKTzfG
Gerçek aranan SIP varlığı, telefon; bu talebe karşılık gelen herhangi bir yanıtı, istekten aldığı Via header üzerinden en üstteki URI’ye gönderir yani en üstte bulunan via header’daki adrese gönderir.
SIP Proxy yanıtları aldığında, yanıtları bir sonraki Via headerdaki URI’ye iletmeden önce, bu yanıtlarda daha önce eklediği en üst Via header keser, bağlantının URI’sını sunar.
Yolda ek proxy (ler) varsa, callee’ye ulaşan daha fazla Via üstbilgisi olacaktır. Ayrıca, yanıtlar tekrar telefonuma aktarıldığında, karşılık gelen her proxy tarafından birer birer silinip öyle geriye gönderilirler.