Cómo funciona Terminal Server para Windows Server 2003

Un servidor de terminal es básicamente el mismo que el sistema operativo Windows Server normal, excepto que en entornos de servidor de Terminal, se han agregado o modificado componentes clave para proporcionar soporte para múltiples usuarios simultáneos.

Microsoft Windows siempre ha sido un sistema operativo «multiusuario» en el sentido de que varios usuarios podían conectarse a un solo servidor en un momento dado. Sin embargo, estos usuarios estaban conectados a servicios de archivos o servicios de impresora en los servidores. Ejecutaban sus interfaces locales de Windows en sus equipos locales, y el servidor solo admitía una interfaz de escritorio a través del teclado, el ratón y el monitor locales. La principal diferencia con Terminal Server es que varios usuarios pueden ejecutar sus propias sesiones de escritorio de Windows en el servidor. Por lo tanto, Terminal Server es «multiusuario» en el sentido de que admite múltiples interfaces de escritorio. A algunas personas les gusta pensar en esto como un entorno de» control remoto», excepto que el Servidor de Terminal puede acomodar a muchos usuarios» control remoto » al mismo tiempo, con cada usuario haciendo algo completamente diferente.

Para que Terminal Server admitiera varias sesiones de usuario, se tuvieron que realizar algunos cambios desde el software habitual de Microsoft Windows Server. Hay dos diferencias fundamentales entre un servidor Windows normal y uno con Terminal Server instalado:

  • Cuando Terminal Server se instala en un servidor Windows 2003, ciertos componentes principales del sistema operativo Windows se modifican para admitir múltiples interfaces de usuario simultáneas. Por ejemplo, el administrador de memoria virtual y el administrador de objetos se modifican para admitir múltiples interfaces de escritorio simultáneas sin confundirse. Estas son modificaciones importantes, que requieren que reinicie el sistema después de instalar Terminal Server.
  • Se agregan nuevos servicios y componentes cuando se instala Terminal Server que permiten que el servidor admita varias sesiones de usuario. El más importante de ellos es el servicio «Terminal Server». Este servicio, que se ejecuta en el interior del servidor, es responsable de interconectar las múltiples sesiones de usuario con el sistema operativo. También es responsable de funciones como crear sesiones, recibir usuarios y finalizar sesiones.

Componentes del servidor de terminales

Aunque parece que el servidor de terminales es básicamente un sistema pcAnywhere glorificado, en realidad es un sistema complejo compuesto por varios componentes, subsistemas e interfaces diferentes. En la Figura 2.1 se muestra un diagrama más completo de los componentes de Terminal Server. Refiérase a él mientras lee las siguientes secciones que describen cada componente que compone Windows 2003 Terminal Server.

la Figura 2.1: Componentes de Terminal Server 2003

El núcleo de Windows Server 2003

Recordará que un componente clave de cualquier entorno informático basado en servidor es un sistema operativo multiusuario. En Windows Server 2003, este sistema es controlado por el núcleo.

Windows Server 2003 necesita una forma de distanciar los componentes críticos del sistema operativo de todos los usuarios locos. Para lograr esto, los procesos de Windows operan en uno de dos modos: modo usuario o modo kernel. Al recordar su formación en Windows NT, recordará que una aplicación en modo usuario no puede escribir directamente en la memoria del sistema operativo. En su lugar, tiene acceso completo a su propio espacio de memoria de 4 GB. Un componente del sistema operativo llamado administrador de memoria virtual (que a su vez se ejecuta en modo kernel) controla todo esto y escribe en la memoria del sistema en nombre de la aplicación en modo usuario.

En entornos de servidor de terminales, la separación de las aplicaciones de modo de usuario y modo de núcleo permite que el sistema separe y aísle a los usuarios. Un bloqueo de la aplicación de un usuario no derribará todo el sistema. (Por supuesto, está pensando que un bloqueo de aplicación puede derribar un sistema, sin embargo, que generalmente está vinculado a los controladores de dispositivo que se ejecutan en modo kernel.)

En entornos Windows» estándar » (es decir, sin Servidor de terminal) donde solo un usuario inicia sesión de forma interactiva, todos los procesos en modo kernel viven juntos en un área de memoria y espacio de nombres. Sin embargo, en entornos multiusuario como Terminal Server, este uso compartido no funcionará, ya que las solicitudes de sesiones de diferentes usuarios podrían entrar en conflicto entre sí. En consecuencia, el núcleo de un Servidor de Terminal es compatible con varias sesiones; mantiene la sesión de cada usuario separada con procesos y memoria aislados. Windows Server 2003 realiza algunos cambios en el núcleo cuando se instala el componente Terminal Server para lograr esto.

En primer lugar, el servidor coloca parte del espacio de direcciones de memoria del núcleo en memoria virtual. Esto permite que lo que serían solicitudes conflictivas en un entorno de un solo usuario se procesen correctamente en el entorno multiusuario, y que múltiples instancias de controladores de dispositivos en modo kernel se carguen y usen por varios usuarios (la razón por la que un usuario técnicamente puede bloquear todo el sistema).

Algunos procesos del sistema no son específicos de la sesión, lo que significa que todos los usuarios de todas las sesiones necesitarán acceso a ellos. Estos procesos se almacenan en un área de memoria única (global) compartida por todos los usuarios.

Un efecto secundario de compartir procesos como este en un entorno de servidor de terminal es que a veces se encontrará con procesos que no son «sensibles a la sesión».»Un resultado potencial (y un poco divertido) pueden ser mensajes de error que se muestran en la consola del servidor desde aplicaciones que se ejecutan dentro de la sesión de un usuario. Dado que generalmente no hay nadie en la sala de servidores que confirme el mensaje, existe el potencial de evitar que la aplicación de un usuario continúe.

El Servicio de Servicios de Terminal

«El Servicio de Servicios de Terminal «se refiere a un servicio regular de Windows (Inicio | Herramientas | Servicios Administrativos) llamado» Servicios de Terminal.»En el mundo real, las personas generalmente se refieren a él como el» Servicio de terminal «y usan el término» Servidor de terminal » cuando se refieren a un servidor de Windows que ejecuta el Servicio de Terminal.

Si el núcleo multiusuario es la base de la informática basada en servidor en Windows Server 2003, el Servicio de terminal es la piedra angular. Este servicio (cargado a través de termserv.dll) se carga justo después de que el núcleo se conecta. Después de cargar la consola del servidor (controladores de teclado, vídeo y ratón), Terminal Service inicia el subsistema de Administrador de sesiones (sms).exe) responsable de administrar y rastrear todas las sesiones de usuario en el servidor.

Sesiones de Terminal Server

Se crea una nueva sesión cada vez que un usuario inicia sesión en Terminal Server. Una sesión consiste esencialmente en un escritorio virtual desde el que el usuario puede ejecutar aplicaciones y con el que puede interactuar al igual que con una estación de trabajo. Una sesión de servidor no debe confundirse con la consola del servidor, ya que una sesión no es un control remoto de la consola, sino un nuevo escritorio separado de la consola.

Cada vez que un usuario se conecta a un servidor de Terminal y crea este «escritorio virtual», se crea un número de ID de sesión único para diferenciar al usuario (y, por lo tanto, a los procesos del usuario) de todas las demás sesiones y usuarios. Los ID de sesión también permiten que el servidor mantenga la memoria separada para la sesión de cada usuario. Cuando un usuario cierra sesión en un cliente de Terminal Services, se elimina la sesión que se estaba utilizando y se eliminan los procesos y la memoria que se iniciaron y utilizaron en esa sesión. Cada Terminal Server realiza un seguimiento de sus propios ID de sesión y se encarga de la tarea de emitirlos, rastrearlos y eliminarlos.

Dado que las sesiones del servidor son «virtuales» (y la memoria y los procesos se mantienen separados entre sesiones), un bloqueo o bloqueo de la aplicación en una sesión no debe afectar a ninguna otra sesión de usuario, incluso si otros usuarios están utilizando la misma aplicación.

Sin embargo, la frase clave aquí es «no debería» afectar a otros usuarios. Aunque las sesiones de usuario son independientes en un servidor, siguen compartiendo recursos de servidor y ciertos segmentos de código. Si un usuario invoca un proceso que hace que el servidor aparezca en pantalla azul, esto obviamente tendrá un efecto en los otros usuarios. Por otro lado, las ocurrencias simples, como una aplicación colgada en una solicitud de tiempo de espera o el bloqueo de Microsoft Word cuando un usuario abre un documento dañado, no serán vistas por los otros usuarios (dentro de sus propias sesiones) en el sistema.

Estados de sesión

Dado que una sesión es realmente el escritorio de un usuario, hay ocasiones en que una sesión puede estar en varios estados diferentes, al igual que una estación de trabajo normal. Por ejemplo, si un usuario se aleja de su estación de trabajo durante un período de tiempo, la estación de trabajo no se apaga. Más bien, está simplemente inactivo, esperando la entrada del usuario. Las sesiones de Terminal server se comportan de la misma manera y pueden estar en uno de varios estados diferentes dependiendo de la actividad (o inactividad) del usuario, la conectividad entre el cliente y el servidor y la configuración del tiempo de espera de la sesión.

Figura 2.2: Cada Terminal Server mantiene muchas sesiones de usuario separadas

Todas las sesiones de usuario en un Terminal Server deben estar en uno de los seis estados siguientes:

  • Active es un usuario vivo y activo. El usuario está interactuando con la sesión de Terminal Server y no ha tenido un período de inactividad o una desconexión de red del servidor. Este es el estado «normal» de una sesión.
  • Idle es el estado en el que entra una sesión cuando no hay entrada del usuario durante un período de tiempo especificado.
  • Las sesiones desconectadas se producen cuando se ejecutan los procesos y programas de una sesión «en vivo» pero no hay un cliente RDC conectado. (Si omitió el primer capítulo, «Cliente RDC» es el nuevo nombre del Cliente RDP.) La causa común es una desconexión de la red o cuando un usuario hace clic en la» X » en la esquina superior derecha de su software cliente RDC. Un usuario puede volver a conectarse a su sesión desconectada para devolverla a un estado «activo» (y continuar con su trabajo justo donde lo dejó). Piense en una sesión desconectada como en una estación de trabajo bloqueada, excepto que el usuario puede «desbloquear» su estación de trabajo desde cualquier computadora del edificio.
  • Las sesiones conectadas están en un estado en el que un dispositivo cliente está conectado a una sesión de servidor, pero ningún usuario ha iniciado sesión, al igual que el indicador CTRL+ALT+SUPR en una estación de trabajo.
  • Down es un estado temporal en el que se termina una sesión y se matan los procesos dentro de la sesión. Abajo es el estado final de una sesión antes de que termine.
  • Listen es un estado que solo se ve en los puertos de escucha que están listos para aceptar conexiones entrantes. Este estado no se aplica a las sesiones ordinarias. Más bien, se aplica a los procesos que se ejecutan en el servidor que esperan (escuchan) nuevas solicitudes de conexión de sesión.

En la mayoría de los entornos, los administradores configuran sesiones con varios tiempos de espera. Puede limitar la cantidad de tiempo que se puede abrir una sola sesión, o puede convertir automáticamente una sesión inactiva en una sesión desconectada. Los tiempos de espera ayudan a limitar la cantidad de tiempo que el servidor pasa ejecutando procesos para los usuarios que realmente no están trabajando en el servidor. Cubriremos las técnicas y estrategias exactas para configurarlas más adelante en este libro.

Puertos de conexión y receptores

Cada sesión RDP de usuario se conecta al Servidor de terminales a través de un puerto de conexión. Un puerto de conexión (comúnmente conocido como «conexión») es un puerto virtual en el servidor asociado con una combinación de tarjeta de red y protocolo específica.

Se crea automáticamente un puerto de conexión de Terminal Server cuando se instala el componente de Terminal Server. De forma predeterminada, permite a cualquier usuario del grupo «usuarios de escritorio remoto» conectarse a sesiones de Terminal Server en el servidor a través de cualquier tarjeta de red. Sin embargo, a pesar de que el puerto de conexión predeterminado funciona con cualquier tarjeta de red con TCP/IP instalado, los puertos de conexión de Terminal Server son realmente específicos de la tarjeta de red. Puede configurar un servidor con varias tarjetas de red para que tenga varios puertos de conexión de Terminal Server, uno para cada tarjeta. De hecho, cada conexión puede tener propiedades y permisos completamente diferentes.

Figura 2.3: Un servidor de terminales con múltiples puertos de conexión

Las conexiones de servidor de terminales y sus oyentes asociados se pueden configurar en dos lugares. La primera es a través del complemento MMC de Configuración de servicios de Terminal (TSC). Puede usar el TSC para configurar opciones para conexiones de servidor de terminal basadas en RDP, como configuraciones, permisos y sobre qué tarjeta de red es válida una conexión. La segunda forma de configurar las conexiones de Terminal Server es a través de un objeto de directiva de grupo (GPO) de Active Directory dentro de un dominio de Windows 2003. Esta funcionalidad le permite asignar conexiones para varios servidores contenidos con una unidad organizativa en Active Directory.

Oyentes

Cada puerto de conexión de Terminal Server tiene un subcomponente llamado «oyente».»El componente de escucha «escucha» en una combinación de tarjeta de red y protocolo específica para la que está configurado el puerto de conexión. Cuando un usuario desea establecer una nueva sesión en el servidor, utiliza su software cliente RDC para ponerse en contacto con el servidor. El receptor del servidor recoge la solicitud del cliente y la reenvía al administrador de sesiones. El oyente vuelve a escuchar para obtener más solicitudes de conexión.

Canales virtuales

Como comentamos anteriormente, el protocolo RDP de Microsoft que se ejecuta en TCP / IP es el protocolo real que conecta a los usuarios a las sesiones del servidor. También mencionamos que este protocolo puede admitir más que solo escritorios virtuales puros. RDP permite que el audio de la sesión remota desde el servidor se canalice a los altavoces del dispositivo cliente. También permite que los dispositivos conectados a los puertos serie del cliente aparezcan como si estuvieran conectados al servidor. Estos «extras» están disponibles a través de los canales virtuales de RDP. Un canal virtual es simplemente un mecanismo para mover datos de un lado a otro entre una sesión de Terminal Server y un cliente. De forma predeterminada, el protocolo RDP de Terminal Server 2003 contiene varios canales virtuales.

  • Audio: Los eventos de sonido generados en la sesión del servidor se redirigen a través del protocolo RDP al dispositivo cliente RDC, donde se reproducen en los altavoces del cliente.Unidades de cliente
  • : Las unidades de disco locales del dispositivo cliente están disponibles para el servidor, de modo que los usuarios pueden acceder a las unidades de servidor y a las unidades de dispositivo de cliente local en sus sesiones remotas.Impresoras
  • : Las impresoras disponibles para el dispositivo cliente antes de iniciar una sesión en un Terminal Server se ponen a disposición de los usuarios desde sus sesiones de servidor. A continuación, los usuarios pueden imprimir en sus impresoras Windows estándar, incluidas las impresoras conectadas directamente a sus dispositivos cliente.
  • Puertos serie: El canal virtual de puerto serie permite acceder a los dispositivos conectados al puerto serie de un dispositivo cliente a través de sus sesiones de Servidor de Terminal remoto.
  • Portapapeles de Windows: Para integrar aplicaciones locales con sesiones de Servidor de Terminal remoto, el canal virtual del portapapeles de Windows sincroniza el contenido del portapapeles de servidor de Terminal remoto con el contenido del portapapeles del dispositivo cliente. Los usuarios pueden cortar y pegar sin problemas entre aplicaciones locales y remotas.

Si los canales virtuales predeterminados no satisfacen sus necesidades, MSDN y los SDK de Windows Server 2003 contienen información sobre cómo escribir sus propios canales virtuales personalizados. Un canal virtual es una combinación de dos componentes: un componente del lado del cliente y un componente del lado del servidor. Ambos pueden enviar y recibir datos a través del canal virtual, lo que permite la comunicación de una o dos vías. Los canales virtuales también pueden ser independientes de RDP, lo que significa que puede personalizarse a su entorno sin actualizar o cambiar el software de cliente o servidor real.

¿Por qué todo el enfoque en los canales virtuales? Aunque este no es un libro para desarrolladores y probablemente nunca desarrollarás tu propio canal virtual, es fundamental que entiendas cómo funcionan. Casi todos los productos adicionales de terceros para Terminal Server utilizan canales virtuales. Comprender cómo funcionan los canales virtuales le ayudará a solucionar los problemas de los productos de terceros que, sin duda, encontrará en su carrera en Terminal Server.

Dicho esto, echemos un vistazo final a la arquitectura de un canal virtual. Véase la figura 2.4.

Figura 2.4: Arquitectura de canal virtual de Terminal Server 2003

El componente de canal virtual del lado del servidor suele ser un ejecutable que se ejecuta en Terminal Server. Este componente debe ser un componente en modo de usuario, ya que el servidor utiliza el ID de sesión para determinar a qué sesión del lado del cliente debe transmitir y recibir datos.

El componente de canal virtual del lado del cliente suele ser una DLL proporcionada por Microsoft, el proveedor de software de terceros, o escrita a medida por sus desarrolladores. La DLL debe cargarse en el equipo cliente cuando se inicie el programa cliente RDC y se inicie la conexión con el servidor. En la mayoría de los casos, esto se realiza mediante scripts o mediante programación a nivel de cliente.

Cómo encajan todos estos Componentes

Ahora que comprende cada uno de los diversos componentes de Terminal Server, veamos cómo encajan todos juntos. Siga el proceso que tiene lugar a medida que se realiza una conexión de cliente, en referencia a la Figura 2.5.

Figura 2.5: Se establece una nueva sesión

  1. Antes de que ocurra algo, los oyentes del servidor de Terminal vigilan ciertas combinaciones de tarjetas de red, direcciones IP y puertos TCP para las solicitudes entrantes de inicio de sesiones.
  2. Un usuario decide usar una aplicación remota, por lo que inicia su cliente RDC y solicita una conexión a «server1».»Su cliente de RDC comprueba qué DLL de canal virtual están instalados.
  3. En este entorno, el nombre «server1» se refiere a la dirección IP 192.168.14.42 (que pasa a ser NIC #1 en este servidor). El cliente RDC del usuario envía una solicitud de conexión de sesión a 192.168.14.42.
  4. El receptor del servidor recoge la solicitud y la entrega al administrador de sesiones. A medida que el administrador de sesiones se hace cargo, el oyente reanuda la escucha para más sesiones.
  5. El servidor negocia con el cliente solicitante por su nivel de cifrado y capacidades de canal virtual.
  6. El usuario se autentica en el dominio y se comprueban sus derechos de acceso a la conexión.
  7. Se verifican las licencias de Microsoft. Primero se verifica la licencia de acceso de cliente de servidor y, a continuación, se verifica la licencia de acceso de cliente de Terminal Server. (La concesión de licencias se detalla en el capítulo 4.)
  8. En este punto, la sesión de usuario está lista para comenzar. Se ejecutan los scripts de inicio de sesión y se carga el escritorio.

En Windows Server 2003, un puerto de escucha está asociado a una » conexión.»De hecho, los dos términos son casi intercambiables. Configure las propiedades de una conexión y el puerto de escucha de la conexión se modificará adecuadamente.

Ahora que hemos cubierto todos los componentes que componen un servidor de terminal de Windows 2003, diríjase a los requisitos.

Deja una respuesta

Tu dirección de correo electrónico no será publicada.