stringtranslate.com

VNC

Logotipo de Computación en Red Virtual
VNC en KDE 3.1

VNC ( Virtual Network Computing ) es un sistema gráfico de uso compartido de escritorio que utiliza el protocolo Remote Frame Buffer (RFB) para controlar de forma remota otra computadora . Transmite la entrada del teclado y el mouse de una computadora a otra, retransmitiendo las actualizaciones de la pantalla gráfica , a través de una red . [1] Los usos populares de esta tecnología incluyen soporte técnico remoto y acceso a archivos en la computadora del trabajo desde la computadora del hogar, o viceversa.

VNC es independiente de la plataforma, con clientes y servidores para muchos sistemas operativos basados ​​en GUI y para Java . Múltiples clientes pueden conectarse a un servidor VNC al mismo tiempo. Hay una serie de variantes de VNC [2] que ofrecen su propia funcionalidad particular; por ejemplo, algunas optimizadas para Microsoft Windows u ofrecen transferencia de archivos (no parte de VNC propiamente dicho), etc. Muchas son compatibles (sin sus características agregadas) con VNC propiamente dicho en el sentido de que un visor de una versión puede conectarse con un servidor de otra; otras se basan en código VNC pero no son compatibles con VNC estándar.

VNC se desarrolló originalmente en el Laboratorio de Investigación de Olivetti & Oracle en Cambridge, Reino Unido, cuyos desarrolladores posteriormente crearon RealVNC Ltd y reclamaron VNC y RFB como marcas registradas en los EE. UU. y otros países. El código fuente original de VNC y muchos derivados modernos son de código abierto bajo la Licencia Pública General de GNU .

Historia

El Laboratorio de Investigación Olivetti & Oracle (ORL) [3] en Cambridge, Reino Unido, desarrolló VNC en una época en la que Olivetti y Oracle Corporation eran propietarios del laboratorio. Entre los desarrolladores que trabajaron en VNC mientras estaban en el Laboratorio de Investigación AT&T se encuentran Tristan Richardson (inventor), Andy Harter (líder del proyecto), Quentin Stafford-Fraser , James Weatherall y Andy Hopper . [4] El nombre Virtual Network Computer/Computing (VNC) se originó con el trabajo de ORL en un cliente ligero llamado Videotile, que también utilizaba el protocolo RFB. El Videotile tenía una pantalla LCD con entrada de lápiz y una conexión ATM rápida a la red. En ese momento, "computadora de red" se usaba comúnmente como sinónimo de cliente ligero; VNC es esencialmente una computadora de red solo de software (es decir, virtual). [ cita requerida ]

En 1999, AT&T adquirió el laboratorio y en 2002 cerró las actividades de investigación del laboratorio. Después de esto, varios miembros del equipo de desarrollo (incluidos Richardson, Harter, Weatherall y Hopper) formaron RealVNC para continuar trabajando en software VNC comercial y de código abierto bajo ese nombre. A partir de 2013 , RealVNC Ltd reclama el término "VNC" como marca registrada en los Estados Unidos y en otros países. [5]

El código fuente original con licencia GPL se ha utilizado en varias otras versiones de VNC. Dicha bifurcación no ha provocado problemas de compatibilidad porque el protocolo RFB está diseñado para ser extensible. Los clientes y servidores de VNC negocian sus capacidades mediante protocolos de enlace para utilizar las opciones más adecuadas admitidas en ambos extremos.

Diseño y funcionamiento

El servidor VNC es el programa en la máquina que comparte una parte de la pantalla (y puede no estar relacionado con una pantalla física: el servidor puede ser "headless" ), y permite al cliente compartir el control de la misma. El cliente VNC (o visualizador) es el programa que representa los datos de la pantalla que se originan en el servidor, recibe actualizaciones de este y presumiblemente lo controla informando al servidor de la entrada local recopilada. El protocolo VNC ( protocolo RFB ) es muy simple, basado en la transmisión de una primitiva gráfica del servidor al cliente ("Colocar un rectángulo de datos de píxeles en la posición X, Y especificada") y mensajes de eventos del cliente al servidor.

En el método normal de funcionamiento, un visualizador se conecta a un puerto del servidor (puerto predeterminado: 5900). Alternativamente (según la implementación), un navegador puede conectarse al servidor (puerto predeterminado: 5800). Y un servidor puede conectarse a un visualizador en "modo de escucha" en el puerto 5500. Una ventaja del modo de escucha es que el sitio del servidor no tiene que configurar su cortafuegos para permitir el acceso en el puerto 5900 (o 5800); la responsabilidad recae en el visualizador, lo que resulta útil si el sitio del servidor no tiene conocimientos informáticos y el usuario del visualizador tiene más conocimientos.

El servidor envía pequeños rectángulos del framebuffer al cliente. En su forma más simple, el protocolo VNC puede utilizar mucho ancho de banda , por lo que se han ideado varios métodos para reducir la sobrecarga de comunicación. Por ejemplo, existen varias codificaciones (métodos para determinar la forma más eficiente de transferir estos rectángulos). El protocolo VNC permite que el cliente y el servidor negocien qué codificación utilizarán. La codificación más simple, compatible con todos los clientes y servidores, es la codificación sin procesar , que envía datos de píxeles en orden de línea de exploración de izquierda a derecha y, después de que se haya transmitido la pantalla completa original, transfiere solo los rectángulos que cambian. Esta codificación funciona muy bien si solo una pequeña porción de la pantalla cambia de un cuadro al siguiente (como cuando el puntero del mouse se mueve por un escritorio o cuando se escribe texto en el cursor), pero las demandas de ancho de banda se vuelven muy altas si muchos píxeles cambian al mismo tiempo (como cuando se desplaza una ventana o se ve un video en pantalla completa).

VNC utiliza de forma predeterminada el puerto TCP 5900+ N , [6] [7] donde N es el número de pantalla (normalmente :0 para una pantalla física). Varias implementaciones también inician un servidor HTTP básico en el puerto 5800+ N para proporcionar un visor VNC como un subprograma Java , lo que permite una conexión sencilla a través de cualquier navegador web habilitado para Java. Se pueden utilizar diferentes asignaciones de puertos siempre que tanto el cliente como el servidor estén configurados en consecuencia. También existe una implementación de cliente VNC HTML5 para navegadores modernos (no se requieren complementos). [8]

Aunque es posible incluso con un ancho de banda bajo, el uso de VNC a través de Internet se facilita si el usuario tiene una conexión de banda ancha en ambos extremos. Sin embargo, puede requerir una traducción avanzada de direcciones de red (NAT), un firewall y una configuración del enrutador, como el reenvío de puertos, para que la conexión se realice. Los usuarios pueden establecer comunicación a través de tecnologías de red privada virtual (VPN) para facilitar el uso a través de Internet, o como una conexión LAN si se utiliza VPN como proxy, o a través de un repetidor VNC (útil en presencia de un NAT). [9] [10]

Además, la pantalla que se muestra a través de VNC no es necesariamente la misma que ve un usuario en el servidor. En equipos Unix/Linux que admiten varias sesiones X11 simultáneas, VNC puede configurarse para que sirva a una sesión X11 existente en particular o para iniciar una propia. También es posible ejecutar varias sesiones VNC desde el mismo equipo. En Microsoft Windows, la sesión VNC que se muestra siempre es la sesión del usuario actual. [ cita requerida ]

En julio de 2014, RealVNC publicó una vista previa para desarrolladores de Wayland . [11] [12]

Seguridad

De manera predeterminada, RFB no es un protocolo seguro. Si bien las contraseñas no se envían en texto sin formato (como en Telnet ), el descifrado podría resultar exitoso si tanto la clave de cifrado como la contraseña codificada se rastrearan desde una red. Por este motivo, se recomienda utilizar una contraseña de al menos 8 caracteres. Por otro lado, también existe un límite de 8 caracteres en algunas versiones de VNC; si se envía una contraseña que supera los 8 caracteres, se eliminan los caracteres sobrantes y la cadena truncada se compara con la contraseña.

UltraVNC admite el uso de un complemento de cifrado de código abierto que cifra toda la sesión VNC, incluida la autenticación de contraseñas y la transferencia de datos. También permite que la autenticación se realice en función de las cuentas de usuario de NTLM y Active Directory . Sin embargo, el uso de dichos complementos de cifrado lo hace incompatible con otros programas VNC. RealVNC ofrece cifrado AES de alta resistencia como parte de su paquete comercial, junto con la integración con Active Directory. Workspot lanzó parches de cifrado AES para VNC. Según TightVNC, [13] TightVNC no es seguro ya que los datos de las imágenes se transmiten sin cifrado. Para evitarlo, se debe canalizar a través de una conexión SSH (consulte a continuación).

VNC puede ser tunelizado a través de una conexión SSH o VPN , lo que agregaría una capa de seguridad adicional con un cifrado más fuerte. [ cita requerida ]

Una preocupación adicional en materia de seguridad en el uso de VNC es comprobar si la versión utilizada requiere autorización del propietario del ordenador remoto antes de que alguien tome el control de su dispositivo. Esto evitará la situación en la que el propietario del ordenador al que se ha accedido se dé cuenta de que hay alguien en control de su dispositivo sin previo aviso. [ ¿Investigación original? ]

Implementaciones

Xvnc es el servidor VNC de Unix, que se basa en un servidor X estándar . Para las aplicaciones, Xvnc aparece como un "servidor" X (es decir, muestra ventanas de cliente), y para los usuarios remotos de VNC es un servidor VNC. Las aplicaciones pueden mostrarse en Xvnc como si fuera una pantalla X normal, pero aparecerán en cualquier visor VNC conectado en lugar de en una pantalla física. [14] Alternativamente, se puede configurar una máquina (que puede ser una estación de trabajo o un servidor de red) con pantalla, teclado y mouse para que arranque y ejecute el servidor VNC como un servicio o demonio, luego se pueden quitar la pantalla, el teclado y el mouse y almacenar la máquina en una ubicación apartada.

Los usuarios suelen implementar VNC como un sistema de escritorio remoto multiplataforma. Por ejemplo, Apple Remote Desktop para Mac OS X (y " Back to My Mac " en las versiones 10.5 a 10.13) interopera con VNC y se conectará al escritorio actual de un usuario de Unix si se lo sirve con x11vnc , o a una sesión X11 separada si se lo sirve con TightVNC . Desde Unix, TightVNC se conectará a una sesión de Mac OS X servida por Apple Remote Desktop si la opción VNC está habilitada, o a un servidor VNC que se ejecute en Microsoft Windows. [15]

Otros programas o bibliotecas de software que implementan VNC incluyen Libvncserver , PocketVNC , Remmina , TigerVNC , TightVNC , VirtualGL y Vinagre .

Véase también

Referencias

  1. ^ Richardson, T.; Stafford-Fraser, Q.; Wood, KR; Hopper, A. (1998). "Computación en red virtual" (PDF) . IEEE Internet Computing . 2 : 33–38. CiteSeerX  10.1.1.17.5625 . doi :10.1109/4236.656066.
  2. ^ La familia VNC de aplicaciones de control remoto: una lista de variantes de VNC
  3. ^ "Preguntas frecuentes (FAQ) sobre VNC". 1999. Archivado desde el original el 15 de agosto de 2000.
  4. ^ Perfiles ejecutivos de RealVNC
  5. ^ Copyright y marcas comerciales de RealVNC. Consultado el 23 de febrero de 2018.
  6. ^ "Preguntas frecuentes".
  7. ^ "Configuración de UltraVnc".
  8. ^ "sin VNC".
  9. ^ "Repetidor VNC OpenWRT".
  10. ^ "Repetidor uVNC".
  11. ^ "VNC® Wayland Developer Preview". 8 de julio de 2014. Archivado desde el original el 14 de julio de 2014 . Consultado el 10 de julio de 2014 .
  12. ^ "Correo electrónico de vista previa para desarrolladores de RealVNC Wayland". freedesktop.org . 9 de julio de 2014.
  13. ^ ¿ Qué tan seguro es TightVNC? Preguntas frecuentes sobre TightVNC. TightVNC.com. Consultado el 23 de febrero de 2018.
  14. ^ AT&T Laboratories Cambridge (1999). «Servidor VNC basado en X». Computación en red virtual . Archivado desde el original el 19 de marzo de 2007. Consultado el 24 de marzo de 2007 .
  15. ^ "Servidor OnlineVNC para sistemas operativos Windows".

Enlaces externos