WebRTC — Google Meet / Hangout, Facebook Messenger ve Discord’u Destekleyen Teknoloji

İşte bir P2P bağlantısı sırasında olan ve Gerçek Zamanlı Web İletişimi hakkında bilmeniz gereken her şey

Gerçek Zamanlı İletişimin Tarihçesi

  • 2010’larda gerçek zamanlı iletişim yalnızca ek yazılımlar, eklentiler veya Adobe Flash kullanılarak mümkündü.
  • 2013 yılında, Chrome ve Firefox arasındaki ilk tarayıcılar arası video görüşmesi başlatıldı.
  • 2014 yılında ilk tarayıcılar arası veri aktarımı gerçekleşti ve istemci tarafı aracılığıyla gerçek zamanlı iletişimde yeni ortaya çıkan bir trende başladı.

Bugün Chrome, Mozilla Firefox, Opera, Safari, Edge, iOS ve Android’de her gün kullandığımız Web RTC olarak biliniyor.

Genel Bakış

WebRTC, web’de ve yerel tarayıcılarda gerçek zamanlı ses, video ve veri aktarımını sağlamak için Google tarafından 2011 yılında sunulan bir ağ teknolojisi olan Web Gerçek Zamanlı İletişim anlamına gelir.

“Misyonu, tarayıcı, mobil platformlar ve IoT cihazları için zengin, yüksek kaliteli RTC uygulamalarının geliştirilmesini sağlamak ve hepsinin ortak bir protokol seti aracılığıyla iletişim kurmasını sağlamaktır.”

WebRTC, web uygulamalarının Eşler Arası iletişim oluşturmasına izin verir. WebRTC geniş bir konudur, bu nedenle bu yazıda WebRTC’nin aşağıdaki sorunlarına odaklanacağız:

1. Geliştiriciler ve şirketler Web RTC’yi neden seviyor?

2. P2P bağlantısı sırasında ne olur

· Sinyalleşme

· NAT’ler ve ICE

· STUN & TURN Sunucusu

· VP9 Video Codec’i

3. WebRTC API’leri

4. Güvenlik

Geliştiriciler ve şirketler Web RTC’yi neden seviyor?

1. Ücretsiz açık kaynak

· Tarayıcılara uçtan uca doğrudan iletişim sağlar ve geliştiricilerin bu bağlantıyı kolayca kolaylaştırmasına olanak tanır.

2. Hız İyileştirme

· Artık bir sunucu üzerinden yönlendirilmesine gerek yok; gecikmeyi ve bant genişliği tüketimini azaltır.

· Doğrudan iletişim, veri aktarımı ve dosya paylaşımının hızını artırır.

3. Üçüncü taraf uygulaması gerekmez

· Ek bir yazılım, eklenti veya sürekli sunucu katılımı gerektirmez (Evet, öyle, ancak yalnızca başlangıçta nedenini daha sonra anlayacaksınız)

· Herhangi bir web sitesine kolayca yerleştirilebilir ve internetteki eşlerle bağlantı kurabilirsiniz.

4. Uygulaması kolay

· Eşler arası (P2P) bağlantıyı kolaylaştırmak için daha az zaman ve çaba.

· Tüm işlevsellik, istemci tarafında yapılabilir. Geliştiricilerin yalnızca WebRTC uyumlu bir tarayıcı indirmesi ve

5. Uyumlu

· En popüler tarayıcılar tarafından desteklenir: Microsoft Edge, Google Chrome, Mozilla Firefox, Safari, Safari, Opera, Vivaldi.

· Android, Chrome OS, Firefox OS, BlackBerry 10, iOS, Tizen tarafından desteklenir.

6. Birçok tarayıcıda güvenli bir bağlantı sağlayın

· Şifreleme, tüm WebRTC bileşenleri için zorunludur.

· Bir eklenti olmadığı için, tarayıcının sanal alanında yeni bir işlem oluşturmadan çalışır, böylece hiçbir kötü amaçlı yazılım kullanıcının sistemine giremez.

· Güncellemeleri takip etmenize gerek yok. Tarayıcının sürümünün otomatik güncellemesiyle, kullanıcı yamayı kullanılabilir olduğu anda alır.

P2P bağlantısı sırasında ne olur

Görüntü PubNub İki tarayıcıyı bağlamak için, Web RTC’nin P2P bağlantısı kurmak için beş adım gerçekleştirmesi gerekir.

  1. Ses veya videodan ortam gürültüsünü gidermek için sinyal işleme.
  2. Ses veya videoyu sıkıştırmak ve açmak için kodek işleme.
  3. Etkileşimli Bağlantı Kuruluşu (ICE) oluşturmak için güvenlik duvarları, (NAT’ler) ve röleler aracılığıyla bir uçtan diğerine yönlendirme
  4. Kullanıcı verileri, bağlantılar arasında aktarılmadan önce şifrelenir.
  5. Kullanıcıya her bir eşin vermesi gereken bant genişliğini yönetme

Sinyalleşme

  • Tarayıcıdaki P2P bağlantıları, tüm eşlerin oturumu kabul etmesini sağlamak için bir sunucu tarafından kurulur.
  • Oturum anahtarları, hata mesajları, medya meta verileri, kodekler, bant genişliği ve genel IP adresi ve bağlantı noktaları gibi bilgiler, bağlantıyı oluşturmak için eşler arasında paylaşılır.
  • Sunucu, hangi medya formatının kullanılacağını ve her bir eşin diğerine ne göndermek istediğini belirlemek için her iki eşe de sinyal gönderir.

Ağ Adresi Çevirileri (NAT’ler) ve ICE

NAT’lar, ev yönlendiricisi gibi cihazlarda bulunan özel bir IP adresini genel bir IP adresine çevirir. Güvenlik duvarları ve NAT’ler, belirli protokolleri veya bağlantı noktalarını engelleyerek süreci yavaşlatır. WebRTC’nin kullandığı çözüm, ICE adlı bir çerçevedir.
ICE, tüm bağlantıları paralel olarak deneyerek ve en verimli yolu seçerek internet üzerinden bir P2P bağlantısı kurar. İki tür bağlantı vardır: STUN & TURN

STUN Sunucuları

Ağ adresi üzerinden doğrudan bir bağlantı almak için önce bir STUN (NAT için Oturum Geçiş Araçları) sunucusu üzerinden bağlanarak çalışır.

Bir STUN sunucusu, istek sahibine başkalarıyla iletişim kurması için genel bir IP adresi sağlar. Amacı, istek sahibinin “IP Adresim nedir?” Sorusunu yanıtlamasına yardımcı olmaktır.

STUN sunucuları nasıl çalışır?

Diğer eşlerle bir bağlantı kurmak için, bir uç noktanın başkalarıyla paylaşmak için genel IP’sini bilmesi gerekir.

  1. Bir uç nokta (Calvin) bir NAT / Güvenlik Duvarının arkasında olduğunda, yalnızca yerel IP adresini tanımlayabilir ve diğeri (Elana) güvenlik duvarı güvenliği nedeniyle yerel IP’ye bağlanamaz.
  2. Bu uç nokta, genel IP adresini ve bir NAT türü sağlamak için STUN sunucusundan yardım isteyecektir.
  3. Diğer uç nokta (Elana), STUN sunucusundan verilen genel IP adresini kullanarak ikisi arasındaki bağlantıyı deneyebilir.
  4. Başarılı olursa, medya üçüncü taraf veya başka bir sunucu olmadan doğrudan her uç noktaya akar.
  5. Güvenlik için tüm STUN sunucuları bırakılacak ve bir sonraki sorguyu bekleyecektir.

Sınırlamalar — Simetrik NAT

Ancak, yukarıdaki durum bazen başarısız olabilir ve PORT ve IP numarası değişecektir.

STUN sunucusunun genel IP adresi burada bağlantı kurmak için yeterli kapasiteye sahip olmadığından bu duruma “simetrik NAT” adı verilir, çünkü bağlantı noktası da bir çeviriye ihtiyaç duyar.

Bazı yönlendiriciler, uç noktaya başka bir güvenlik katmanı eklemek veya birçok yabancının cihazınıza bağlanmasını önlemek için yapılan Simetrik NAT kullanır. Simetrik NAT, yalnızca IP adresini özelden herkese çevirmekle kalmaz, aynı zamanda bağlantı noktalarını da çevirir.

Diğer bir deyişle, yönlendirici yalnızca kullanıcının önceden bağlandığı bilinen eşlerden bağlantıları kabul edecektir. Bu nedenle, iki eş arasındaki bağlantının başarılı olmasını sağlamak için başka bir çözüm TURN sunucusu üzerinden yapılır.

STUN sunucuları neden faydalıdır?

Bir protokol olarak STUN, süper hızlı, hafif ve anlaşılırdır. Medyanın kısa sürede direkt olarak birbirine gitmesini sağlar. STUN, bağlantıyı hızlandırmak ve sonucu gerçek zamanlı olarak daha hızlı almak için faydalıdır.

Kullanıcı verileri indirmek için LAN’ı kullandığında senaryo benzerdir, bu da Wi-fi’den indirmekten daha hızlıdır. En önemlisi, medyanın her iki uç nokta arasında doğrudan seyahat etmesine izin verir. STUN herkese açık ve ücretsiz olarak kullanılabilir.

TURN Sunucular

TURN (NAT etrafında Röleleri Kullanarak Geçiş) sunucusu, eşler arası bağlantı kesildiğinde aktarma sunucuları gibi davranır. Bağlantı kurmak için STUN sunucuları kullanılırken, TURN sunucuları ilişki boyunca aktif kalır.

Bir TURN sunucusu, medyayı WebRTC eşleri arasında aktarmaya devam eder. Bu nedenle “röle” terimi TURN’u tanımlamak için kullanılır.

TURN sunucuları nasıl çalışır?

Bu röle sunucusu, STUN sunucusu arızalanırsa trafiği aktarmak için kullanılır ve ayrıca STUN işlevlerine de sahiptir.

TURN sunucusu, yerleşik iletim kapasitesine sahip bir STUN sunucusudur. Daha spesifik olarak, TURN, veri sinyallerini değil, eşler arasında ses / video / veri akışını aktarmak için kullanılır.

  1. STUN Sunucuları için adımları izleyin
  2. STUN başarısız olursa, bir son kullanıcı bir TURN sunucusuyla bir bağlantı oluşturacak, tüm eşleri ilk son kullanıcıya veri aktarımından sorumlu olan sunucuya veri göndermeleri konusunda bilgilendirecektir.

STUN sunucusunun her zaman ilk olarak kullanılmasının ana nedenlerinden biri, TURN sunucusunun çok pahalı olması ve HD Video çevrimiçi olarak yayınlanırsa büyük bant genişliği kullanmasıdır.

VP9 Video Codec’i

Birçok kişinin WebRTC kullanmaya başlamasının ana özelliklerinden biri, video akışı içindir. Canlı video daha yaygın hale geldikçe ve daha yüksek kalitede olmaya başladığında, veri aktarımının daha hızlı olmasını veya paket boyutunun kolayca aktarılabilmesi için daha küçük olmasını gerektirir.

Bu, ses veya videoyu sıkıştırmak ve açmak için VP9 Video Codec’in gerçekleştiği zamandır. Videonun daha hızlı ve daha belirgin şekilde yayınlanmasına yardımcı olur. Safari 12.1, VP8’i destekleyerek diğer eşlerle canlı video alışverişi yapabilir.

VP8’den bir iyileştirme olan VP9, ​​Google’a ait ve On2 Technologies tarafından oluşturulan bir video sıkıştırma formatıdır.

Ana özellik, paket kaybını gizlemek ve gürültülü görüntüleri temizlemenin yanı sıra birden çok platformda yakalama ve oynatma becerileridir.

VP9 ile kullanıcılar, 720p videoyu paket kaybı veya gecikme olmadan izlemek için WebRTC’yi kullanabilir. Aynı bant genişliğinde 1080p video aramasını da destekleyebilir ve kullanıcılar için pahalı maliyetleri önlemek için zayıf bağlantıları ve veri kullanımını azaltmaya yardımcı olur.

JavaScript API’leri

Ses yakalama, video konferans ve veri iletimini işleyen üç ana Javascript API’si vardır:

MediaStream

  • Ses ve video yakalamak ve yayınlamak için bir kullanıcının kamerasını ve mikrofonunu kullanır. Bu API’yi kullanmak, mikrofon ve web kamerası gibi giriş cihazlarına erişmenizi sağlar.
  • Bir geliştirici WebRTC’yi kendi web sitesine entegre ettiğinde, ses ve videonun nasıl yayınlanmasını istedikleri konusunda kısıtlamalar oluşturabilirler. Kare hızı, video karesinin boyutu, çözünürlükler ve çok daha fazlası gibi sınırlamalar.
  • Bu API, HTML 5’in bir parçası olarak sağlanmıştır, diğer iki API ise açıkça WebRTC için sunulmaktadır.

RTCPeerConnection

  • Yakalanan ses ve video akışını internet üzerinden gerçek zamanlı olarak başka bir WebRTC uç noktasına gönderin. Bu API’lerin kullanılması, kullanıcıların getUserMedia tarafından yakalanan ses ve videoyu diğer eşlere iletmesine olanak tanır.
  • Uzak bir eşe bağlanma, bağlantıyı sürdürme ve izleme ve bağlantı tamamlandıktan sonra bağlantıyı kapatma özellikleri vardır.

RTCDataChannel

  • Keyfi verileri iletin. Her veri kanalı bir RTCPeerConnection ile ilişkilendirilir.
  • Yerleşik güvenlik (DTLS) ve tıkanıklık kontrolü.

Güvenlik

Herhangi bir gerçek zamanlı iletişim uygulamasındaki güvenlik risklerinden biri, veri aktarımı sırasında ortaya çıkabilir. Sonuç olarak, şifreleme WebRTC’nin zorunlu bir özelliğidir ve tüm bileşenlerde uygulanır.

WebRTC, iki standartlaştırılmış şifreleme protokolü kullanır:

Datagram Aktarım Katmanı Güvenliği (DTLS)

  • Bir tarayıcıda yerleşik olan standartlaştırılmış bir protokol. Veri akışlarını şifrelemek için kullanılır. Taşıma Katmanı Protokolüne (TLP) dayanır.
  • DTLS, Kullanıcı Veri Protokolünü (UDP) kullandığından aktarımın anlamını korur.
  • Güvenli Yuva Katmanı’nın (SSL) bir uzantısıdır; Uçtan uca şifrelemeye izin veren WebRTC verilerinin güvenliğini sağlamak için herhangi bir SSL protokolü kullanılabilir.

Güvenli Gerçek Zamanlı Aktarım Protokolü (SRTP)

  • Medya akışlarını şifrelemek için kullanılır.
  • Herhangi bir yerleşik güvenlik mekanizmasına sahip olmayan Gerçek Zamanlı Aktarım Protokolünün (RTP) bir uzantısıdır. RTP’ye koruma, bütünlük ve mesaj kimlik doğrulaması ekler.
  • Dezavantajı: RTP paketleri için şifreleme sağlarken, başlığı şifrelemez.

2 eş arasında bir bağlantı sağlamaya yönelik adımlar

  1. Sinyalleme sürecini başlatır, meta verileri iki eş arasında değiştirir.
  2. ICE kontrolü yapılır ve ICE taraflar arasında bir kanal oluşturur.
  3. DTLS anlaşması gerçekleştirilir. Taşınan medya varsa, SRTP, DTLS el sıkışma adımında dışa aktarılan anahtarları kullanır.
  4. Tüm eşler, herkes tarafından bilinmeyen anahtarlara sahip güvenli kanallara sahiptir.
  5. Eşler arasında Anahtar Değişimi.

WebRTC kullanan uygulamalar

  1. Google Meet / Google Hangout
  2. Facebook haberci
  3. Uyuşmazlık
  4. Amazon Chime

Kaynak: Calvin Nguyen – WebRTC — The technology that powers Google Meet/Hangout, Facebook Messenger and Discord

You may also like...