x11vnc es un programa de servidor Virtual Network Computing (VNC). Permite el acceso remoto desde un cliente remoto a una computadora que aloja una sesión de X Window y el software x11vnc, sondeando continuamente [4] el frame buffer del servidor X para cambios. Esto permite al usuario controlar su escritorio X11 ( KDE , GNOME , Xfce , etc.) desde una computadora remota, ya sea en la propia red del usuario, o desde Internet como si el usuario estuviera sentado frente a ella. x11vnc también puede sondear dispositivos de búfer de cuadros que no sean X11, como cámaras web o tarjetas sintonizadoras de TV , iPAQ, Neuros OSD , la consola de Linux y la pantalla de gráficos de Mac OS X. x11vnc es parte del proyecto LibVNCServer [1] y es un software gratuito disponible bajo la Licencia Pública General GNU . x11vnc fue escrito por Karl Runge.
Autor (es) original (es) | Karl Runge |
---|---|
Desarrollador (es) | equipo de libvnc [1] [2] |
Versión inicial | 2001 |
Lanzamiento estable | 0.9.16 / 5 de enero de 2019 [3] |
Repositorio | github |
Plataforma | Unix, Linux |
Disponible en | inglés |
Tipo | Administración remota |
Licencia | Licencia pública general GNU |
Sitio web | libvncserver |
x11vnc no crea una pantalla adicional (o escritorio X) para control remoto. En su lugar, utiliza la pantalla X11 existente que se muestra en el monitor de una computadora similar a Unix en tiempo real, a diferencia de otras alternativas de Linux como TightVNC Server. Sin embargo, es posible usar Xvnc o Xvfb para crear una pantalla adicional 'virtual' y hacer que x11vnc se conecte a ella, lo que permite que X-11 acceda a servidores sin cabeza . [5]
x11vnc tiene características de seguridad que le permiten al usuario establecer una contraseña de acceso o usar nombres de usuario y contraseñas Unix . También tiene opciones de conexión a través de un enlace SSL seguro . [4] Se proporciona un subprograma de visor SSL Java VNC que permite conexiones seguras desde un navegador web . También se admite el tipo de seguridad VeNCrypt SSL / TLS VNC.
Muchas de las extensiones de UltraVNC a VNC son compatibles con x11vnc, incluida la transferencia de archivos. [6]
Algoritmo de sondeo
x11vnc mantiene una copia del búfer de tramas del servidor X en la RAM . La interfaz de programación X11 XShmGetImage se utiliza para recuperar los datos de píxeles del búfer de trama . x11vnc compara el búfer de fotogramas del servidor X con su copia para ver qué regiones de píxeles han cambiado (y, por lo tanto, deben enviarse a los visores de VNC). Leer datos de píxeles del búfer de fotogramas físico puede ser mucho más lento que escribir en él (porque los dispositivos gráficos no están optimizados para la lectura), por lo que una verificación secuencial píxel a píxel a menudo sería demasiado lenta.
Para mejorar la situación, x11vnc lee filas completas de píxeles separados por 32 píxeles verticalmente. Una vez que llega a la parte inferior de la pantalla, comienza de nuevo cerca de la parte superior con un desplazamiento ligeramente diferente. Después de 32 pases como este ha cubierto toda la pantalla. Este método permite que x11vnc detecte cambios en la pantalla aproximadamente 32 veces más rápido que una verificación secuencial (a menos que los cambios sean muy pequeños, digamos que solo 1 píxel de alto). Si la extensión X11 DAMAGE está presente, x11vnc la usa para proporcionar pistas donde para enfocar su sondeo, encontrando así cambios aún más rápidamente y también reduciendo la carga del sistema.
Inyección de entrada
Cuando x11vnc recibe eventos de entrada del usuario (pulsaciones de teclas, movimiento del puntero y clics del botón del puntero) de un visor VNC, debe inyectarlos sintéticamente en el servidor X. Las interfaces de programación X11 XTestFakeKeyEvent , XTestFakeMotionEvent y XTestFakeButtonEvent de la extensión XTEST se utilizan para lograr esto.
Para dispositivos no administrados por X11 (como la pantalla gráfica de Mac OS X ) se deben utilizar diferentes interfaces de programación. x11vnc también proporciona una interfaz donde el usuario puede suministrar su propio programa de inyección de entrada.
Usos interesantes
A menudo, los sistemas para propósitos especiales se construyen utilizando el sistema X Window para administrar la visualización gráfica. x11vnc se puede utilizar para exportar la pantalla del sistema para acceso VNC remoto. Esto permite la supervisión, el control y la resolución de problemas remotos del sistema de propósito especial. A veces, esto ahorra el envío de un técnico a un sitio remoto o permite a los usuarios controlar el equipo desde su estación de trabajo o computadora portátil. Se sabe que x11vnc se ha ejecutado en los siguientes tipos de sistemas: microscopio electrónico , sistema de análisis de imágenes de resonancia magnética y radiología , consolas de gestión de plantas de energía y plataformas petroleras , control de distribución de materiales, pruebas de sistemas de autodefensa de barcos, sistemas de RMN , microscopio de análisis de obleas de silicio y Control de iluminación de teatros y conciertos. x11vnc se utiliza para exportar las pantallas X11 en sistemas integrados como PDA basados en Linux y PC de cine en casa .
Si x11vnc no se puede ejecutar en el sistema de propósito especial, a veces se puede ejecutar en una computadora cercana y sondear el búfer de tramas del servidor X a través de la red. Así es como se puede acceder a los dispositivos terminales X patentados a través de x11vnc.
Emulación xvnc
Aunque el uso principal de x11vnc es para servidores X asociados con hardware de gráficos físicos, también se puede conectar a servidores X virtuales (cuyos búferes de tramas existen solo en RAM) como Xvfb o una sesión de Sun Ray . x11vnc tiene opciones ( -create y -svc ) para iniciar Xvfb automáticamente, posiblemente como el usuario de Unix que inició sesión. La respuesta interactiva de x11vnc y Xvfb puede no ser tan rápida como Xvnc , sin embargo, este modo habilita funciones que Xvnc no tiene, como cifrado SSL y nombres de usuario y contraseñas Unix.
Almacenamiento en caché del lado del cliente
El protocolo RFB (VNC) es extraño en comparación con otros protocolos de gráficos de red, como X11 y RDP , en el sentido de que no existe ninguna disposición para el almacenamiento en caché de datos de píxeles del lado del espectador. Si bien esto hace que el cliente sea más fácil de implementar, hay un precio que pagar en términos de respuesta interactiva. Por ejemplo, cada reexposición de una ventana o región de fondo debe tener sus datos de píxeles (comprimidos) reenviados a través de la red. Este efecto es particularmente notable para ventanas con regiones complejas o fotográficas (como una ventana de navegador web) que se iconifica, desiconifica o vuelve a exponer con frecuencia.
x11vnc tiene una implementación experimental y algo de fuerza bruta del almacenamiento en caché del lado del cliente. Se habilita mediante la opción -ncache . Al crear el búfer de fotogramas RFB en este modo, x11vnc asigna una región de scratch muy grande debajo de la parte superior utilizada para los datos de píxeles reales (en pantalla). A continuación, x11vnc puede usar el comando RFB CopyRect para indicar al espectador que mueva rectángulos de datos de píxeles dentro y fuera de la región cero. Estos movimientos se realizan localmente en el lado del espectador. De esta manera, x11vnc puede administrar la región de scratch para almacenar y recuperar datos de píxeles sin tener que reenviarlos a través de la red.
El modo de almacenamiento en caché del lado del cliente de x11vnc puede proporcionar notables mejoras de respuesta interactiva para muchas actividades.
Dado que utiliza el comando RFB CopyRect existente, el esquema funcionará con cualquier visor VNC (es decir, sin modificar). Sin embargo, existen algunas desventajas. La primera es que consume una gran cantidad de memoria. Para un buen rendimiento, se debe utilizar una zona de scratch de 10 a 20 veces más grande que la pantalla real. Entonces, en lugar de usar 5 MB para un búfer de cuadros de color verdadero de 1280x1024, se usarán más de 100 MB (tanto en el lado del cliente como en el del servidor de VNC). Esto no es un gran problema en las computadoras modernas, pero no sería posible en una baja dispositivo de memoria. En segundo lugar, el visor de VNC puede tratar la región cero de manera que confunda al usuario, por ejemplo, mostrándola al usuario o desplazándose automáticamente hacia abajo si el mouse llega a la parte inferior de la pantalla real. El visor de Unix VNC en SSVNC oculta automáticamente la región de scratch. Por último, la heurística de x11vnc para el almacenamiento en caché y la reutilización de los datos de píxeles de la ventana no es perfecta y puede provocar un parpadeo inesperado del contenido de una ventana y otros efectos no deseados.
Ver también
- KRDC
- X11
Referencias
- ^ a b "archivo README x11vnc" . 4 de julio de 2018 . Consultado el 9 de agosto de 2018 , a través de GitHub .
- ^ Henderson, Stuart (9 de agosto de 2018). "CVS: cvs.openbsd.org: puertos" . openbsd-ports-cvs (lista de correo) . Consultado el 9 de agosto de 2018 .
- ^ "Lanzamientos - LibVNC / x11vnc" . Consultado el 14 de febrero de 2020 , a través de GitHub .
- ^ a b "x11vnc (1) - Página de manual de Linux" . Consultado el 1 de mayo de 2020 .
- ^ Consulte las páginas de manual de x11vnc, Xvnc y elartículo de Xvfb .
- ^ "x11vnc: un servidor VNC para pantallas X reales" . Consultado el 1 de mayo de 2020 .
enlaces externos
- x11vnc en GitHub
- x11vnc: un servidor VNC para pantallas X reales (página de inicio del proyecto anterior)