Hoe Terminal Server Voor Windows Server 2003 werkt

een Terminal Server is in principe hetzelfde als het reguliere Windows Server-besturingssysteem, behalve dat in terminalserver-omgevingen belangrijke componenten zijn toegevoegd of gewijzigd om ondersteuning te bieden voor meerdere, gelijktijdige gebruikers.

Microsoft Windows is altijd een” multi-user ” besturingssysteem geweest, in die zin dat meerdere gebruikers op een bepaald moment met één server konden worden verbonden. Deze gebruikers waren echter verbonden met Bestandsservices of printerservices op de servers. Ze draaiden hun lokale Windows-interfaces op hun lokale computers en de server ondersteunde slechts één desktopinterface via het lokale toetsenbord, de muis en de monitor. Het belangrijkste verschil met Terminal Server is dat meerdere gebruikers hun eigen Windows desktop sessies op de server kunnen draaien. Dus Terminal Server is “multi-user” in de zin dat het ondersteunt meerdere desktop interfaces. Sommige mensen zien dit graag als een” remote control ” omgeving, behalve dat de Terminal Server geschikt is voor veel gebruikers “remote control” het op hetzelfde moment, waarbij elke gebruiker iets heel anders doet.

om Terminal Server meerdere gebruikerssessies te laten ondersteunen, moesten er enkele wijzigingen worden aangebracht vanuit de reguliere Microsoft Windows server-software. Er zijn twee fundamentele verschillen tussen een gewone Windows Server en een met Terminal Server geïnstalleerd:

  • wanneer Terminal Server is geïnstalleerd op een Windows 2003-server, worden bepaalde kerncomponenten van het Windows-besturingssysteem aangepast om meerdere gelijktijdige gebruikersinterfaces te ondersteunen. Bijvoorbeeld, de virtual memory manager en de object manager worden aangepast om meerdere, gelijktijdige desktop interfaces te ondersteunen zonder verward te raken. Dit zijn belangrijke wijzigingen, die vereisen dat je het systeem herstart na het installeren van Terminal Server.
  • nieuwe services en componenten worden toegevoegd wanneer Terminal Server is geïnstalleerd waarmee de server meerdere gebruikerssessies kan ondersteunen. De belangrijkste hiervan is de service “Terminal Server”. Deze service, die diep in de server draait, is verantwoordelijk voor de interfacing van de meerdere gebruikerssessies met het besturingssysteem. Het is ook verantwoordelijk voor functies zoals het maken van sessies, het ontvangen van gebruikers en het beëindigen van sessies.

Terminalservercomponenten

hoewel het lijkt dat de terminalserver in wezen een verheerlijkt pcAnywhere-systeem is, is het in feite een complex systeem dat bestaat uit verschillende componenten, subsystemen en interfaces. Een vollediger diagram van de Terminalservercomponenten wordt getoond in Figuur 2.1. Refereer naar het als je leest door de volgende paar secties beschrijven van elk onderdeel dat deel uitmaakt van Windows 2003 Terminal Server.

figuur 2.1: Terminal Server 2003 components

de Windows Server 2003 Kernel

u zult zich herinneren dat een belangrijk onderdeel van elke server-gebaseerde computeromgeving een multi-user besturingssysteem is. In Windows Server 2003 wordt dit systeem bestuurd door de kernel.

Windows Server 2003 heeft een manier nodig om kritische besturingssysteemcomponenten te distantiëren van alle gekke gebruikers. Om dit te bereiken, werken Windows processen in een van de twee modi: user mode of kernel mode. Als u terugdenkt aan uw Windows NT-training, zult u onthouden dat een toepassing in de gebruikersmodus niet rechtstreeks naar het geheugen van het besturingssysteem kan schrijven. In plaats daarvan heeft het volledige toegang tot zijn eigen 4GB geheugenruimte. Een besturingssysteem component genaamd de virtual memory manager (die zelf draait in kernel mode) controleert dit alles en schrijft naar het systeemgeheugen namens de user-mode applicatie.

in Terminalserveromgevingen stelt de scheiding van gebruikersmodus-en kernelmodus-toepassingen het systeem in staat om gebruikers te scheiden en te isoleren. Een gebruikers ‘ toepassing crash zal niet neer te halen het hele systeem. (Natuurlijk denk je dat een applicatiecrash een systeem kan uitschakelen, maar dat is meestal gekoppeld aan apparaatstuurprogramma ‘ s die in de kernelmodus draaien.)

in” standaard ” (d.w.z. niet-terminalserver) Windows-omgevingen waar slechts één gebruiker interactief aanmeldt, leven alle kernelmodusprocessen gelukkig samen in één geheugengebied en naamruimte. In multi-user omgevingen zoals Terminal Server, echter, dit delen zal niet werken omdat verzoeken van verschillende gebruikers sessies met elkaar kunnen conflicteren. De kernel op een Terminal Server is bijgevolg multi-sessie bewust; het houdt de sessie van elke gebruiker gescheiden met geà soleerde processen en geheugen. Windows Server 2003 brengt enkele wijzigingen aan in de kernel wanneer de Terminal Server component is geïnstalleerd om dit te bereiken.

eerst plaatst de server een deel van de geheugenadresruimte van de kernel in virtueel geheugen. Hierdoor kunnen tegenstrijdige verzoeken in een enkele-gebruikersomgeving correct worden verwerkt in de multi-user omgeving, en kunnen meerdere instances van kernel-mode apparaatstuurprogramma ‘ s door meerdere gebruikers worden geladen en gebruikt (de reden waarom één gebruiker technisch het hele systeem kan crashen).

sommige systeemprocessen zijn niet sessiespecifiek, wat betekent dat alle gebruikers in alle sessies toegang nodig hebben. Deze processen worden opgeslagen in een enkel (globaal) geheugengebied dat door alle gebruikers wordt gedeeld.

een neveneffect van het delen van processen zoals deze in een Terminal Server omgeving is dat je soms processen tegenkomt die niet “sessie bewust zijn.”Een potentieel (en soort grappig) resultaat kan foutmeldingen die worden weergegeven op de server console van toepassingen die worden uitgevoerd in een sessie van een gebruiker. Aangezien er meestal niemand in de serverruimte is om het bericht te bevestigen, is er de mogelijkheid om te voorkomen dat de toepassing van een gebruiker wordt voortgezet.

de Terminal Services-Service

” de Terminal Services-Service “verwijst naar een reguliere Windows-service (Start | Administrative Tools | Services) genaamd” Terminal Services.”In de echte wereld, mensen meestal verwijzen naar het als de” Terminal Service, “en ze gebruiken de term” Terminal Server ” bij het verwijzen naar een Windows-Server die de Terminal Service draait.

als de multi-user kernel de basis is van server-based computing in Windows Server 2003, is de Terminal Service De Hoeksteen. Deze service (geladen via termserv.dll) wordt geladen direct nadat de kernel online komt. Nadat de console van de server (toetsenbord -, video-en muisstuurprogramma ‘ s) is geladen, start de Terminal-Service het subsysteem Session Manager (smss).exe) verantwoordelijk voor het beheren en bijhouden van alle gebruikerssessies op de server.

Terminal Server Sessions

elke keer dat een gebruiker zich aanmeldt bij Terminal Server wordt een nieuwe sessie aangemaakt. Een sessie bestaat in wezen uit een virtueel bureaublad van waaruit de gebruiker toepassingen kan draaien en waarmee hij net als met een werkstation kan communiceren. Een serversessie moet niet worden verward met de serversconsole, omdat een sessie geen afstandsbediening van de console is, maar een nieuw bureaublad dat losstaat van de console.

elke keer dat een gebruiker verbinding maakt met een terminalserver en dit “virtuele bureaublad” maakt, wordt een uniek sessie-ID-nummer aangemaakt om de gebruiker (en dus de processen van de gebruiker) te onderscheiden van alle andere sessies en gebruikers. Sessie-id ‘ s stellen de server ook in staat om het geheugen gescheiden te houden voor de sessie van elke gebruiker. Wanneer een gebruiker zich afmeldt bij een Terminal Services-client, wordt de sessie die werd gebruikt, verwijderd en worden de processen en het geheugen die door die sessie zijn gestart en gebruikt, verwijderd. Elke Terminal Server traceert zijn eigen sessie-id ‘ s en behandelt de taak van het uitgeven, volgen en verwijderen van hen.

aangezien serversessies “virtueel” zijn (en geheugen en processen gescheiden worden gehouden tussen sessies), zou een crash of blokkering van een toepassing in een sessie geen invloed mogen hebben op andere gebruikerssessies, zelfs als andere gebruikers dezelfde toepassing gebruiken.

echter, de sleutelzin hier is “zou niet” invloed hebben op andere gebruikers. Hoewel gebruikerssessies gescheiden zijn op een server, delen ze nog steeds serverbronnen en bepaalde segmenten code. Als een gebruiker een proces aanroept waardoor de server een blauw scherm krijgt, zal dit uiteraard een effect hebben op de andere gebruikers. Aan de andere kant, eenvoudige gebeurtenissen zoals een toepassing opknoping op een time-out verzoek of Microsoft Word crashen wanneer een gebruiker een corrupt document opent zal niet worden gezien door de andere gebruikers (binnen hun eigen sessies) op het systeem.

Sessietoestanden

aangezien een sessie in werkelijkheid het bureaublad van een gebruiker is, zijn er tijden dat een sessie in verschillende toestanden kan zijn, net als een normaal werkstation. Als een gebruiker bijvoorbeeld gedurende een bepaalde periode van zijn werkstation wegloopt, wordt het werkstation niet uitgeschakeld. In plaats daarvan is het alleen inactief, wachtend op input van de gebruiker. Terminalserver-sessies gedragen zich vrijwel hetzelfde en kunnen zich in een van de verschillende statussen bevinden, afhankelijk van de activiteit (of inactiviteit) van de gebruiker, de connectiviteit tussen de client en de server en de time-out-instellingen voor sessies.

figuur 2.2: elke Terminal Server onderhoudt vele afzonderlijke gebruikerssessies

alle gebruikerssessies op een Terminal Server moeten zich in een van de volgende zes toestanden bevinden:

  • Active is een live en actieve gebruiker. De gebruiker interageert met de Terminal Server-sessie en heeft geen periode van inactiviteit gehad of een netwerkverbinding met de server verbroken. Dit is de” normale ” toestand van een sessie.
  • inactief is de toestand waarin een sessie gaat wanneer er gedurende een bepaalde periode geen invoer van de gebruiker is.Niet-verbonden sessies treden op wanneer de processen en programma ‘ s van een “live” sessie draaien, maar er geen RDC-client is verbonden. (Als je het eerste hoofdstuk overgeslagen hebt, is “RDC Client” de nieuwe naam voor de RDP Client.) De gemeenschappelijke oorzaak is een netwerk loskoppeling of wanneer een gebruiker klikt op de ” X ” in de rechterbovenhoek van hun RDC client software. Een gebruiker kan opnieuw verbinding maken met zijn verbroken sessie om het terug te brengen naar een “actieve” toestand (en om zijn werk op te pakken waar hij gebleven was). Denk aan een losgekoppelde sessie als een vergrendeld werkstation, behalve dat de gebruiker zijn werkstation kan “ontgrendelen” vanaf elke computer in het gebouw.
  • gekoppelde sessies bevinden zich in een toestand waarin een clientapparaat is verbonden met een serversessie, maar er is geen gebruiker aangemeld, zoals de CTRL+ALT+DEL prompt op een werkstation.
  • Down is een tijdelijke toestand waarin een sessie wordt beëindigd en processen binnen de sessie worden uitgeschakeld. Down is de laatste staat van een sessie voordat deze eindigt.
  • luisteren is een toestand die alleen te zien is op luisteraarpoorten die klaar zijn om binnenkomende verbindingen te accepteren. Deze status is niet van toepassing op reguliere sessies. In plaats daarvan is het van toepassing op de processen die draaien op de server die wachten op (luister naar) nieuwe sessieverbindingsverzoeken.

in de meeste omgevingen configureren beheerders sessies met verschillende time-outs. U kunt de tijd beperken dat een enkele sessie geopend kan zijn, of u kunt een niet-actieve sessie automatisch converteren naar een sessie zonder verbinding. Timeouts helpen om de hoeveelheid tijd die de server besteedt aan het uitvoeren van processen te beperken voor gebruikers die echt niet werken op de server. We zullen de exacte technieken en strategieën voor het configureren van deze later in dit boek behandelen.

verbindingspoorten en luisteraars

de RDP-sessie van elke gebruiker maakt verbinding met de terminalserver via een verbindingspoort. Een verbindingspoort (meestal alleen aangeduid als een “verbinding”) is een virtuele poort op de server die is gekoppeld aan een specifieke netwerkkaart en protocol combinatie.

een Terminal Server-verbindingspoort wordt automatisch aangemaakt wanneer het Terminal Server-onderdeel wordt geïnstalleerd. Standaard staat het elke gebruiker in de groep “remote desktop users” toe om verbinding te maken met terminalserver-sessies op de server via een netwerkkaart. Hoewel de standaard verbindingspoort werkt met elke netwerkkaart met TCP / IP geà nstalleerd, zijn Terminalserververbindingspoorten echt netwerkkaartspecifiek. U kunt een server met meerdere netwerkkaarten configureren om meerdere aansluitpoorten voor terminalservers te hebben—één voor elke kaart. In feite kan elke verbinding totaal verschillende eigenschappen en machtigingen hebben.

figuur 2.3: een terminalserver met meerdere verbindingspoorten

Terminalserververbindingen en de bijbehorende luisteraars kunnen op twee plaatsen worden geconfigureerd. De eerste is via de MMC-module Terminal Services Configuration (TSC). Met de TSC kunt u opties configureren voor op RDP gebaseerde Terminalserververbindingen, zoals instellingen, machtigingen en via welke netwerkkaart een verbinding geldig is. De tweede manier om Terminalserververbindingen te configureren is via een Active Directory Group Policy Object (GPO) binnen een Windows 2003-domein. Met deze functionaliteit kunt u verbindingen toewijzen voor meerdere servers met een organisatie-eenheid in Active Directory.

luisteraars

elke Terminal server verbinding poort heeft een subcomponent genaamd een ” listener.”De listener component “luistert” op een specifieke netwerkkaart en protocolcombinatie waarvoor de verbindingspoort is geconfigureerd. Wanneer een gebruiker een nieuwe sessie op de server wil opzetten, gebruiken ze hun RDC client software om contact op te nemen met de server. De luisteraar van de server pikt het clientverzoek op en stuurt het door naar de sessiebeheerder. De luisteraar gaat dan terug naar luisteren voor meer verbindingsverzoeken.

virtuele kanalen

zoals we eerder bespraken, is het RDP-protocol van Microsoft dat draait op TCP/IP het eigenlijke protocol dat gebruikers verbindt met serversessies. We vermeldden ook dat dit protocol meer kan ondersteunen dan alleen pure virtuele desktops. Met RDP kan externe sessie-audio van de server worden gekanaliseerd naar de luidsprekers van het clientapparaat. Het maakt het ook mogelijk voor apparaten aangesloten op de client seriële poorten te verschijnen alsof ze zijn aangesloten op de server. Deze “extra’ s ” zijn beschikbaar via de virtuele kanalen van RDP. Een virtueel kanaal is gewoon een mechanisme om gegevens heen en weer te verplaatsen tussen een Terminal Server sessie en een client. Standaard bevat het RDP-protocol op Terminal Server 2003 meerdere virtuele kanalen.

  • Audio: Geluidsgebeurtenissen die op de serversessie worden gegenereerd, worden via het RDP-protocol omgeleid naar het RDC-clientapparaat, waar ze op de luidsprekers van de client worden afgespeeld.
  • Client Drives: lokale schijven op het client-apparaat worden beschikbaar gesteld aan de server, zodat gebruikers toegang hebben tot zowel de server drives als hun lokale client-apparaat drives in hun externe sessies.
  • Printers: Printers die beschikbaar zijn voor het clientapparaat voordat een sessie wordt gestart op een terminalserver, worden beschikbaar gemaakt voor gebruikers vanuit hun serversessies. Gebruikers kunnen vervolgens afdrukken naar hun standaard Windows-printers, inclusief printers die rechtstreeks zijn aangesloten op hun clientapparaten.
  • seriële poorten: het virtuele kanaal met seriële poort staat toe dat apparaten die zijn aangesloten op de seriële poort van een clientapparaat toegankelijk zijn via de Remote Terminal Server-sessies.
  • Windows Klembord: om lokale toepassingen te integreren met Remote Terminal Server-sessies, synchroniseert het virtueel kanaal van het Windows Klembord de inhoud van het klembord van de Remote Terminal Server met de inhoud van het klembord van het clientapparaat. Gebruikers kunnen naadloos knippen en plakken tussen lokale en externe toepassingen.

als standaard virtuele kanalen niet aan uw behoeften voldoen, bevatten MSDN en de Windows Server 2003 SDK ‘ s informatie over het schrijven van uw eigen aangepaste virtuele kanalen. Een virtueel kanaal is een combinatie van twee componenten—een client-side component en een server-side component. Beide kunnen gegevens verzenden en ontvangen via het virtuele kanaal, waardoor één-of tweewegcommunicatie mogelijk is. Virtuele kanalen kunnen ook RDP-onafhankelijk zijn, wat betekent dat u kunt aanpassen aan uw omgeving zonder upgraden of wijzigen van de werkelijke client-of serversoftware.

waarom alle aandacht voor virtuele kanalen? Hoewel dit geen ontwikkelaarsboek is en je waarschijnlijk nooit je eigen virtuele kanaal zult ontwikkelen, is het van cruciaal belang dat je begrijpt hoe ze werken. Zowat elke derde partij add – on product voor Terminal Server maakt gebruik van virtuele kanalen. Als u begrijpt hoe virtuele kanalen werken, kunt u problemen oplossen met de producten van derden die u ongetwijfeld zult tegenkomen in uw terminalserver-carrière.

dit gezegd hebbende, laten we een laatste blik werpen op de architectuur van een virtueel kanaal. Zie figuur 2.4.

figuur 2.4: Terminal Server 2003 ‘ s virtual channel architecture

de server-side virtual channel component is meestal een uitvoerbaar bestand dat draait op de Terminal Server. Dit onderdeel moet een component in de gebruikersmodus zijn, omdat de server de sessie-ID gebruikt om te bepalen naar welke sessie aan de clientzijde de server gegevens moet verzenden en ontvangen.

de client-side virtual channel component is meestal een DLL geleverd door Microsoft, de derde partij software leverancier, of op maat geschreven door uw ontwikkelaars. De DLL moet op de clientcomputer worden geladen wanneer het RDC-clientprogramma wordt gestart en de verbinding met de server wordt gestart. In de meeste gevallen wordt dit scripted of programmatisch gedaan op client niveau.

hoe al deze componenten bij elkaar passen

Nu u elk van de verschillende Terminalservercomponenten begrijpt, laten we eens kijken hoe ze allemaal bij elkaar passen. Volg het proces dat plaatsvindt als een client verbinding wordt gemaakt, verwijzend naar figuur 2.5.

figuur 2.5: een nieuwe sessie wordt ingesteld

  1. voordat er iets gebeurt, kijken de luisteraars op de terminalserver naar bepaalde netwerkkaarten, IP-adres en tcp-poortcombinaties voor binnenkomende verzoeken om sessies te starten.
  2. een gebruiker besluit een remote applicatie te gebruiken, dus lanceert ze haar RDC client en vraagt een verbinding aan met “server1.”Haar RDC-client controleert om te zien welke virtuele kanaal DLL’ s zijn geïnstalleerd.
  3. in deze omgeving verwijst de naam “server1” naar IP-adres 192.168.14.42 (wat toevallig NIC #1 is op deze server). De RDC-client van de gebruiker stuurt een sessieverbindingsverzoek naar 192.168.14.42.
  4. de luisteraar van de server neemt het verzoek op en geeft het door aan de sessiebeheerder. Als de sessiebeheerder het overneemt, gaat de luisteraar verder met luisteren voor meer sessies.
  5. de server onderhandelt met de aanvragende client over zijn versleutelingsniveau en virtuele kanaalmogelijkheden.
  6. de gebruiker wordt dan geverifieerd aan het domein en haar rechten worden gecontroleerd op toegang tot de verbinding.
  7. de Microsoft-licenties worden geverifieerd. Eerst wordt de licentie voor toegang tot de serverclient geverifieerd en vervolgens wordt de licentie voor toegang tot de Terminalserverclient geverifieerd. (Het verlenen van vergunningen wordt nader beschreven in hoofdstuk 4.)
  8. op dit moment is de gebruikerssessie klaar om te beginnen. De aanmeldingsscripts worden uitgevoerd en het bureaublad wordt geladen.

in Windows Server 2003 is een luisteraarpoort gekoppeld aan een ” – verbinding.”In feite zijn de twee termen bijna uitwisselbaar. U configureert eigenschappen voor een verbinding en de luisteraarpoort van de verbinding wordt op de juiste manier gewijzigd.

nu we alle componenten van een Windows 2003 Terminal Server hebben behandeld, kunt u zich wenden tot de vereisten.

Geef een antwoord

Het e-mailadres wordt niet gepubliceerd.