STUN, TURN ve ICE Nedir ve Farkları Nelerdir?

NAT, ev ve kurumsal ağlarda cihazların yerel IP adreslerini internet tarafındaki IP adresleriyle eşleştirir; yaygın kullanımlarda portlar da çevrilir. Bu nedenle iki uç noktanın yalnız kendi yerel IP adreslerini ve portlarını birbirine bildirmesi, özellikle her iki taraf da NAT arkasındaysa, doğrudan veri akışı kurmak için çoğu zaman yeterli değildir.
STUN, NAT arkasındaki dış adresi keşfetmeye yardımcı olan bir protokoldür. TURN, trafik için röle adresi ayırıp veriyi bu sunucu üzerinden taşıyan protokoldür; ICE ise olası bağlantı yollarını sınayıp seçen yöntemdir. Bu üç teknoloji aynı işi yapan alternatifler değil, birbirini tamamlayan bileşenlerdir.
Görüntülü görüşme ve diğer eşler arası iletişim senaryolarında önce aday adresler toplanır, ardından aday çiftlerinin ulaşılabilirliği sınanır ve veri akışı için uygun yol seçilir.
STUN, TURN ve ICE Birlikte Ne Yapar?
- STUN, bir uç noktanın NAT sonrasında dışarıdan hangi IP adresi ve portla göründüğünü öğrenmesine yardımcı olur.
- STUN ayrıca ICE bağlantı kontrollerinde aday çiftlerinin gerçekten birbirine ulaşabildiğini sınamak için kullanılır.
- TURN, istemci için röle sunucusunda ulaşılabilir bir adres ayırır ve seçildiğinde uygulama verisini bu sunucu üzerinden iletir.
- ICE, yerel adresleri, NAT'ın dışarıya açtığı IP adresi ve port eşleşmelerini ve röle adreslerini aday olarak toplar; iki uçtaki adayları eşleştirip bağlantı kontrollerini yürütür.
- ICE, çalışan aday çiftleri arasından veri için kullanılacak çifti seçer; daha doğrudan yollar genellikle röleli yollardan daha yüksek öncelik alır.
NAT Arkasında Bağlantı Kurmak Neden Zordur?
Bir cihazın yerel ağdaki IP adresi ve portu, karşı taraftan doğrudan erişilebilen adresle aynı olmayabilir. NAT, cihaz internete paket gönderdiğinde kaynak IP adresini ve çoğu durumda portu başka bir dış IP adresi ve portla eşleştirir. Karşı uç yalnız yerel IP adresini ve portu biliyorsa bu eşlemenin internet tarafındaki karşılığını bilmez.
Üstelik iki uç arasındaki yol yalnız bir NAT'tan oluşmayabilir. Farklı NAT ve güvenlik duvarı davranışları, bir yönde oluşan eşlemenin diğer uçtan gelen paketler için kullanılabilir olup olmadığını etkileyebilir. Bu nedenle yalnız “genel IP adresini öğrenmek” yeterli bir bağlantı stratejisi değildir; gerçek aday çiftlerinin sınanması gerekir.
STUN'un Görevi: Dışarıdan Görülen Adresi Keşfetmek
STUN, NAT geçişi sırasında diğer protokollerin adres keşfi ve bağlantı kontrolü için kullandığı bir protokoldür. Uç nokta, bir STUN sunucusuna STUN Binding isteği gönderdiğinde sunucu isteğin kendisine ulaştığı kaynak IP adresini ve portu görür ve bu bilgiyi yanıtta istemciye bildirir. Böylece istemci, STUN sunucusuna giden yol açısından NAT'ın kendisine verdiği dış IP adresi ve port eşleşmesini öğrenir.
STUN Binding ile Adres Keşfi ve ICE Kontrolleri
STUN yanıtındaki dış IP adresi ve port, ICE içinde NAT'ın sunucu tarafından görülen dış eşlemesini temsil eden Server-Reflexive Candidate (sunucudan öğrenilen aday) olarak kullanılabilir. NAT varsa bu aday yerel arayüz adresinden farklı olabilir. Birden fazla NAT varsa istemci, internet tarafındaki en dış NAT'ın oluşturduğu eşlemeyi görür.
Aynı STUN mekanizması yalnız adres keşfi için kullanılmaz. ICE, aday çiftleri üzerinde STUN istek ve yanıtları göndererek iki yönlü ulaşılabilirliği sınar. Bu kontrollerde daha önce bilinmeyen bir NAT eşlemesi ortaya çıkarsa ICE bunu Peer-Reflexive Candidate (eşten öğrenilen aday) olarak değerlendirebilir.
STUN Neden Tek Başına Doğrudan Bağlantı Kuramaz?
STUN tek başına bir NAT geçiş çözümü değildir. Bir dış IP adresi ve port öğrenilmiş olması, karşı tarafın bu eşleşmeye mutlaka erişebileceği anlamına gelmez. NAT davranışı ve aradaki güvenlik kuralları nedeniyle ICE, adayın gerçekten çalışıp çalışmadığını bağlantı kontrolleriyle sınar.
STUN uygulama trafiğini röle etmek için tasarlanmamıştır. Doğrudan adaylar çalışmıyorsa, yalnız STUN kullanarak “zorla” doğrudan yol oluşturulamaz; bu durumda Relayed Candidate (röleli aday) sağlayan TURN devreye girer.
TURN'un Görevi: Röle Üzerinden Ulaşılabilir Adres Sağlamak
TURN, STUN'un bir uzantısıdır ve temel farkı uygulama verisi için röle sunmasıdır. İstemci, TURN sunucusuna TURN Allocate (röle adresi ayırma) isteği gönderdiğinde sunucu Relayed Transport Address'i (röleli taşıma adresini) bildirir. İstemci, karşı ucun IP adresi için TURN sunucusunda bir iletişim izni oluşturur. Bu izin geçerliyken karşı uç röle adresine paket gönderdiğinde TURN sunucusu paketleri ilgili istemciye iletir; ters yöndeki trafik de röle üzerinden karşı uca gönderilebilir.
TURN Röle Adresi ile STUN'un Gösterdiği Adres Arasındaki Farklar
STUN'un gösterdiği Server-Reflexive Candidate, NAT'ın istemci için dışarıya açtığı IP adresi ve port eşleşmesini temsil eder. TURN'den alınan Relayed Candidate ise TURN sunucusunda ilgili oturum için ayrılmış bir taşıma adresidir. Relayed Candidate seçildiğinde veri yolunda bir röle sunucusu bulunur.
TURN sunucusu uç noktalar arasında paketleri ilettiği için doğrudan bağlantıya göre daha fazla sunucu bant genişliği ve işlem kapasitesi tüketir. Röle ayrıca veri yoluna bir ara nokta ekler; bunun gecikmeye etkisi sunucunun konumu ve ağ koşullarına bağlıdır.
TURN Yalnız STUN Başarısız Olduktan Sonra mı Kullanılır?
TURN, yalnız STUN başarısız olduktan sonra kullanılan bir yedek değildir. ICE, aday toplama aşamasında TURN sunucusundan bir Relayed Candidate önceden alabilir. Daha sonra doğrudan ve Relayed Candidate çiftlerini kendi öncelik ve bağlantı kontrolleri içinde değerlendirir.
STUN'un yanıt vermesi, doğrudan yolun çalışacağı garantisini vermez; Relayed Candidate'in önceden hazır olması da trafiğin mutlaka röle üzerinden gideceği anlamına gelmez. Hangi yolun seçileceğini ICE bağlantı kontrollerinin sonucu, aday öncelikleri ve uygulamanın bağlantı politikası belirler. Örneğin uygulama gizlilik amacıyla yalnız Relayed Candidate'lerin kullanılmasına izin verebilir.
ICE'nin Görevi: Aday Yolları Toplamak, Sınamak ve Seçmek
ICE, STUN veya TURN gibi bir sunucu hizmeti değildir. İki uç noktanın kullanabileceği taşıma adreslerini aday olarak toplar, bu adayları karşı tarafa oturum bilgilerini taşıyan sinyalleşme kanalı üzerinden iletir, yerel ve uzak adaylardan çiftler oluşturur ve hangi çiftlerin gerçekten çalıştığını STUN bağlantı kontrolleriyle sınar.
ICE Aday Türleri
ICE'nin değerlendirebildiği dört temel aday türü farklı ağ yollarını temsil eder. Yerel arayüzden alınan Host Candidate (yerel arayüz adayı), cihazın kendi taşıma adresidir. Server-Reflexive Candidate, STUN veya TURN yanıtında görülen ve NAT'ın dışarıya açtığı IP adresi ve port eşleşmesini gösterir; Peer-Reflexive Candidate bağlantı kontrolleri sırasında ortaya çıkabilir. Relayed Candidate ise TURN sunucusunun ayırdığı röle adresidir.
Bir cihazda Ethernet, Wi-Fi veya tünel arayüzü gibi birden fazla ağ arayüzü bulunması da birden fazla yerel aday oluşmasına yol açabilir. ICE'nin amacı tek bir adres varsaymak yerine kullanılabilecek seçenekleri toplamak ve bunların gerçek uçtan uca ulaşılabilirliğini sınamaktır.
Bağlantı Kontrolleri ve Seçilen Çift
Uç noktalar aday listelerini değiş tokuş ettikten sonra ICE, yerel ve uzak adaylardan çiftler oluşturur ve bunları öncelik sırasına koyar. Her kontrol, belirli bir aday çifti üzerinden gönderilen STUN istek ve yanıt işlemlerinden oluşur. Başarılı kontroller geçerli çiftler oluşturur.
Kontrol eden rolündeki ICE yazılımı, geçerli çiftlerden birini veri aktarımında kullanılmak üzere aday gösterir. Aday gösterme işlemi başarıyla tamamlandığında bu çift seçilmiş çift olur ve uygulama verisi bu yol üzerinden taşınır. ICE'nin temel görevi böylece “adres bulmak” değil, bulunan seçenekler arasından gerçekten çalışan bir yolu doğrulayıp seçmektir.
STUN, TURN ve ICE Arasındaki Temel Farklar
Aşağıdaki tablo, üç kavramı ürettikleri bilgi ve uygulama verisinin taşınmasındaki rolleri açısından karşılaştırır.
| Teknoloji | Ana görev | Uygulama verisini röle eder mi? | ICE içindeki rolü |
|---|---|---|---|
| STUN | NAT sonrasında görülen IP adresini ve portu öğrenmeye ve bağlantı kontrolü yapmaya yarar. | Hayır. | Server-Reflexive Candidate keşfi ve aday çifti kontrollerinde kullanılır. |
| TURN | Röle sunucusunda ulaşılabilir bir taşıma adresi ayırır ve paketleri iletir. | Evet. | Relayed Candidate sağlar; bu aday seçilirse veri TURN üzerinden geçer. |
| ICE | Aday adresleri toplar, eşleştirir, sınar ve kullanılacak çifti seçer. | Doğrudan röle etmez; seçilen yol Relayed Candidate'i içeriyorsa veri TURN üzerinden taşınır. | STUN ve TURN dahil farklı aday kaynaklarını tek seçim sürecinde koordine eder. |
ICE'nin Aday Toplama ve Yol Seçme Süreci
Uygulama ayrıntıları görüntülü görüşmeye veya diğer eşler arası oturumlara göre değişse de ICE süreci genel olarak şu sırayı izler:
- Her uç nokta kullanılabilir yerel arayüzlerden Host Candidate'lerini toplar.
- Uç noktalar STUN Binding veya TURN Allocate yanıtlarından NAT'ın dışarıya açtığı Server-Reflexive Candidate'leri; TURN kullanılıyorsa ayrıca Relayed Candidate'leri edinir.
- Uçlar aday bilgilerini ayrı bir sinyalleşme mekanizması üzerinden birbirine iletir.
- ICE, yerel ve uzak adaylardan çiftler oluşturur ve bunları önceliklendirir.
- ICE, STUN tabanlı bağlantı kontrolleriyle hangi aday çiftlerinin iki yönlü çalıştığını belirler.
- ICE geçerli çiftlerden birini seçer; röleli çift seçilmişse uygulama verisi TURN sunucusu üzerinden geçer.
Bu süreçte sinyalleşme ile veri yolu aynı şey değildir. ICE, uçların aday bilgilerini nasıl taşıyacağına dair mevcut bir sinyalleşme bağlantısı olduğunu varsayar; asıl işi veri için kullanılabilecek ağ yolunu belirlemektir.
Doğrudan Yol ile TURN Rölesi Arasındaki Seçim
ICE önceliklendirmesi, genel olarak daha doğrudan yolları röle içeren yollardan önce değerlendirecek biçimde tasarlanmıştır. ICE, Relayed Candidate içermeyen uygun bir çifti doğrulayıp seçerse veri doğrudan uçlar arasında gidebilir. Doğrudan adaylar çalışmıyorsa TURN'den alınan geçerli bir Relayed Candidate oturumun kurulmasını mümkün kılabilir.
Doğrudan yol, arada hiç yönlendirici veya NAT olmadığı anlamına gelmez; uygulama verisi özel bir röle sunucusundan geçmeden iki uç arasındaki ağ yolunu izler. TURN seçildiğinde ise röle sunucusu veri yolunun aktif parçasıdır.
VPN Arayüzlerinin ICE Adaylarına Etkisi
ICE yerel adayları ağ arayüzlerinden toplar; tünel yazılımının oluşturduğu sanal ağ arayüzü de uç noktada yerel bir arayüz olarak görünebilir. Bu nedenle protokollerin davranışını değerlendirirken uygulamanın hangi arayüzlerden aday topladığına ve hangi ağ yolunu kullanabildiğine bakmak gerekir.
STUN, TURN veya ICE'nin kullanılması tek başına, gerçek zamanlı ses, görüntü ve veri iletişiminde kullanılan WebRTC'de IP adresi sızıntısı bulunduğu anlamına gelmez. Bir sızıntıyı doğrulamak için toplanan adayların ve seçilen bağlantı yolunun ayrıca incelenmesi gerekir.







