WebRTC ( Web Real-Time Communication ) es un proyecto gratuito y de código abierto que proporciona a los navegadores web y a las aplicaciones móviles comunicación en tiempo real (RTC) mediante interfaces de programación de aplicaciones (API). Permite la comunicación y la transmisión de audio y vídeo dentro de las páginas web mediante la comunicación directa entre pares , eliminando la necesidad de instalar complementos o descargar aplicaciones nativas. [ 4 ]
Con el respaldo de Apple , Google , Microsoft , Mozilla y Opera , las especificaciones de WebRTC han sido publicadas por el Consorcio World Wide Web (W3C) y el Grupo de Trabajo de Ingeniería de Internet (IETF). [ 5 ] [ 6 ]
ICE , STUN y TURN son las técnicas de travesía NAT utilizadas para conectarse a pares remotos. [ 7 ]
Historia
En mayo de 2010, Google compró Global IP Solutions o GIPS, una empresa de software de VoIP y videoconferencia que había desarrollado muchos componentes necesarios para RTC, como códecs y técnicas de cancelación de eco. Google liberó el código fuente de la tecnología GIPS y colaboró con los organismos de estandarización pertinentes en el IETF y el W3C para garantizar el consenso de la industria. [ 8 ] [ 9 ] En mayo de 2011, Google lanzó un proyecto de código abierto para la comunicación en tiempo real basada en navegador, conocido como WebRTC. [ 10 ] A esto le siguió un trabajo continuo para estandarizar los protocolos pertinentes en el IETF [ 11 ] y las API de navegador en el W3C. [ 12 ]
En enero de 2011, Ericsson Labs creó la primera implementación de WebRTC utilizando una biblioteca WebKit modificada. [ 13 ] [ 14 ] En octubre de 2011, el W3C publicó su primer borrador de la especificación. [ 15 ] Los hitos de WebRTC incluyen la primera videollamada entre navegadores (febrero de 2013), las primeras transferencias de datos entre navegadores (febrero de 2014) y, a partir de julio de 2014, Google Hangouts estaba "en cierto modo" utilizando WebRTC. [ 16 ]
El borrador de la API del W3C se basó en el trabajo preliminar realizado en el WHATWG . [ 17 ] Se la denominó API ConnectionPeer, y se creó una implementación de concepto preestándar en Ericsson Labs. [ 13 ] El Grupo de Trabajo de WebRTC espera que esta especificación evolucione significativamente en función de:
- Resultados de los intercambios en curso en el grupo RTCWEB complementario en IETF [ 18 ] para definir el conjunto de protocolos que, junto con este documento, definen las comunicaciones en tiempo real en navegadores web. Si bien no se exige ningún protocolo de señalización en particular, SIP sobre WebSockets ( RFC 7118 ) se usa con frecuencia, en parte debido a la aplicabilidad de SIP [ 19 ] a la mayoría de los escenarios de comunicación previstos, así como a la disponibilidad de software de código abierto como JsSIP .
- Problemas de privacidad que surgen al exponer capacidades locales y flujos locales.
- Discusiones técnicas dentro del grupo, en particular sobre la implementación de canales de datos [ 20 ].
- Experiencia adquirida a través de la experimentación temprana
- Comentarios de otros grupos e individuos.
En noviembre de 2017, la especificación WebRTC 1.0 pasó de borrador de trabajo a recomendación candidata. [ 21 ]
En enero de 2021, la especificación WebRTC 1.0 pasó de Recomendación candidata a Recomendación . [ 5 ]
Diseño
Los componentes principales de WebRTC incluyen varias API de JavaScript :
getUserMediaadquiere los medios de audio y vídeo (por ejemplo, accediendo a la cámara y al micrófono de un dispositivo). [ 22 ]RTCPeerConnectionPermite la comunicación de audio y video entre pares. Realiza procesamiento de señales , manejo de códecs , comunicación punto a punto, seguridad y gestión de ancho de banda . [ 23 ]RTCDataChannelPermite la comunicación bidireccional de datos arbitrarios entre pares. Los datos se transportan mediante SCTP sobre DTLS . [ 24 ] Utiliza la misma API que WebSockets y tiene una latencia muy baja . [ 25 ]
La API de WebRTC también incluye una función de estadísticas:
getStatsPermite que la aplicación web recupere un conjunto de estadísticas sobre las sesiones WebRTC. Estos datos estadísticos se describen en un documento W3C aparte. [ 26 ]
La API WebRTC no incluye disposiciones para la señalización , es decir, para descubrir pares a los que conectarse y determinar cómo establecer conexiones entre ellos. Las aplicaciones utilizan el Establecimiento de Conectividad Interactiva (ICT) para las conexiones y son responsables de la gestión de las sesiones, posiblemente basándose en el Protocolo de Inicio de Sesión (SITP ), el Protocolo de Mensajería y Presencia Extensible ( XMPP ), el Transporte de Telemetría de Cola de Mensajes (MST) , Matrix u otro protocolo. La señalización puede depender de uno o más servidores. [ 27 ] [ 28 ]
RFC 7478 exige que las implementaciones proporcionen los códecs de audio PCMA / PCMU ( RFC 3551 ), Telephone Event as DTMF ( RFC 4733 ) y Opus ( RFC 6716 ) como capacidades mínimas. Las API de PeerConnection, canal de datos y navegador de captura de medios se detallan en la especificación del W3C.
El W3C está desarrollando ORTC (Object Real-Time Communications) para WebRTC. [ 29 ]
Aplicaciones
WebRTC permite que los navegadores transmitan archivos directamente entre sí, reduciendo o eliminando por completo la necesidad de alojamiento de archivos en el servidor. WebTorrent utiliza un transporte WebRTC para habilitar el intercambio de archivos peer-to-peer mediante el protocolo BitTorrent en el navegador. [ 30 ] Algunos sitios web de intercambio de archivos lo utilizan para permitir que los usuarios envíen archivos directamente entre sí en sus navegadores, aunque esto requiere que quien sube el archivo mantenga la pestaña abierta hasta que se haya descargado. [ 31 ] [ 32 ] [ 33 ] Algunas CDN , como Peer5, propiedad de Microsoft, utilizan el ancho de banda del cliente para subir contenido multimedia a otros pares conectados, lo que permite que cada par actúe como un servidor de borde. [ 34 ] [ 35 ]
Aunque inicialmente se desarrolló para navegadores web, WebRTC tiene aplicaciones para dispositivos que no son navegadores, incluidas plataformas móviles y dispositivos IoT . Algunos ejemplos son la telefonía VoIP basada en navegador , también llamada teléfonos en la nube o teléfonos web, que permite realizar y recibir llamadas desde un navegador web, eliminando la necesidad de descargar e instalar un softphone. [ 36 ]
Apoyo
WebRTC es compatible con los siguientes navegadores (lista incompleta; se especifica la versión más antigua compatible):
- PC de escritorio
- Microsoft Edge 12+ [ 37 ]
- Google Chrome 28+
- Mozilla Firefox 22+ [ 38 ]
- Safari 11+ [ 39 ]
- Ópera 18+ [ 40 ]
- Vivaldi 1.9+
- Corajudo
- Androide
- Google Chrome 28+ (habilitado por defecto desde la versión 29)
- Mozilla Firefox 24+ [ 41 ]
- Opera Mobile 12+
- ChromeOS
- Firefox OS
- BlackBerry 10
- iOS
- MobileSafari/WebKit ( iOS 11+ )
- Tizen 3.0
Compatibilidad con códecs en diferentes navegadores
WebRTC establece un conjunto estándar de códecs que todos los navegadores compatibles deben implementar (subrayado). Algunos navegadores también pueden admitir otros códecs. [ 42 ]
Vulnerabilidad
En enero de 2015, TorrentFreak informó de una grave vulnerabilidad de seguridad en los navegadores compatibles con WebRTC, que comprometía la seguridad de los túneles VPN al exponer la verdadera dirección IP del usuario . [ 44 ] Las solicitudes de lectura de la dirección IP no son visibles en la consola del desarrollador del navegador y no son bloqueadas por la mayoría de los complementos de bloqueo de anuncios , privacidad y seguridad , lo que permite el seguimiento en línea a pesar de las precauciones. [ 45 ]
Se ha informado que la causa de la fuga de direcciones no es un error que se pueda parchear, sino que es fundamental para el funcionamiento de WebRTC; sin embargo, existen varias soluciones para mitigar el problema. Se puede comprobar la fuga de WebRTC y se ofrecen soluciones para la mayoría de los navegadores. [ 46 ] WebRTC se puede deshabilitar, si no es necesario, en la mayoría de los navegadores. El complemento uBlock Origin puede solucionar este problema (ya que algunos navegadores ahora lo solucionan por sí mismos, a partir de uBlock Origin v1.38 en adelante esta opción se ha deshabilitado en estos navegadores [ 47 ] ).
Limitaciones
Al igual que HTTP3 / QUIC , WebRTC no se puede tunelizar sobre TOR porque TOR no admite UDP; por lo tanto, la mayoría de las aplicaciones WebRTC no funcionan sin omitir TOR o usar servidores TURN.
Véase también
- CU-RTC-WEB
- El protocolo de transporte en tiempo real (también conocido como RTP) es utilizado internamente por WebRTC (específicamente, utiliza SRTP) [ 48 ].
Referencias
- ↑ "WebRTC 1.0: Comunicación en tiempo real entre navegadores" . Consorcio World Wide Web . 27 de septiembre de 2018. Archivado del original el 7 de abril de 2019. Consultado el 25 de marzo de 2019 .
- ↑ "Src/webrtc - Git en Google" . Archivado del original el 23 de abril de 2018. Consultado el 22 de abril de 2018 .
- ↑ "Licencia WebRTC" .
- ↑ Cómo WebRTC está revolucionando la telefonía. Archivado el 7 de abril de 2014 en Wayback Machine . Blogs.trilogy-lte.com (21 de febrero de 2014). Consultado el 11 de abril de 2014.
- 1 2 "Web Real-Time Communications (WebRTC) transforma el panorama de las comunicaciones al convertirse en una recomendación del World Wide Web Consortium (W3C) y en un estándar del Internet Engineering Task Force (IETF)" . World Wide Web Consortium . 26 de enero de 2021. Archivado del original el 27 de julio de 2022. Recuperado el 27 de enero de 2021 .
- ↑ "Páginas de estado de Rtcweb" . tools.ietf.org . Archivado del original el 20 de abril de 2020. Consultado el 18 de febrero de 2021 .
- ↑ "Introducción" . W3C WebRTC .
- ↑ "¿Los componentes de WebRTC provienen de la adquisición de Global IP Solutions por parte de Google?" . WebRTC . Archivado del original el 7 de junio de 2011 . Consultado el 6 de febrero de 2018 .
- ↑ Wauters, Robin (18 de mayo de 2010). "Google hace una oferta en efectivo de 68,2 millones de dólares por Global IP Solutions" . TechCrunch . Archivado del original el 7 de febrero de 2018. Recuperado el 6 de febrero de 2018 .
- ↑ Harald Alvestrand (31 de mayo de 2011). "Google publica el código fuente de WebRTC" . public-webrtc@w3.org. Archivado del original el 27 de febrero de 2013. Consultado el 12 de septiembre de 2012 .
- ↑ "Estatutos del grupo de trabajo de Comunicación en Tiempo Real en Navegadores WEB (rtcweb)" . Archivado del original el 11 de noviembre de 2013. Consultado el 11 de noviembre de 2013 .
- ↑ "WebRTC 1.0: Comunicación en tiempo real entre navegadores" . W3.org. Archivado del original el 5 de septiembre de 2012. Consultado el 12 de septiembre de 2012 .
- 1 2 "Más allá de HTML5: vídeo conversacional entre pares" . Blog de investigación de Ericsson . Labs.ericsson.com. 25 de enero de 2011. Archivado del original el 25 de febrero de 2017. Consultado el 21 de marzo de 2021 .
- ↑ Stefan Håkansson; Stefan Ålund (26 de mayo de 2011). "Más allá de HTML5: Experimenta con la comunicación en tiempo real en un navegador" . Blog de investigación de Ericsson . Archivado del original el 7 de febrero de 2018. Consultado el 6 de febrero de 2018 .
- ↑ "WebRTC 1.0: Comunicación en tiempo real entre navegadores (borrador de trabajo del W3C, 27 de octubre de 2011)" . Consorcio World Wide Web . 27 de octubre de 2011. Archivado del original el 29 de octubre de 2011. Consultado el 6 de febrero de 2018 .
- ↑ Nowak, Szymon. "WebRTC: Mucho más que videoconferencia" . GitHub . Archivado del original el 7 de febrero de 2018. Consultado el 6 de febrero de 2018 .
- ↑ "Introducción — Estándar HTML" . Whatwg.org. Archivado del original el 16 de agosto de 2014. Consultado el 12 de septiembre de 2012 .
- ↑ "Páginas de estado de Rtcweb" . Tools.ietf.org. Archivado del original el 5 de septiembre de 2012. Consultado el 12 de septiembre de 2012 .
- ↑ SIP Trunking, MTPL (18 de julio de 2023). "SIP Trunking VoIP con WebRTC SDK" . Moon Technolabs . Archivado del original el 5 de agosto de 2023. Recuperado el 18 de julio de 2023 .
- ↑ Jesup, Randell; Loreto, Salvatore; Tüxen, Michael (5 de marzo de 2012). "draft-jesup-rtcweb-data-protocol-00 - Protocolo de canal de datos WebRTC" . Tools.ietf.org. Archivado del original el 31 de octubre de 2012. Consultado el 12 de septiembre de 2012 .
- ↑ "WebRTC 1.0: Comunicación en tiempo real entre navegadores (Recomendación candidata del W3C, 2 de noviembre de 2017)" . 2 de noviembre de 2017. Archivado del original el 2 de noviembre de 2017. Consultado el 25 de marzo de 2019 .
- ↑ "Captura y transmisión de medios: getUserMedia" . W3C. 3 de septiembre de 2013. Archivado del original el 2 de enero de 2014. Consultado el 15 de enero de 2014 .
- ↑ "WebRTC: Interfaz RTCPeerConnection" . W3C. 10 de septiembre de 2013. Archivado del original el 5 de septiembre de 2012. Consultado el 15 de enero de 2014 .
- ↑ Jesup, Randell; Loreto, Salvatore; Tüxen, Michael (enero de 2021). "RFC 8831 - Canales de datos WebRTC" . datatracker.ietf.org . Archivado del original el 10 de marzo de 2022. Consultado el 10 de marzo de 2022 .
- ↑ "WebRTC: RTCDataChannel" . W3C. 10 de septiembre de 2013. Archivado del original el 5 de septiembre de 2012. Consultado el 15 de enero de 2014 .
- ↑ "Identificadores para la API de estadísticas de WebRTC" . W3C. 29 de septiembre de 2014. Archivado del original el 15 de julio de 2017. Consultado el 2 de diciembre de 2017 .
- ↑ Tsahi Levent-Levi (13 de abril de 2020). "Servidor WebRTC: ¿Qué es exactamente?" . BlogGeek.me . Archivado del original el 11 de mayo de 2020. Consultado el 10 de junio de 2020 .
- ↑ Tsahi Levent-Levi (13 de noviembre de 2014). "Matrix.org y WebRTC: una entrevista con Matthew Hodgson" . BlogGeek.me . Archivado del original el 25 de febrero de 2021. Consultado el 10 de junio de 2020 .
- ↑ "Grupo comunitario W3C ORTC (Object Real-time Communications)" . 19 de agosto de 2014. Archivado del original el 29 de octubre de 2014. Consultado el 29 de octubre de 2014 .
- ↑ "Preguntas frecuentes de WebTorrent" . webtorrent.io . Archivado del original el 11 de marzo de 2022. Consultado el 10 de marzo de 2022 .
- ↑ "Cómo transferir archivos entre Linux, Android e iOS usando Snapdrop" . MUO . 4 de agosto de 2021. Archivado del original el 29 de enero de 2022. Consultado el 10 de marzo de 2022 .
- ↑ Pinola, Melanie (07-04-2014). "La forma más fácil y rápida de transferir archivos entre dispositivos en la misma red" . Computerworld . Archivado del original el 28-06-2022 . Recuperado el 10-03-2022 .
- ↑ "FilePizza: comparte archivos sin intermediarios en tu navegador - gHacks Tech News" . gHacks Technology News . 12 de mayo de 2015. Archivado del original el 23 de enero de 2022. Consultado el 10 de marzo de 2022 .
- ↑ Foley, Mary Jo. "Microsoft adquiere Peer5 para complementar la transmisión de video en vivo de Teams" . ZDNet . Archivado del original el 10 de marzo de 2022. Consultado el 10 de marzo de 2022 .
- ↑ "Descripción general - Documentación P2P de Peer5" . docs.peer5.com . Archivado del original el 16 de marzo de 2022. Consultado el 10 de marzo de 2022 .
- ↑ "Atrapa al pez Babel: una compañía telefónica irlandesa diseña un nuevo tipo de teléfono en la nube" . Noviembre de 2017. Archivado del original el 1 de noviembre de 2017. Consultado el 20 de noviembre de 2017 .
- ↑ "La API de ORTC ya está disponible en Microsoft Edge" . Microsoft. 18 de septiembre de 2015. Archivado del original el 9 de octubre de 2015. Consultado el 20 de septiembre de 2015 .
- ↑ Notas de Firefox - Escritorio Archivadas el 21/08/2014 en Wayback Machine . Mozilla.org (25/06/2013). Consultado el 11/04/2014.
- ↑ "Safari 11.0" . Apple Inc. Archivado del original el 14 de noviembre de 2017. Consultado el 6 de junio de 2017 .
- ↑ Noticias de Opera archivadas el 7 de septiembre de 2015 en Wayback Machine . blogs.opera.com (19 de noviembre de 2013). Consultado el 17 de septiembre de 2015.
- ↑ Notas de Firefox - Escritorio Archivadas el 1 de abril de 2021 en Wayback Machine . Mozilla.org (17 de septiembre de 2013). Consultado el 4 de agosto de 2014.
- ↑ "Códecs utilizados por WebRTC - Tecnologías de medios web | MDN" . developer.mozilla.org . Archivado del original el 27/07/2021 . Consultado el 29/07/2021 .
- ↑ Fablet, Youenn (12 de marzo de 2019). "En el camino hacia WebRTC 1.0, incluyendo VP8" . WebKit . Archivado del original el 29 de julio de 2021. Recuperado el 29 de julio de 2021 .
- ↑ Una grave falla de seguridad filtra las direcciones IP reales de los usuarios de VPN. Archivado el 8 de enero de 2021 en Wayback Machine . TorrentFreak.com (30 de enero de 2015). Consultado el 21 de febrero de 2015.
- ↑ Solicitudes de direcciones IP de STUN para WebRTC Archivado el 18/02/2015 en Wayback Machine Recuperado el 21/02/2015.
- ↑ Timmerman, Crystal (28 de febrero de 2022). "WebRTC filtra direcciones IP reales (incluso con VPN)" . IPVanish . Archivado del original el 13 de agosto de 2022. Recuperado el 12 de agosto de 2022 .
- ↑ Raymond Hill (17 de septiembre de 2021). "Evitar que WebRTC filtre la dirección IP local" . Documentación de uBlock Origin . Archivado del original el 21 de febrero de 2016. Consultado el 18 de diciembre de 2021 .
- ↑ "Introducción al Protocolo de Transporte en Tiempo Real (RTP) - API Web | MDN" . developer.mozilla.org . 26 de julio de 2024.
Lecturas adicionales
- Proust, S., ed. (mayo de 2016). Códecs de audio WebRTC adicionales para la interoperabilidad . IETF . doi : 10.17487/RFC7875 . RFC 7875. Recuperado el 12 de octubre de 2016 .
- Valin, JM; Bran, C. (mayo de 2016). Requisitos de procesamiento y códec de audio WebRTC . IETF . doi : 10.17487/RFC7874 . RFC 7874. Recuperado el 12 de octubre de 2016 .
- Roach, AB (marzo de 2016). Procesamiento de vídeo WebRTC y requisitos de códec . IETF . doi : 10.17487/RFC7742 . RFC 7742. Recuperado el 12 de octubre de 2016 .
- Perumal, M.; Wing, D.; Ravindranath, R.; Reddy, T.; Thomson, M. (octubre de 2015). Uso de Session Traversal Utilities for NAT (STUN) para la actualización del consentimiento . IETF . doi : 10.17487/RFC7675 . RFC 7675. Consultado el 12 de octubre de 2016 .
- Holmberg, C.; Hakansson, S.; Eriksson, G. (marzo de 2015). Casos de uso y requisitos de la comunicación web en tiempo real . IETF . doi : 10.17487/RFC7478 . RFC 7478. Recuperado el 12 de octubre de 2016 .
Enlaces externos
- WebRTC
- De igual a igual
- Software que utiliza la licencia BSD.
- Desarrollo web
- Estándares web