Um Servidor de Terminal é basicamente o mesmo que regular de sistema operacional Windows Server, exceto que, em ambientes de Servidor de Terminais, os principais componentes foram adicionados ou modificados para fornecer suporte para vários usuários simultâneos.O Microsoft Windows sempre foi um sistema operacional “multiusuário” no sentido de que vários usuários poderiam ser conectados a um único servidor a qualquer momento. No entanto, esses usuários estavam conectados a serviços de arquivos ou serviços de Impressora nos servidores. Eles executaram suas interfaces locais do Windows em seus computadores locais, e o servidor suportava apenas uma interface de desktop por meio do teclado, mouse e monitor local. A principal diferença com o Terminal Server é que vários usuários podem executar suas próprias sessões de desktop do Windows no servidor. Portanto, o Terminal Server é “multiusuário” no sentido de que suporta várias interfaces de desktop. Algumas pessoas gostam de pensar nisso como um ambiente de” controle remoto”, exceto que o servidor de Terminal pode acomodar muitos usuários” controle remoto ” ao mesmo tempo, com cada usuário fazendo algo completamente diferente.
para que o Terminal Server suportasse várias sessões de usuário, algumas alterações tiveram que ser feitas a partir do software regular do Microsoft Windows server. Há duas diferenças fundamentais entre um regular Windows Server e um com o Terminal Server instalado:
- Quando o Terminal Server é instalado em um servidor Windows 2003, alguns dos principais componentes do sistema operacional Windows são modificadas para suportar múltiplas, simultâneas interfaces de usuário. Por exemplo, o Gerenciador de memória virtual e o Gerenciador de objetos são modificados para suportar várias interfaces de desktop simultâneas sem ficar confuso. Estas são as principais modificações, exigindo que você reinicie o sistema após a instalação do Terminal Server.
- novos serviços e componentes são adicionados quando o Terminal Server está instalado, permitindo que o servidor Suporte várias sessões de usuário. O mais importante deles é o serviço “Terminal Server”. Este serviço, executado profundamente dentro do servidor, é responsável por fazer a interface das várias sessões do usuário com o sistema operacional. Também é responsável por funções como criar sessões, receber usuários e encerrar sessões.
Componentes do servidor de Terminal
embora pareça que o servidor de Terminal é basicamente um sistema pcAnywhere glorificado, na verdade é um sistema complexo composto por vários componentes, subsistemas e interfaces diferentes. Um diagrama mais completo dos componentes do servidor de Terminal é mostrado na Figura 2.1. Consulte – o enquanto lê as próximas seções que descrevem cada componente que compõe o Windows 2003 Terminal Server.
Figura 2.1: Componentes do Terminal Server 2003
o Kernel do Windows Server 2003
você se lembrará de que um componente-chave de qualquer ambiente de computação baseado em servidor é um sistema operacional multiusuário. No Windows Server 2003, este sistema é controlado pelo kernel.
O Windows Server 2003 precisa de uma maneira de distanciar os componentes críticos do sistema operacional de todos os usuários malucos. Para conseguir isso, os processos do Windows operam em um dos dois modos: Modo de usuário ou modo kernel. Pensando em seu treinamento do Windows NT, você se lembrará de que um aplicativo do modo de usuário não pode gravar diretamente na memória do sistema operacional. Em vez disso, ele tem acesso total ao seu próprio espaço de memória de 4 GB. Um componente do sistema operacional chamado Gerenciador de memória virtual (que é executado no modo kernel) controla tudo isso e grava na memória do sistema em nome do aplicativo no modo de usuário.
em ambientes de servidor de Terminal, a separação do modo de usuário e aplicativos de modo kernel permite que o sistema separe e isole os usuários. A falha do aplicativo de um usuário não derrubará todo o sistema. (É claro que você está pensando que uma falha no aplicativo pode derrubar um sistema, no entanto, isso geralmente está vinculado a drivers de dispositivo que são executados no modo kernel.)
em ambientes Windows “padrão” (ou seja, servidor não Terminal) onde apenas um único usuário faz logon interativamente, todos os processos do modo kernel vivem felizes juntos em uma área de memória e namespace. Em ambientes multiusuário, como o Terminal Server, no entanto, esse compartilhamento não funcionará, pois solicitações de sessões de usuários diferentes podem entrar em conflito entre si. O kernel em um servidor de Terminal está consequentemente ciente de várias sessões; ele mantém a sessão de cada usuário separada com processos e memória isolados. O Windows Server 2003 faz algumas alterações no kernel quando o componente Terminal Server está instalado para fazer isso.Primeiro, o servidor coloca parte do espaço de endereço de memória do kernel na memória virtual. Isso permite que as solicitações conflitantes em um ambiente de usuário único sejam processadas corretamente no ambiente de vários usuários e que várias instâncias de drivers de dispositivo no modo kernel sejam carregadas e usadas por vários usuários (a razão pela qual um usuário pode travar tecnicamente todo o sistema).
alguns processos do sistema não são específicos da sessão, o que significa que todos os usuários em todas as sessões precisarão de acesso a eles. Esses processos são armazenados em uma única área de memória (global) compartilhada por todos os usuários.
um efeito colateral de compartilhar processos como este em um ambiente de servidor de Terminal é que às vezes você vai correr em processos que não são “sessão consciente.”Um resultado potencial (e meio engraçado) pode ser mensagens de erro exibidas no console do servidor de aplicativos em execução na sessão de um usuário. Como geralmente não há ninguém na sala do servidor para reconhecer a mensagem, existe o potencial de impedir que o aplicativo de um usuário continue.
o serviço de Serviços de Terminal
“o serviço de Serviços de Terminal” refere-se a um serviço regular do Windows (Iniciar | Ferramentas | Serviços Administrativos) chamado “Serviços de Terminal.”No mundo real, as pessoas geralmente se referem a ele como o” serviço de Terminal “e usam o termo” servidor de Terminal ” ao se referir a um servidor Windows que está executando o serviço de Terminal.
se o kernel multiusuário é a base da computação baseada em servidor no Windows Server 2003, o serviço de Terminal é a pedra angular. Este serviço (carregado via termserv.dll) é carregado Logo após o kernel ficar online. Depois que o console do servidor (drivers de teclado, vídeo e mouse) é carregado, o serviço de Terminal inicia o subsistema Session Manager (smss.exe) responsável por gerenciar e rastrear todas as sessões do usuário no servidor.
sessões do servidor de Terminal
uma nova sessão é criada cada vez que um usuário faz login no servidor de Terminal. Uma sessão consiste essencialmente em uma área de trabalho virtual a partir da qual o usuário pode executar aplicativos e com a qual ele pode interagir da mesma forma que com uma estação de trabalho. Uma sessão do servidor não deve ser confundida com o console do servidor, uma vez que uma sessão não é um controle remoto do console, mas na verdade uma nova área de trabalho separada do console.
Cada vez que um usuário se conecta a um Servidor de Terminal e cria esse “trabalho virtual”, um único número de ID de sessão é criado para diferenciar o usuário (e, portanto, os processos do usuário) de todas as outras sessões e usuários. Os IDs de sessão também permitem que o servidor mantenha a memória separada para a sessão de cada usuário. Quando um usuário faz logoff de um cliente de Serviços de Terminal, a sessão que estava sendo usada é excluída e os processos e a memória que foram iniciados e usados por essa sessão são removidos. Cada servidor de Terminal rastreia seus próprios IDs de sessão e lida com a tarefa de emitir, rastrear e removê-los.
como as sessões do servidor são “virtuais” (e a memória e os processos são mantidos separados entre as sessões), uma falha ou bloqueio do aplicativo em uma sessão não deve afetar nenhuma outra sessão do usuário, mesmo que outros usuários estejam usando o mesmo aplicativo.
no entanto, a frase-chave aqui é” não deve ” afetar outros usuários. Mesmo que as sessões do usuário sejam separadas em um servidor, elas ainda compartilham recursos do servidor e certos segmentos de código. Se um usuário invoca um processo que faz com que o servidor para a tela azul, isso obviamente terá um efeito sobre os outros usuários. Por outro lado, ocorrências simples como um aplicativo pendurado em uma solicitação de tempo limite ou falha do Microsoft Word quando um usuário abre um documento corrompido não serão vistas pelos outros usuários (dentro de suas próprias sessões) no sistema.
estados de sessão
como uma sessão é realmente a área de trabalho de um usuário, há momentos em que uma sessão pode estar em vários estados diferentes, muito parecido com uma estação de trabalho normal. Por exemplo, se um usuário se afastar de sua estação de trabalho por um período de tempo, a estação de trabalho não será desligada. Em vez disso, é apenas ocioso, aguardando a entrada do Usuário. As sessões do Terminal server se comportam da mesma forma e podem estar em um de vários estados diferentes, dependendo da atividade (ou inatividade) do usuário, da conectividade entre o cliente e o servidor e das configurações de tempo limite da sessão.
Figura 2.2: Cada Servidor de Terminal mantém muitas sessões de usuário separada
Todas as sessões de usuário em um Servidor de Terminal deve estar em uma das seguintes seis estados:
- o Ativo é um vivo e ativo do usuário. O usuário está interagindo com a sessão do servidor de Terminal e não teve um período de inatividade ou uma desconexão de rede do servidor. Este é o estado” normal ” de uma sessão.
- Idle é o estado em que uma sessão entra quando não há entrada do usuário por um período de tempo especificado.
- sessões desconectadas ocorrem quando os processos e programas de uma sessão “ao vivo” estão em execução, mas nenhum cliente RDC está conectado. (Se você pulou o primeiro capítulo,” cliente RDC ” é o novo nome para o cliente RDP.) A causa comum é uma desconexão de rede ou quando um usuário clica no “X” no canto superior direito de seu software cliente RDC. Um usuário pode se reconectar à sua sessão desconectada para trazê-la de volta a um estado “ativo” (e para continuar com seu trabalho de onde parou). Pense em uma sessão desconectada como uma estação de trabalho bloqueada, exceto que o usuário pode “desbloquear” sua estação de trabalho de qualquer computador no prédio.
- as sessões conectadas estão em um estado no qual um dispositivo cliente está conectado a uma sessão do servidor, mas nenhum usuário está logado, muito parecido com o prompt CTRL+ALT+DEL em uma estação de trabalho.
- Down é um estado temporário no qual uma sessão está sendo encerrada e os processos dentro da sessão estão sendo mortos. Down é o estado final de uma sessão antes de terminar.
- Listen é um estado visto apenas em portas de ouvinte que estão prontas para aceitar conexões de entrada. Este estado não se aplica a sessões regulares. Em vez disso, aplica-se aos processos em execução no servidor que aguardam (ouvem) novas solicitações de conexão de sessão.
na maioria dos ambientes, os administradores configuram sessões com vários tempos limite. Você pode limitar a quantidade de tempo que uma única sessão pode ser aberta ou pode converter automaticamente uma sessão ociosa em uma sessão desconectada. Os tempos limite ajudam a limitar a quantidade de tempo que o servidor gasta executando processos para usuários que realmente não estão trabalhando no servidor. Abordaremos as técnicas e estratégias exatas para configurá-las mais adiante neste livro.
portas de conexão e ouvintes
a sessão RDP de cada usuário se conecta ao servidor de Terminal por meio de uma porta de conexão. Uma porta de conexão (comumente referida apenas como uma” conexão”) é uma porta virtual no servidor associada a uma placa de rede específica e combinação de Protocolo.
uma porta de conexão do servidor de Terminal é criada automaticamente quando o componente do servidor de Terminal é instalado. Por padrão, Ele permite que qualquer usuário do grupo” Usuários de área de trabalho remota ” se conecte às sessões do Terminal Server no servidor por meio de qualquer placa de rede. No entanto, mesmo que a porta de conexão padrão funcione com qualquer placa de rede com TCP/IP instalado, as portas de conexão do servidor de Terminal são realmente específicas da placa de rede. Você pode configurar um servidor com várias placas de rede para ter várias portas de conexão do Terminal Server—uma para cada placa. Na verdade, cada conexão pode ter propriedades e permissões totalmente diferentes.
Figura 2.3: Um Servidor de Terminal com várias portas de conexão
conexões de Servidor de Terminal e seus associados ouvintes pode ser configurado em dois lugares. O primeiro é através do snap-in MMC de configuração de Serviços de Terminal (TSC). Você pode usar o TSC para configurar opções para conexões de servidor de Terminal baseadas em RDP, como configurações, permissões e sobre qual placa de rede uma conexão é válida. A segunda maneira de Configurar Conexões de servidor de Terminal é por meio de um objeto de Diretiva de grupo do Active Directory (GPO) dentro de um domínio do Windows 2003. Essa funcionalidade permite atribuir conexões para vários servidores contidos em uma UO no Active Directory.
ouvintes
cada porta de conexão do servidor de Terminal tem um subcomponente chamado ” listener.”O componente ouvinte “escuta” em uma placa de rede específica e combinação de Protocolo para a qual a porta de conexão está configurada. Quando um usuário deseja estabelecer uma nova sessão no servidor, ele usa seu software cliente RDC para entrar em contato com o servidor. O ouvinte do servidor atende a solicitação do cliente e a encaminha para o Gerenciador de sessão. O ouvinte então volta a ouvir mais solicitações de conexão.
canais virtuais
como discutimos anteriormente, o protocolo RDP da Microsoft em execução no TCP/IP é o protocolo real que conecta os usuários às sessões do servidor. Também mencionamos que este protocolo pode suportar mais do que apenas desktops virtuais puros. O RDP permite que o áudio de sessão remota do servidor seja canalizado para os alto-falantes do dispositivo cliente. Ele também permite que dispositivos conectados às portas seriais do cliente apareçam como se estivessem conectados ao servidor. Esses “extras” estão disponíveis nos canais virtuais do RDP. Um canal virtual é simplesmente um mecanismo para mover dados para frente e para trás entre uma sessão de servidor de Terminal e um cliente. Por padrão, o protocolo RDP no Terminal Server 2003 contém vários canais virtuais.
- áudio: Os eventos sonoros gerados na sessão do servidor são redirecionados através do protocolo RDP para o dispositivo cliente RDC, onde são reproduzidos nos Alto-falantes do cliente.
- unidades cliente: as unidades de disco locais no dispositivo cliente são disponibilizadas ao servidor, para que os usuários possam acessar as unidades do servidor e suas unidades de dispositivo cliente local em suas sessões remotas.Impressoras: as impressoras disponíveis para o dispositivo cliente antes de uma sessão ser iniciada em um servidor de Terminal são disponibilizadas aos usuários a partir de suas sessões de servidor. Os usuários podem então imprimir em suas impressoras padrão do Windows, incluindo impressoras diretamente conectadas a seus dispositivos clientes.
- Portas Seriais: o canal virtual da porta serial permite que os dispositivos conectados à porta serial de um dispositivo cliente sejam acessados por meio de suas sessões de servidor de Terminal remoto.Área de transferência do Windows: para integrar aplicativos locais com sessões de servidor de Terminal remoto, o canal virtual da área de transferência do Windows sincroniza o conteúdo da área de transferência do servidor de Terminal remoto com o conteúdo da área de transferência do dispositivo cliente. Os usuários podem cortar e colar perfeitamente entre aplicativos locais e remotos.
se os canais virtuais padrão não atenderem às suas necessidades, O MSDN e os SDKs do Windows Server 2003 contêm informações sobre como escrever seus próprios canais virtuais personalizados. Um canal virtual é uma combinação de dois componentes-Um componente do lado do cliente e um componente do lado do servidor. Ambos podem enviar e receber dados através do canal virtual, permitindo uma ou duas vias de comunicação. Os canais virtuais também podem ser independentes de RDP, o que significa que você pode personalizar para o seu ambiente sem atualizar ou alterar o software Real do cliente ou servidor.
por que todo o foco em canais virtuais? Embora este não seja um livro de desenvolvedor e você provavelmente nunca desenvolverá seu próprio canal virtual, é fundamental que você entenda como eles funcionam. Quase todos os produtos adicionais de terceiros para o Terminal Server usam canais virtuais. Entender como os canais virtuais funcionam o ajudará a solucionar problemas dos produtos de terceiros que, sem dúvida, você encontrará em sua carreira no Terminal Server.
com isso dito, vamos dar uma olhada final na arquitetura de um canal virtual. Consulte a figura 2.4.
figura 2.4: arquitetura de canal virtual do Terminal Server 2003
o componente de canal virtual do lado do servidor geralmente é um executável em execução no servidor de Terminal. Este componente deve ser um componente de modo de usuário, uma vez que o servidor usa o ID da sessão para determinar a qual sessão do lado do cliente deve transmitir e receber dados.
o componente de canal virtual do lado do cliente geralmente é uma DLL fornecida pela Microsoft, o fornecedor de software de terceiros ou escrita personalizada por seus desenvolvedores. A DLL deve ser carregada no computador cliente quando o programa cliente RDC é iniciado e inicia a conexão com o servidor. Na maioria dos casos, isso é roteirizado ou feito programaticamente no nível do cliente.
como todos esses componentes se encaixam
agora que você entende cada um dos vários componentes do servidor de Terminal, vamos ver como todos eles se encaixam. Siga o processo que ocorre quando uma conexão com o cliente é feita, referindo-se à figura 2.5.
Figura 2.5: Uma nova sessão é estabelecida
- Antes de qualquer coisa acontecer, os ouvintes sobre o Terminal Server assistir a determinadas placas de rede, o endereço IP e a porta TCP combinações para as solicitações de entrada para iniciar as sessões.
- um usuário decide usar um aplicativo remoto, então ela inicia seu cliente RDC e solicita uma conexão com “server1.”Seu cliente RDC verifica para ver quais DLLs de canal virtual estão instaladas.
- neste ambiente, o nome “server1” refere-se ao endereço IP 192.168.14.42 (que passa a ser NIC #1 no servidor). O cliente RDC do usuário envia uma solicitação de conexão de sessão para 192.168.14.42.
- o ouvinte do servidor atende a solicitação e a entrega ao Gerenciador de sessões. À medida que o Gerenciador de sessões assume o controle, o ouvinte retoma a escuta para mais sessões.
- o servidor negocia com o cliente solicitante seu nível de criptografia e recursos de canal virtual.
- o Usuário é então autenticado no domínio e seus direitos são verificados quanto ao acesso à conexão.
- As licenças da Microsoft são verificadas. A licença de acesso do cliente do servidor é verificada primeiro e, em seguida, a licença de acesso do Cliente do servidor de Terminal é verificada. (O licenciamento é detalhado no Capítulo 4.)
- neste ponto, a sessão do usuário está pronta para começar. Os scripts de logon são executados e a área de trabalho é carregada.
no Windows Server 2003, uma porta de ouvinte está associada a uma ” conexão.”Na verdade, os dois termos são quase intercambiáveis. Você configura propriedades para uma conexão e a porta do ouvinte da conexão é modificada adequadamente.
agora que cobrimos todos os componentes que compõem um servidor de Terminal do Windows 2003, recorra aos requisitos.