en terminalserver er stort set den samme som det almindelige operativsystem, bortset fra at nøglekomponenter i Terminalservermiljøer er blevet tilføjet eller ændret for at yde support til flere samtidige brugere.
Microsoft har altid været et” multi-user ” operativsystem i den forstand, at flere brugere kunne være forbundet til en enkelt server til enhver tid. Disse brugere var dog forbundet til filtjenester eller printertjenester på serverne. De kørte deres lokale vinduer grænseflader på deres lokale computere, og serveren understøttede kun en desktop interface via det lokale tastatur, mus og skærm. Den væsentligste forskel med Terminal Server er, at flere brugere kan køre deres egne vinduer desktop sessioner på serveren. Så Terminal Server er” multi-user ” i den forstand, at den understøtter flere desktop-grænseflader. Nogle mennesker kan lide at tænke på dette som et “fjernbetjening” – miljø, bortset fra at terminalserveren kan rumme mange brugere “fjernstyring” det på samme tid, hvor hver bruger gør noget helt andet.
for at Terminal Server kunne understøtte flere brugersessioner, måtte der foretages nogle ændringer fra det almindelige Microsoft-serverprogram. Der er to grundlæggende forskelle mellem en almindelig vinduer Server og en med Terminal Server installeret:
- når Terminal Server er installeret på en 2003 server, er visse centrale komponenter i operativsystemet ændret til at understøtte flere, samtidige brugergrænseflader. For eksempel ændres virtual memory manager og object manager til at understøtte flere samtidige desktopgrænseflader uden at blive forvirrede. Dette er større ændringer, der kræver, at du genstarter systemet efter installation af Terminal Server.
- nye tjenester og komponenter tilføjes, når Terminal Server er installeret, der gør det muligt for serveren at understøtte flere brugersessioner. Den vigtigste af disse er tjenesten” Terminal Server”. Denne service, der kører dybt inde i serveren, er ansvarlig for at forbinde de flere brugersessioner med operativsystemet. Det er også ansvarligt for funktioner som oprettelse af sessioner, modtagelse af brugere og afslutning af sessioner.
Terminalserverkomponenter
selvom det ser ud til, at terminalserveren dybest set er et glorificeret Pchvor som helst system, er det faktisk et komplekst system, der består af flere forskellige komponenter, delsystemer og grænseflader. Et mere komplet diagram over Terminalserverkomponenterne er vist i figur 2.1. Henvis til det som du læser gennem de næste par afsnit, der beskriver hver komponent, der udgør vinduer 2003 Terminal Server.
figur 2.1: Terminal Server 2003 components
vinduer Server 2003 Kernel
du vil huske, at en nøglekomponent i ethvert serverbaseret computermiljø er et operativsystem til flere brugere. I vinduer Server 2003 styres dette system af kernen.
vinduer Server 2003 har brug for en måde at distancere kritiske operativsystemkomponenter fra alle de skøre brugere. For at opnå dette fungerer vinduer processer i en af to tilstande: brugertilstand eller kernetilstand. Når du tænker tilbage på din NT-træning, vil du huske, at et brugertilstandsprogram ikke kan skrive direkte til OS-hukommelsen. I stedet har den fuld adgang til sit eget 4 GB hukommelsesplads. En operativsystemkomponent kaldet virtual memory manager (som i sig selv kører i kernel-tilstand) styrer alt dette og skriver til systemhukommelsen på vegne af user-mode-applikationen.
i Terminalservermiljøer giver adskillelsen af brugertilstand og kernemodusapplikationer systemet mulighed for at adskille og isolere brugerne. En brugers applikationsnedbrud vil ikke tage hele systemet ned. (Selvfølgelig tænker du på, at et programnedbrud kan tage ned et system, men det er normalt bundet til enhedsdrivere, der kører i kernel mode.)
i “standard” (dvs.ikke-Terminal Server) vinduer miljøer, hvor kun en enkelt bruger logger på interaktivt, lever alle kernel-mode processer lykkeligt sammen i et hukommelsesområde og navneområde. I flerbrugermiljøer som Terminal Server fungerer denne deling imidlertid ikke, da anmodninger fra forskellige Brugersessioner kan være i konflikt med hinanden. Kernen på en terminalserver er derfor multi-session opmærksom; det holder hver brugers session adskilt med isolerede processer og hukommelse. Vinduer Server 2003 gør nogle ændringer i kernen, når Terminal Server komponent er installeret for at opnå dette.
først placerer serveren noget af kernens hukommelsesadresserum i virtuel hukommelse. Dette gør det muligt at behandle, hvad der ville være modstridende anmodninger i et enkeltbrugermiljø korrekt i flerbrugermiljøet, og at flere forekomster af enhedsdrivere i kernetilstand indlæses og bruges af flere brugere (grunden til, at en bruger teknisk set kan gå ned i hele systemet).
nogle systemprocesser er ikke sessionsspecifikke, hvilket betyder, at alle brugere i alle sessioner har brug for adgang til dem. Disse processer gemmes i et enkelt (globalt) hukommelsesområde, der deles af alle brugere.
en bivirkning ved at dele processer som denne i et Terminalservermiljø er, at du nogle gange løber ind i processer, der ikke er “sessionbevidste.”Et potentielt (og slags sjovt) resultat kan være fejlmeddelelser, der vises på serverkonsollen fra applikationer, der kører inden for en brugers session. Da der normalt ikke er nogen i serverrummet til at anerkende meddelelsen, er der potentialet til at forhindre en brugers applikation i at fortsætte.
Terminaltjenestetjenesten
“Terminaltjenestetjenesten” henviser til en almindelig Vindueservice (Start | Administrative værktøjer | tjenester) kaldet “terminaltjenester.”I den virkelige verden, folk normalt henvise til det som” Terminal Service, “og de bruger udtrykket” Terminal Server”, når der henvises til en Vinduer Server, der kører Terminal Service.
hvis multibrugerkernen er grundlaget for serverbaseret databehandling i vinduer Server 2003, er Terminaltjenesten hjørnestenen. Denne service (indlæst via termserv.dll) indlæses lige efter kernen kommer online. Når serverens konsol (tastatur -, video-og musedrivere) er indlæst, starter Terminaltjenesten Session Manager-undersystemet (SMS ‘ er.ansvarlig for styring og sporing af alle brugersessioner på serveren.
Terminalserversessioner
der oprettes en ny session, hver gang en bruger logger på terminalserveren. En session består i det væsentlige af et virtuelt skrivebord, hvorfra brugeren kan køre applikationer, og som han kan interagere med ligesom med en arbejdsstation. En serversession bør ikke forveksles med serverkonsollen, da en session ikke er en fjernbetjening af konsollen, men faktisk et nyt skrivebord adskilt fra konsollen.
hver gang en bruger opretter forbindelse til en terminalserver og opretter dette “virtuelle skrivebord”, oprettes et unikt session-ID-nummer for at differentiere brugeren (og derfor brugerens processer) fra alle andre sessioner og brugere. Session-id ‘ er gør det også muligt for serveren at holde hukommelsen adskilt for hver brugers session. Når en bruger logger af fra en Terminal Services-klient, slettes den session, der blev brugt, og de processer og hukommelse, der blev lanceret og brugt af den pågældende session, fjernes. Hver terminalserver sporer sine egne sessions-id ‘ er og håndterer opgaven med at udstede, spore og fjerne dem.
da serversessioner er “virtuelle” (og hukommelse og processer holdes adskilt mellem sessioner), bør et programnedbrud eller låsning i en session ikke påvirke andre brugersessioner, selvom andre brugere bruger det samme program.
nøglesætningen her er dog “bør ikke” påvirke andre brugere. Selvom brugersessioner er adskilte på en server, deler de stadig serverressourcer og visse kodesegmenter. Hvis en bruger påberåber sig en proces, der får serveren til at blå skærm, vil dette naturligvis have en effekt på de andre brugere. På den anden side vil enkle hændelser som et program, der hænger på en timeout-anmodning eller Microsoft-ord, der går ned, når en bruger åbner et korrupt dokument, ikke ses af de andre brugere (inden for deres egne sessioner) på systemet.
Sessionstilstande
da en session virkelig er en brugers skrivebord, er der tidspunkter, hvor en session kan være i forskellige forskellige tilstande, ligesom en normal arbejdsstation. For eksempel, hvis en bruger går væk fra deres arbejdsstation i en periode, slukker arbejdsstationen ikke. Det er snarere blot inaktiv og venter på brugerinput. Terminalserversessioner opfører sig meget ens og kan være i en af en række forskellige tilstande afhængigt af brugerens aktivitet (eller inaktivitet), forbindelse mellem klienten og serveren og sessionstidsindstillinger.
figur 2.2: hver terminalserver opretholder mange separate brugersessioner
alle brugersessioner på en terminalserver skal være i en af følgende seks tilstande:
- Active er en levende og aktiv bruger. Brugeren interagerer med Terminalserversessionen og har ikke haft en periode med inaktivitet eller en netværksafbrydelse fra serveren. Dette er den” normale ” tilstand af en session.
- Idle er den tilstand, en session går ind i, når der ikke er input fra brugeren i en bestemt periode.
- frakoblede sessioner opstår, når processerne og programmerne i en “live” session kører, men ingen RDC-klient er tilsluttet. (Hvis du sprang over det første kapitel, er “RDC Client” Det Nye Navn for RDP Client.) Den almindelige årsag er en netværksafbrydelse, eller når en bruger klikker på “H” i øverste højre hjørne af deres RDC-klientprogram. En bruger kan genoprette forbindelse til sin frakoblede session for at bringe den tilbage til en “aktiv” tilstand (og for at fortsætte med sit arbejde lige hvor han slap). Tænk på en afbrudt session som en låst arbejdsstation, bortset fra at brugeren kan “låse op” sin arbejdsstation fra enhver computer i bygningen.
- tilsluttede sessioner er i en tilstand, hvor en klientenhed er tilsluttet en serversession, men ingen bruger er logget på, ligesom CTRL+ALT+DEL-prompten på en arbejdsstation.
- ned er en midlertidig tilstand, hvor en session afsluttes, og processer inden for sessionen dræbes. Ned er den endelige tilstand af en session, før den slutter.
- Lyt er en tilstand, der kun ses på lytterporte, der er klar til at acceptere indgående forbindelser. Denne tilstand gælder ikke for regelmæssige sessioner. Det gælder snarere for de processer, der kører på serveren, der venter på (lyt efter) nye sessionsforbindelsesanmodninger.
i de fleste miljøer konfigurerer administratorer sessioner med forskellige timeouts. Du kan begrænse den tid, en enkelt session kan være åben, eller du kan automatisk konvertere en inaktiv session til en afbrudt session. Timeouts hjælper med at begrænse den tid, serveren bruger på at udføre processer for brugere, der virkelig ikke arbejder på serveren. Vi dækker de nøjagtige teknikker og strategier til konfiguration af disse senere i denne bog.
forbindelsesporte og lyttere
hver brugers RDP-session opretter forbindelse til terminalserveren via en forbindelsesport. En forbindelsesport (ofte kun omtalt som en “forbindelse”) er en virtuel port på serveren, der er knyttet til et specifikt netværkskort og protokolkombination.
en Terminalserverforbindelsesport oprettes automatisk, når Terminalserverkomponenten er installeret. Som standard tillader det enhver bruger i gruppen” remote desktop users ” at oprette forbindelse til Terminalserversessioner på serveren via ethvert netværkskort. Selvom standardforbindelsesporten fungerer med ethvert netværkskort med TCP / IP installeret, er Terminalserverforbindelsesporte virkelig netværkskortspecifikke. Du kan konfigurere en server med flere netværkskort til at have flere Terminalserverforbindelsesporte—en for hvert kort. Faktisk kan hver forbindelse have helt forskellige egenskaber og tilladelser.
figur 2.3: en terminalserver med flere forbindelsesporte
Terminalserverforbindelser og deres tilknyttede lyttere kan konfigureres to steder. Den første er via Terminal Services Configuration (TSC) MMC snap-in. Du kan bruge TSC til at konfigurere indstillinger for RDP-baserede Terminalserverforbindelser, såsom indstillinger, tilladelser og over hvilket netværkskort en forbindelse er gyldig. Den anden måde at konfigurere Terminalserverforbindelser på er via et Active Directory Group Policy Object (GPO) inden for et vinduer 2003-domæne. Denne funktionalitet giver dig mulighed for at tildele forbindelser til flere servere indeholdt med en OU i Active Directory.
lyttere
hver Terminalserverforbindelsesport har en underkomponent kaldet en “lytter.”Lytterkomponenten” lytter ” på et specifikt netværkskort og protokolkombination, som forbindelsesporten er konfigureret til. Når en bruger ønsker at etablere en ny session på serveren, bruger de deres RDC-klientprogram til at kontakte serveren. Serverens lytter henter klientanmodningen og videresender den til session manager. Lytteren går derefter tilbage til at lytte efter flere forbindelsesanmodninger.
virtuelle kanaler
som vi diskuterede tidligere, er Microsofts RDP-protokol, der kører på TCP/IP, den faktiske protokol, der forbinder brugere til serversessioner. Vi nævnte også, at denne protokol kan understøtte mere end bare rene virtuelle desktops. RDP gør det muligt at kanalisere fjernsessionslyd fra serveren til klientenhedens højttalere. Det giver også mulighed for, at enheder, der er tilsluttet klientens serielle porte, ser ud som om de er tilsluttet serveren. Disse “ekstramateriale” er tilgængelige via rdps virtuelle kanaler. En virtuel kanal er simpelthen en mekanisme til at flytte data frem og tilbage mellem en Terminalserversession og en klient. Som standard indeholder RDP-protokollen på Terminal Server 2003 flere virtuelle kanaler.
- lyd: Lydhændelser genereret på serversessionen omdirigeres gennem RDP-protokollen til RDC-klientenheden, hvor de afspilles på klientens højttalere.
- Klientdrev: lokale diskdrev på klientenheden stilles til rådighed for serveren, så brugerne kan få adgang til både serverdrev og deres lokale klientenhedsdrev inden for deres fjernsessioner.
- printere: printere, der er tilgængelige for klientenheden, før en session startes på en terminalserver, stilles til rådighed for brugere fra deres serversessioner. Brugere kan derefter udskrive til deres standard vinduer printere, herunder printere direkte knyttet til deres klient enheder.
- serielle porte: den virtuelle serielle port gør det muligt at få adgang til enheder, der er tilsluttet en klientenheds serielle port, via dens eksterne Terminalserversessioner.
- vinduer Udklipsholder: for at integrere lokale applikationer med eksterne Terminal Server sessioner, vinduer udklipsholder virtuel kanal synkroniserer indholdet af den eksterne Terminal Server udklipsholder med indholdet af klientenhedens udklipsholder. Brugere kan problemfrit klippe og indsætte mellem lokale og eksterne applikationer.
hvis standard virtuelle kanaler ikke opfylder dine behov, MSDN og vinduer Server 2003 SDK ‘ er indeholder oplysninger om at skrive dine egne brugerdefinerede virtuelle kanaler. En virtuel kanal er en kombination af to komponenter—en klient-side komponent og en server-side komponent. Begge kan sende og modtage data via den virtuelle kanal, hvilket giver mulighed for en – eller tovejskommunikation. Virtuelle kanaler kan også være RDP-uafhængige, hvilket betyder, at du kan tilpasse til dit miljø uden at opgradere eller ændre det faktiske klient-eller serverprogram.
hvorfor alt fokus på virtuelle kanaler? Selvom dette ikke er en udviklerbog, og du sandsynligvis aldrig vil udvikle din egen virtuelle kanal, er det kritisk, at du forstår, hvordan de fungerer. Næsten alle tredjeparts add-on produkt til Terminal Server gør brug af virtuelle kanaler. At forstå, hvordan virtuelle kanaler fungerer, hjælper dig med at fejlfinde de tredjepartsprodukter, som du uden tvivl kommer på tværs af i din Terminalserverkarriere.
med det sagt, lad os tage et sidste kig på arkitekturen i en virtuel kanal. Se figur 2.4.
figur 2.4: Terminal Server 2003 ‘ s virtual channel architecture
den virtuelle kanalkomponent på serversiden er normalt en eksekverbar, der kører på terminalserveren. Denne komponent skal være en brugertilstandskomponent, da serveren bruger session-ID ‘ et til at bestemme, hvilken klientside-session den skal overføre til og modtage data fra.
den virtuelle kanalkomponent på klientsiden er normalt en DLL, der leveres af Microsoft, tredjepartsprogramleverandøren, eller som er skræddersyet af dine udviklere. DLL ‘ en skal indlæses på klientcomputeren, når RDC-klientprogrammet startes og starter forbindelsen til serveren. I de fleste tilfælde er dette scripted eller gjort programmatisk på klientniveau.
hvordan alle disse komponenter passer sammen
nu hvor du forstår hver af de forskellige Terminalserverkomponenter, lad os se, hvordan de alle passer sammen. Følg den proces, der finder sted som en klient forbindelse er lavet, med henvisning til figur 2.5.
figur 2.5: der oprettes en ny session
- før der sker noget, ser lytterne på terminalserveren visse netværkskort, IP-adresse og TCP-portkombinationer for indgående anmodninger om at starte sessioner.
- en bruger beslutter at bruge en fjernapplikation, så hun lancerer sin RDC-klient og anmoder om en forbindelse til “server1.”Hendes RDC-klient kontrollerer for at se, hvilke virtuelle kanal-DLL’ er der er installeret.
- i dette miljø henviser navnet “server1” til IP-adresse 192.168.14.42 (som tilfældigvis er NIC #1 på denne server). Brugerens RDC-klient sender en anmodning om sessionsforbindelse til 192.168.14.42.
- serverens lytter henter anmodningen og afleverer den til session manager. Som session manager overtager, lytteren genoptager lytte til flere sessioner.
- serveren forhandler med den anmodende klient for dets krypteringsniveau og virtuelle kanalfunktioner.
- brugeren autentificeres derefter til domænet, og hendes rettigheder kontrolleres for adgang til forbindelsen.
- Microsoft-licenserne er verificeret. Serverklientadgangslicensen verificeres først, og derefter verificeres Terminalserverklientadgangslicensen. (Licens er beskrevet i kapitel 4.)
- på dette tidspunkt er brugersessionen klar til at begynde. Logon scripts køre og skrivebordet er indlæst.
i vinduer Server 2003 er en lytterport forbundet med en “forbindelse.”Faktisk er de to udtryk næsten udskiftelige. Du konfigurerer egenskaber for en forbindelse, og forbindelsens lytterport ændres korrekt.
nu hvor vi har dækket alle de komponenter, der udgør en vinduer 2003 Terminal Server, drej til kravene.