WebRTC
Orijinal yazar(lar) | Justin Uberti Peter Thatcher |
---|---|
İlk yayınlanma | 2011 | )
Güncel sürüm | 1.0[1] / 4 Mayıs 2018 ) |
Programlama dili | C++,[2] JavaScript |
Resmî sitesi | webrtc.org |
Kod deposu |
WebRTC (Web Gerçek Zamanlı İletişimi), web tarayıcılarına ve mobil uygulamalara basit uygulama geliştirme arayüzü (API'ler) aracılığıyla gerçek zamanlı iletişim (RTC) sağlayan ücretsiz, açık kaynaklı bir projedir. Direkt olarak eşler arası iletişime izin vermesi ile, eklenti yükleme veya uygulama indirme ihtiyacını ortadan kaldırarak, ses ve video iletişiminin web sayfalarında kolaylıkla kullanılmasını sağlar. Apple, Google, Microsoft, Mozilla ve Opera tarafından desteklenen WebRTC, World Wide Web Konsorsiyumu (W3C) ve İnternet Mühendisliği Görev Gücü (IETF) aracılığıyla standartlaştırılmaktadır.[3]
Temel hedefi, "Tarayıcı, mobil cihazlar ve IoT cihazları için yüksek kaliteli RTC uygulamalarının geliştirilmesini ve hepsinin ortak bir protokol seti aracılığıyla iletişim kurmasını sağlamaktır".[3]
- WebRTC için geliştirilen referans kod, BSD lisansı koşulları altında özgür yazılım olarak yayınlanmıştır.
- GStreamer kütüphanesi, 1.14 sürümünden bu yana, doğrudan ücretsiz bir WebRTC uygulaması için bir altyapı sağlamaktadır.[4]
Tarihçe
Google, Mayıs 2010'da RTC için gerekli olan codec'ler ve yankı giderme teknikleri gibi birçok bileşen geliştiren ve halihazırda VoIP ve video konferans yazılım şirketi olan Global IP Solutions'ı (GIPS)'i satın aldı. Daha sonra Google, GIPS teknolojisini açık kaynak haline getirdi ve ortak bir standart üretmek için IETF ve W3C'deki ilgili birimlerle iletişime geçti.[5][6] Google Mayıs 2011'de, WebRTC olarak bilinen tarayıcı tabanlı gerçek zamanlı iletişim için açık kaynaklı bir proje yayınladı. Devamında IETF'de WebRTC için bir takım protokoller geliştirildi ve W3C'de tarayıcı API'lerini standardize etmek çalışmalar yürütüldü.
Ericsson Labs, Mayıs 2011'de bir WebKit kütüphanesi kullanarak WebRTC için ilk uygulamayı oluşturdu.[7] Ekim 2011'de W3C, şartname için ilk taslağını yayınladı.[8] WebRTC için diğer önemli tarihler ise; ilk tarayıcılar arası videolu aramanın yapılması (Şubat 2013), ilk tarayıcılar arası veri aktarımının yapılması (Şubat 2014) ve Google Hangouts'un hayata geçirilmesidir (Temmuz 2014).[9]
W3C'nin taslak API'si, Web Hypertext Application Technology Working Group'ta (WHATWG)'de yapılan ön çalışmalara dayanmaktadır. Ericsson Labs'de, standart öncesinde konsept bir uygulama oluşturuldu ve ConnectionPeer API olarak adlandırıldı. WebRTC Çalışma Grubu, bu standardın aşağıdaki maddelere dayanarak gelişmesini istemektedir:
- IETF'deki RTCWEB grubu ile ortaklaşa olarak yapılan çalışmalarda bir protokol kümesinin oluşturulması ve bu protokollerin, standart dokümanı ile birlikte web tarayıcılarında gerçek zamanlı iletişimin gerçekleştirilmesini sağlamasıdır. Hiçbir sinyalleşme protokolü zorunlu olarak tutulmasa da, WebSocket üzerinden SIP ve açık kaynaklı JsSIP yaygın olarak kullanılabilir.
- Yerel yetenekleri ve yerel akışları ortaya koyarken ortaya çıkan gizlilik sorunları giderilmelidir.
- Özellikle veri kanallarının uygulanmasına ilişkin grup içinde teknik tartışmalar yürütülmelidir.
- Erken süreçte deneyler ile edinilen deneyimler incelenmelidir.
- Diğer gruplardan ve bireylerden geri bildirimler dikkate alınmalıdır.
Kasım 2017'de WebRTC 1.0 spesifikasyonunun durumu, Çalışma Taslağından (Working Draft) Aday Tavsiyesine (Candidate Recommendation) geçmiştir.[10]
Genel bakış
Tasarım
WebRTC'nin ana bileşenleri, aşağıda yer alan JavaScript API'lerini içerir :
getUserMedia
metodu kullanıcının ses ve video verisini alır (Cihazın kamerasına ve mikrofonuna erişim isteği göndererek).RTCPeerConnection
eşler arasında ses ve video iletişimini sağlar ve geriye bir nesne döndürür. Sinyal işleme, codec yönetimi, eşler arası iletişim, güvenlik ve bant genişliği yönetimini bu nesne üzerinden gerçekleştirir.RTCDataChannel
eşler arasında gerçekleşen harici verilerin çift yönlü iletişimine izin verir. WebSockets ile aynı API'yi kullanır ve çok düşük bir gecikme süresine sahiptir .
WebRTC API'si ayrıca istatistik verilerinin alınması için bir fonksiyonu da içerir:
getStats
metodu, web uygulamasının WebRTC oturumlarıyla ilgili bir dizi istatistik verilerinin alınmasını sağlar. Bu istatistikî verilerin tanımı, ayrı bir W3C dokümanında açıklanmaktadır.
W3C, WebRTC için ORTC (Nesne Gerçek Zamanlı İletişim) geliştirmektedir.
Örnekler
WebRTC, Başlangıçta web tarayıcıları için geliştirilmesine rağmen, mobil platformlar ve IoT cihazları da dahil olmak üzere diğer birçok cihaz için uygulamalara sahiptir. Örnek olarak, bir web tarayıcısı üzerinden arama işlemlerini gerçekleştiren VoIP telefonları verilebilir.[11]
Cihaz ve tarayıcı desteği
WebRTC aşağıdaki tarayıcılar tarafından desteklenmektedir:
- Masaüstü bilgisayarlarda:
- Microsoft Edge 12+
- Google Chrome 28+
- Mozilla Firefox 22+
- Safari 11+
- Opera 18+
- Vivaldi 1.9+
- Android
- Google Chrome 28+ (29'dan beri varsayılan olarak etkindir)
- Mozilla Firefox 24+
- Opera Mobile 12+
- Chrome OS
- Firefox İşletim Sistemi
- BlackBerry 10
- iOS
- MobileSafari / WebKit (iOS 11 +)
- Tizen 3.0
Gizlilik konusunda endişeler
Ocak 2015'te TorrentFreak sitesi, WebRTC'yi destekleyen tarayıcılarda ciddi bir güvenlik açığı bildirdi ve bir kullanıcının gerçek IP adresini göstererek VPN tünellerinin güvenliğini tehlikeye attığını söyledi. Tarayıcılarda varsayılan olarak IP adresi okuma istekleri tarayıcının geliştirici konsolunda görüntülenmemekte ve çoğu reklam engelleme / gizlilik / güvenlik eklentisi tarafından engellenememektedir. Bu önlemlere rağmen Google gibi reklam verenler ve diğer varlıklar tarafından çevrimiçi izlemeyi mümkün kılmıştır (ancak uBlock Origin eklentisi bu sorunu çözmektedir). Eylül 2019 itibarıyla, bu WebRTC kusuru hala Firefox 69.x'te ortaya çıkmakta ve buna rağmen varsayılan olarak kullanıcının dahili IP adresini web'e maruz bırakılmaktadır.[12]
Ayrıca bakınız
- Global IP Çözümleri (GIPS)
- Gerçek Zamanlı Aktarım Protokolü (RTP)
- Oturum Açıklama Protokolü (SDP)
- WebRTC Ağ Geçidi
Kaynakça
- ^ "WebRTC 1.0: Real-time Communication Between Browsers". World Wide Web Consortium. 27 Eylül 2018. 7 Nisan 2019 tarihinde kaynağından arşivlendi. Erişim tarihi: 25 Mart 2019.
- ^ "Src/webrtc - Git at Google". 23 Nisan 2018 tarihinde kaynağından arşivlendi. Erişim tarihi: 17 Nisan 2020.
- ^ a b "WebRTC". WebRTC. 9 Ocak 2018 tarihinde kaynağından arşivlendi. Erişim tarihi: 6 Şubat 2018.
- ^ "GStreamer 1.14 release notes". gstreamer.freedesktop.org. 20 Mart 2018 tarihinde kaynağından arşivlendi. Erişim tarihi: 19 Aralık 2019.
- ^ "Are the WebRTC components from Google's acquisition of Global IP Solutions?". WebRTC. 7 Haziran 2011 tarihinde kaynağından arşivlendi. Erişim tarihi: 6 Şubat 2018.
- ^ Wauters (18 Mayıs 2010). "Google makes $68.2 million cash offer for Global IP Solutions". TechCrunch. 7 Şubat 2018 tarihinde kaynağından arşivlendi. Erişim tarihi: 6 Şubat 2018.
- ^ Stefan Håkansson (26 Mayıs 2011). "Beyond HTML5: Experiment with Real-Time Communication in a Browser". Ericsson Research blog. 7 Şubat 2018 tarihinde kaynağından arşivlendi. Erişim tarihi: 6 Şubat 2018.
- ^ "WebRTC 1.0: Real-time Communication Between Browsers (W3C Working Draft 27 October 2011)". World Wide Web Consortium. 27 Ekim 2011. 29 Ekim 2011 tarihinde kaynağından arşivlendi. Erişim tarihi: 6 Şubat 2018.
- ^ "WebRTC: So Much More Than Videoconferencing". GitHub. 7 Şubat 2018 tarihinde kaynağından arşivlendi. Erişim tarihi: 6 Şubat 2018.
- ^ "WebRTC 1.0: Real-time Communication Between Browsers (W3C Candidate Recommendation 02 November 2017)". 2 Kasım 2017. 2 Kasım 2017 tarihinde kaynağından arşivlendi. Erişim tarihi: 17 Nisan 2020.
- ^ "Catch the Babelfish: Irish telco devises a new kind of cloud phone". Kasım 2017. 1 Kasım 2017 tarihinde kaynağından arşivlendi. Erişim tarihi: 17 Nisan 2020.
- ^ "Prevent WebRTC from leaking local IP address". uBlock Origin documentation. 26 Mart 2016. 21 Şubat 2016 tarihinde kaynağından arşivlendi. Erişim tarihi: 1 Eylül 2016.
Daha fazlası
- Proust, S., ed. (May 2016). Additional WebRTC Audio Codecs for Interoperability. IETF. doi:10.17487/RFC7875. RFC 7875. Retrieved 2016-10-12.
- Valin, J. M.; Bran, C. (May 2016). WebRTC Audio Codec and Processing Requirements. IETF. doi:10.17487/RFC7874. RFC 7874. Retrieved 2016-10-12.
- Roach, A. B. (March 2016). WebRTC Video Processing and Codec Requirements. IETF. doi:10.17487/RFC7742. RFC 7742. Retrieved 2016-10-12.
- Perumal, M.; Wing, D.; Ravindranath, R.; Reddy, T.; Thomson, M. (October 2015). Session Traversal Utilities for NAT (STUN) Usage for Consent Freshness. IETF. doi:10.17487/RFC7675. RFC 7675. Retrieved 2016-10-12.
- Holmberg, C.; Hakansson, S.; Eriksson, G. (March 2015). Web Real-Time Communication Use Cases and Requirements. IETF. doi:10.17487/RFC7478. RFC 7478. Retrieved 2016-10-12.
Dış bağlantılar
- https://webrtc.org/9 Ocak 2018 tarihinde Archive.is sitesinde arşivlendi
- W3C Web Gerçek Zamanlı İletişim Çalışma Grubu 11 Nisan 2020 tarihinde Wayback Machine sitesinde arşivlendi.
- WEB tarayıcılarında IETF Gerçek Zamanlı İletişim (rtcweb) Çalışma Grubu 20 Nisan 2020 tarihinde Wayback Machine sitesinde arşivlendi.
- WebRTC'ye dayalı görüntülü sohbet demo uygulaması 26 Nisan 2020 tarihinde Wayback Machine sitesinde arşivlendi.
- WebRTC veri kanallarının bağımsız açık kaynak uygulaması 18 Ekim 2019 tarihinde Wayback Machine sitesinde arşivlendi.