Ir al contenido

VNC

De Wikipedia, la enciclopedia libre

VNCson las siglas del inglés deVirtual Network Computing(Computación Virtual en Red).

VNCes un programa desoftware librebasado en una estructura cliente-servidor que permite observar las acciones del ordenador servidor remotamente a través de un ordenador cliente. VNC no impone restricciones en el sistema operativo del ordenador servidor con respecto al del cliente: es posible compartir la pantalla de una máquina con cualquier sistema operativo que admita VNC conectándose desde otro ordenador o dispositivo que disponga de un cliente VNC portado.

La versión original delVNCse desarrolló en elReino Unido,concretamente en los laboratorios AT&TOlivetti Research Laboratory,enCambridge. El programa era decódigo abierto,por lo que cualquiera podía modificarlo, y existen hoy en día varios programas para el mismo uso. Muchos derivados modernos de él sonsoftware librecon licenciaGPL.

En la enseñanza, VNC sirve para que el profesor comparta su pantalla con los alumnos, por ejemplo en un laboratorio. También puede usarse para que un técnico ayude a un usuario inexperto, el técnico ve remotamente el problema del que informa el usuario.

El programa servidor suele tener la opción de funcionar comoservidorHTTPpara mostrar la pantalla compartida en un navegador con java. En este caso el usuario remoto (cliente) no tiene que instalar un programa cliente de VNC sino que es descargado por el navegador automáticamente.

VNC es independiente de la plataforma, un cliente VNC de unsistema operativopueden conectarse a un servidor VNC del mismo sistema operativo o de cualquier otro. Hay clientes y servidores tanto para muchos sistemas operativos basados enGUIcomo parajava.Varios clientes pueden conectarse a un servidor VNC al mismo tiempo. Los usos populares de esta tecnología incluyen ayuda técnica remota y acceso a los archivos presentes en el ordenador del trabajo desde la computadora de la casa o viceversa.

Hay una serie de variantes de VNC,[1]​ que ofrecen, aparte de las funciones típicas de VNC, funciones particulares; por ejemplo, algunos están optimizados paraMicrosoft Windows;otros disponen de transferencia de archivos, (que no es propiamente parte de VNC), etc. Muchos son compatibles (sin funciones adicionales) con el propio VNC en el sentido de que un usuario de una variante de VNC puede conectar con un servidor de otra, mientras que otros se basan en elcódigo fuentede VNC, pero no son compatibles con el estándar VNC.

El término "VNC" y elRFBson marcas registradas deRealVNCLtd. en losEE. UU.y en otros países.[2]

VNC bajoLinux,enKDE.

Historia

[editar]

VNC fue creado en elOlivetti & Oracle Research Lab(ORL[3]​), que entonces era propiedad deOlivettiyOracle Corporation.En 1999AT&Tcompró el laboratorio, y en 2002 cerró los esfuerzos del laboratorio de investigación.

Los desarrolladores que trabajaron en VNC cuando aún estaba en el Laboratorio de Investigación de AT&T son:[4]

  • Tristan Richardson(inventor)
  • Andy Harter(director del proyecto)
  • Quentin Stafford-Fraser
  • James Weatherall
  • Andy Hopper

Tras el cierre de ORL en el año 2002, varios miembros del equipo de desarrollo (incluyendo Richardson, Harter, Weatherall y Hopper) crearonRealVNCcon el fin de seguir trabajando ensoftware libreysoftware comercialVNC bajo ese nombre.

Varias otras versiones de VNC se han desarrollado a partir delcódigo fuenteoriginalGPL.Talbifurcaciónno ha dado lugar a problemas de compatibilidad ya que elprotocolo RFBestá diseñado para ser extensible. Los clientes y servidores VNC negocian sus capacidades, al hacer apretón de manos (handshaking) para utilizar las opciones más apropiadas soportadas en ambos extremos.

Etimología

[editar]

El nombre de "Virtual Network Computer/Computing" se originó en el Olivetti Research Laboratory (ORL), en unthin clientllamado Videotile que también utilizaba elprotocolo RFBque estaba siendo desarrollado allí. Se trataba esencialmente de una pantalla LCD con una entrada de lápiz y una conexión rápidaATMa la red. En ese momento, unacomputadora de redse utiliza comúnmente como sinónimo de "cliente ligero". VNC es esencialmente una versión sólo software (es decir, virtual) de esta red informática.

Funcionamiento

[editar]

Un sistema de VNC se compone de un cliente, un servidor, y un protocolo de comunicación.

  • El VNCservidores el programa en el equipo que comparte su pantalla. El servidor de forma pasiva permite al cliente tomar el control de la misma.
  • El VNCcliente(o espectador) es el programa que vigila, controla e interactúa con el servidor. El cliente controla al servidor.
  • El VNCprotocolo(RFB) es muy simple, basado en una primitiva gráfica del servidor al cliente (( "Put a rectangle of pixel data at the specified X,Y position", en español "Póngase un rectángulo de datos depíxelen la posición X,Y especificada) ymensajes de eventosdesde el cliente al servidor.

En el método normal de operación, un visor (espectador) se conecta a un puerto en el servidor (puerto por defecto 5900). Alternativamente, un navegador puede conectarse al servidor (dependiendo de la implementación) (puerto por defecto 5800). Y un servidor puede conectarse a un espectador en "modo de escucha" en el puerto 5500. Una de las ventajas del modo de escucha es que el sitio del servidor no tiene que configurar sucortafuegospara permitir el acceso en el puerto 5900 (o 5800), la responsabilidad recae en el espectador, lo cual es útil si el sitio del servidor no tiene conocimientos informáticos, mientras que del visor usuario se espera que sea más sabio.

El servidor envía pequeños rectángulos de laframebufferpara el cliente. En su forma más simple, el protocolo VNC puede utilizar una gran cantidad deancho de banda,por lo que han sido diseñados varios métodos para reducir la sobrecarga de comunicación. Por ejemplo, hay variascodificaciones(métodos para determinar la manera más eficiente de transferencia de estos rectángulos). El protocolo VNC permite que el cliente y el servidor negocien la codificación que se utilizará. La forma más simple de codificación, que es apoyada por todos los clientes y servidores, es la codificacióncruda (raw),donde los datos se envían en píxeles en ordenscanlinede izquierda a derecha, y después de haberse transmitido la pantalla completa original, sólo se transfieren los rectángulos que cambien. Esta codificación funciona muy bien si sólo una pequeña porción de la pantalla cambia de un fotograma a otro (como un puntero del ratón se mueve en un escritorio, o el texto que se escriben en el cursor), pero las demandas de ancho de banda crecen radicalmente si una gran cantidad de píxeles cambia al mismo tiempo, como al desplazarse por una ventana o visualizar un vídeo a pantalla completa.

VNC por defecto usapuerto TCP5900+N,[5][6]​ dondeNes el número de la pantalla (por lo general: 0 para una pantalla física). Varias implementaciones también inician unservidorbásicoHTTPen el puerto 5800+Npara proporcionar un visor VNC comoapplet Java,que permite la conexión fácil a través de cualquiernavegador webconJavaactivado. Se puede utilizar distintas asignaciones de puerto siempre y cuando el cliente y el servidor estén configurados para ello.

El uso de VNC a través deInternetfunciona bien si el usuario tiene una conexión debanda anchaen ambos extremos. Sin embargo, puede requerir avanzadaNAT,cortafuegosasí como configuración delrouter,como el reenvío de puertos para el paso de la conexión entrante y saliente a través. Algunos usuarios pueden optar por utilizar al instante aplicaciones de redes privadas, tales comoRed Privada Virtual(VPN), programas tales comoHamachipara hacer el uso a través de Internet mucho más fácil. Por otra parte, una conexión VNC puede ser establecida como conexiónLANsi se utiliza VPN comoproxy.

Téngase en cuenta que la máquina donde se ejecuta el servidor VNC no necesita tener una pantalla física. EsXvnces el servidorUnixVNC server, que se basa en el estándarX server.Para aplicaciones Xvnc es un X "servidor" (es decir, muestra ventanas del cliente), y para los usuarios remotos de VNC es un servidor VNC. Las aplicaciones pueden mostrarse en Xvnc como si fueran una pantalla X normal, pero van a aparecer en cualquier conexión VNC espectadores más que en una pantalla física[7]​ También una máquina (que puede ser una estación de trabajo o un servidor de red) con pantalla, teclado y ratón se pueden configurar para arrancar y ejecutar el servidor VNC como un servicio odemonio,y entonces la pantalla, el teclado y el ratón pueden ser eliminados y la máquina almacenada en una ubicación fuera de la forma (out-of-the way).

Además, la pantalla que muestra VNC no es necesariamente la misma pantalla vista por un usuario en el servidor. En computadores Unix/Linux que soporten múltiples sesiones simultáneas X11, VNC puede ser configurado para servir a una sesión particular existente de X11, o para iniciar una propia. También es posible ejecutar múltiples sesiones de VNC desde el mismo ordenador. EnMicrosoft Windowsla sesión VNC servida (proporcionada) es siempre la sesión del usuario actual.

VNC es comúnmente usado como un sistema de escritoriomultiplataformaa distancia. Por ejemplo,Apple Remote DesktopdeMac OS X(y, más recientemente, "Back to My Mac"in 'Leopard' - Mac OS X 10.5) interactúa con VNC y se conectará al escritorio actual de un usuario de Linux, si se sirve conx11vnc,o a una sesión de X11 separada si se sirve conTightVNC.Desde Linux, TightVNC se conecta a una sesión deMac OS Xservida por Apple Remote Desktop, si la opción VNC está activada, o en un servidor VNC que se ejecute enMicrosoft Windows.

Uso

[editar]

Primero tenemos que compartir una pantalla gráfica, que puede ser la que se está usando ahora o una pantalla virtual. En Windows solo puede compartirse la pantalla actual, no puede crearse una pantalla virtual. El sistema X gráfico que usan Gnu/Linux y Unix sí permite crear una o más pantallas virtuales.

El primer paso es crear y compartir una pantalla virtual:

vncserver

El programa corre y muestra en pantalla el nombre de la máquina y el número de la pantalla que se comparte comonombre-máquina:número-pantalla.Por ejemplo si reporta: alps.dominio.org:2, la máquina es alps.dominio.org y el número de pantalla es 2.

Para compartir la pantalla actual en Gnu/Linux o Unix:

x0rfbserver

Nota: x0rfbserver no se encuentra en desarrollo actualmente (el proyecto ha sido abandonado) usar en su reemplazo:

x11vnc

O también, en el entorno KDE existe esta opción:

krfb

Ambos programas servidores muestran una ventana gráfica que deberá permanecer corriendo mientras se comparte la pantalla.

En el segundo paso, el usuario remoto corre un cliente de VNC:

vncviewernombre-máquina:número-pantalla

Según el ejemplo de arriba, sería:

vncviewer alps.dominio.org:2

En un ambiente de enseñanza y con pantalla virtual, también el instructor deberá correr un cliente de VNC para poder ver la misma pantalla que los alumnos. Si se desea que los alumnos vean pero sin controlar la pantalla virtual, deberán usar:

vncviewer-viewonlynombre-máquina:número-pantalla

Disponibilidad

[editar]
  • GNU/Linux:Los programas cliente y servidor generalmente están disponibles como paquetesRPMoDebian.En Debian y derivados comoUbuntuel comando
apt-cache search vnc

y enRed Haty derivados comoFedorael comando

yum search vnc

Nota: DNF (Dandified yum) es el sucesor de yum. Fue introducido en Fedora 18 y es el gestor de paquetes por defecto desde Fedora 22 (así como en RHEL8 y CentOS8), por lo que para usuarios de estas versiones y posteriores se recomienda el comando[8]

dnf search vnc

mostrará una lista de los paquetes disponibles relacionados con VNC, como servidores: vncserver, tightvncserver, rfb, krfb; y clientes: vncviewer, krdc.

El cliente vncviewer suele instalarse en forma predeterminada en las distribuciones orientadas a uso de escritorio. Si se desea el programa servidor o alguna otra variante de VNC, pueden instalarse ya sea de los CD o descargando de unrepositoriodepaquetesde ladistribución.

  • Windows:Se pueden descargar el cliente o el servidor de los enlaces disponibles abajo enEnlaces externos.

Seguridad

[editar]

Por defecto, VNC no es un protocolo seguro. Lascontraseñano se envían en texto plano (como entelnet), pero el intento de romper o agrietar (cracking) la contraseña puede tener éxito si tanto la clave decifradoy la contraseña cifrada escapturadadesde una red. Por esta razón 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 de más de 8 caracteres, los caracteres sobrantes se retiran y la cadena truncada es comparada con la contraseña.

Sin embargo, VNC puede ser tunelado a través de una conexiónSSHoVPNque añada una capa extra de seguridad con un cifrado más seguro. Están disponibles Clientes SSH para todas las plataformas principales (y muchas plataformas más pequeñas también); se pueden crear túneles SSH a partir de clientesUNIX,Microsoft Windows,Macintosh(incluyendoMac OS XySystem 7en adelante) - y muchos otros. Hay aplicacionesfreewareque crean al instante túnelesVPNentre ordenadores.

UltraVNCsoporta el uso de unplugindecódigo abiertoque cifra toda la sesión de VNC incluyendo autenticación de contraseña y transferencia de datos. También permite a la autenticación realizarse sobre la base de cuentas de usuarioNTLMyActive Directory.Sin embargo, el uso de plugins de cifrado como lo hacen incompatible con otros programas VNC.RealVNCofrece un alto nivel de cifrado como parte de su paquete comercial.Workspotha publicado parches para VNC decifrado AES.

Limitaciones

[editar]

Unicode no es compatible con las versiones 3.x VNC e inferiores por lo que es imposible transferir el texto del portapapeles fuera del juego de caracteresLatin-1.

El protocolo VNC está basado en píxeles. Aunque esto lleva a una gran flexibilidad (es decir, se puede mostrar cualquier tipo de escritorio), a menudo es menos eficiente que las soluciones que tienen una mejor comprensión de la disposición de fondo gráfico comoX11o WindowsRemote Desktop Protocol.Estos protocolos envían primitivas gráficas o comandos de alto nivel en una forma más simple (por ejemplo, "open window", "abrir ventana" ), mientras que RFB sólo envía los datos de píxeles en bruto (raw pixel data).

Referencias

[editar]
  1. Familia VNC de aplicaciones de control remoto: una lista de las variantes de VNC
  2. http://www.realvnc.com/trademarks.html
  3. «VNC Frequently Asked Questions (FAQ)».1999. Archivado desdeel originalel 15 de agosto de 2000.
  4. «RealVNC Executive Profiles».Archivado desdeel originalel 15 de mayo de 2016.Consultado el 25 de junio de 2011.
  5. «RealVNC - Frequently asked questions».
  6. «UltraVnc Configuration».Archivado desdeel originalel 3 de julio de 2011.Consultado el 26 de junio de 2011.
  7. AT&T Laboratories Cambridge (1999).«X-based VNC server».Virtual Network Computing.Archivado desdeel originalel 19 de marzo de 2007.Consultado el 24 de marzo de 2007.
  8. «DNF - Fedora Project Wiki».fedoraproject.org.Consultado el 26 de marzo de 2020.

Véase también

[editar]

Variantes de VNC:

Enlaces externos

[editar]