serwer terminali jest zasadniczo taki sam jak zwykły system operacyjny Windows Server, z wyjątkiem tego, że w środowiskach serwera terminali kluczowe komponenty zostały dodane lub zmodyfikowane, aby zapewnić obsługę wielu jednoczesnych użytkowników.
Microsoft Windows zawsze był systemem operacyjnym „multi-user” w tym sensie, że wielu użytkowników może być podłączonych do jednego serwera w danym momencie. Jednak ci użytkownicy byli podłączeni do usług plików lub drukarek na serwerach. Uruchamiali lokalne interfejsy Windows na swoich komputerach lokalnych, a serwer obsługiwał tylko jeden interfejs pulpitu za pomocą lokalnej klawiatury, myszy i monitora. Główną różnicą w przypadku serwera terminali jest to, że wielu użytkowników może uruchamiać własne sesje pulpitu Windows na serwerze. Tak więc Terminal Server jest „multi-user”w tym sensie, że obsługuje wiele interfejsów pulpitu. Niektórzy ludzie lubią myśleć o tym jako o środowisku „zdalnego sterowania”, z wyjątkiem tego, że serwer terminali może pomieścić wielu użytkowników” zdalnie sterujących ” w tym samym czasie, przy czym każdy użytkownik robi coś zupełnie innego.
aby serwer terminali mógł obsługiwać wiele sesji użytkownika, konieczne było wprowadzenie do niego pewnych zmian za pomocą zwykłego oprogramowania Microsoft Windows server. Istnieją dwie podstawowe różnice między zwykłym serwerem Windows i jednym z zainstalowanym serwerem terminali:
- gdy Terminal Server jest zainstalowany na serwerze Windows 2003, niektóre podstawowe komponenty systemu operacyjnego Windows są modyfikowane tak, aby obsługiwały wiele jednoczesnych interfejsów użytkownika. Na przykład menedżer pamięci wirtualnej i Menedżer obiektów są modyfikowane tak, aby obsługiwały wiele jednoczesnych interfejsów pulpitu bez nieporozumień. Są to poważne modyfikacje, wymagające ponownego uruchomienia systemu po zainstalowaniu serwera terminali.
- po zainstalowaniu serwera terminali dodawane są nowe usługi i komponenty, które umożliwiają serwerowi obsługę wielu sesji użytkownika. Najważniejszą z nich jest usługa „Terminal Server”. Usługa ta, działająca głęboko wewnątrz serwera, odpowiada za łączenie wielu sesji użytkownika z systemem operacyjnym. Jest również odpowiedzialny za funkcje takie jak tworzenie sesji, odbieranie użytkowników i kończenie sesji.
Komponenty serwera terminali
chociaż wydaje się, że serwer terminali jest w zasadzie uwielbionym systemem PCAnywhere, w rzeczywistości jest to złożony system składający się z kilku różnych komponentów, podsystemów i interfejsów. Bardziej kompletny schemat komponentów serwera terminali przedstawiono na rysunku 2.1. Zapoznaj się z nim, czytając kilka następnych sekcji opisujących każdy komponent, który składa się na Windows 2003 Terminal Server.
rysunek 2.1: Terminal Server 2003 components
jądro Windows Server 2003
przypominamy sobie, że kluczowym elementem każdego środowiska obliczeniowego opartego na serwerze jest system operacyjny dla wielu użytkowników. W systemie Windows Server 2003 system ten jest kontrolowany przez jądro.
Windows Server 2003 potrzebuje sposobu na oddalenie krytycznych komponentów systemu operacyjnego od wszystkich szalonych użytkowników. Aby to osiągnąć, procesy Windows działają w jednym z dwóch trybów: tryb użytkownika lub tryb jądra. Wracając do treningu Windows NT, pamiętaj, że aplikacja trybu użytkownika nie może zapisywać Bezpośrednio do pamięci systemu operacyjnego. Zamiast tego ma pełny dostęp do własnej pamięci o pojemności 4 GB. Komponent systemu operacyjnego o nazwie virtual memory manager (który sam działa w trybie jądra) kontroluje to wszystko i zapisuje do pamięci systemowej w imieniu aplikacji trybu użytkownika.
w środowiskach serwerów terminali separacja aplikacji trybu użytkownika i trybu jądra pozwala systemowi oddzielić i odizolować użytkowników. Awaria aplikacji jednego użytkownika nie zniszczy całego systemu. (Oczywiście myślisz, że awaria aplikacji może zniszczyć system, jednak zwykle jest to związane ze sterownikami urządzeń, które działają w trybie jądra.)
w” standardowym ” (tj. serwerze nie-terminalowym) środowisku Windows, w którym tylko jeden użytkownik loguje się interaktywnie, wszystkie procesy trybu jądra żyją szczęśliwie razem w jednym obszarze pamięci i przestrzeni nazw. Jednak w środowiskach wielu użytkowników, takich jak Terminal Server, to Udostępnianie nie będzie działać, ponieważ żądania z sesji różnych użytkowników mogą ze sobą kolidować. Jądro na serwerze terminalowym jest więc świadome wielu sesji; utrzymuje sesję każdego użytkownika osobno z izolowanymi procesami i pamięcią. Windows Server 2003 wprowadza pewne zmiany do jądra, gdy komponent Terminal Server jest zainstalowany, aby to osiągnąć.
po pierwsze, serwer umieszcza część przestrzeni adresowej jądra w pamięci wirtualnej. Pozwala to na poprawne przetwarzanie sprzecznych żądań w środowisku dla jednego użytkownika w środowisku dla wielu użytkowników, a także na ładowanie wielu instancji sterowników urządzeń w trybie jądra i korzystanie z nich przez wielu użytkowników (powód, dla którego jeden użytkownik może technicznie zawiesić cały system).
niektóre procesy systemowe nie są specyficzne dla sesji, co oznacza, że wszyscy użytkownicy we wszystkich sesjach będą potrzebować do nich dostępu. Procesy te są przechowywane w jednym (globalnym) obszarze pamięci współdzielonym przez wszystkich użytkowników.
efektem ubocznym udostępniania takich procesów w środowisku serwera terminali jest to, że czasami napotkasz procesy, które nie są „świadome sesji.”Jednym z potencjalnych (i zabawnych) rezultatów mogą być komunikaty o błędach, które są wyświetlane na konsoli serwera z aplikacji uruchomionych w ramach sesji użytkownika. Ponieważ zazwyczaj w serwerowni nie ma nikogo, kto mógłby potwierdzić wiadomość, istnieje możliwość uniemożliwienia kontynuowania aplikacji użytkownika.
usługa usług terminalowych
„usługa usług terminalowych” odnosi się do zwykłej usługi systemu Windows (Start | Narzędzia administracyjne | usługi) o nazwie „Usługi terminalowe.”W świecie rzeczywistym ludzie zwykle nazywają ją” usługą terminalową „i używają terminu” Serwer Terminalowy ” w odniesieniu do serwera Windows, na którym działa usługa terminalowa.
jeśli jądro dla wielu użytkowników jest podstawą obliczeń opartych na serwerze w systemie Windows Server 2003, usługa terminala jest kamieniem węgielnym. Ta usługa (ładowana przez Terms.dll) jest ładowany zaraz po uruchomieniu jądra. Po załadowaniu konsoli serwera (sterowników klawiatury, wideo i myszy) usługa terminala inicjuje podsystem Menedżera sesji (smss.exe) odpowiedzialny za zarządzanie i śledzenie wszystkich sesji użytkownika na serwerze.
sesje serwera terminali
nowa sesja jest tworzona za każdym razem, gdy użytkownik loguje się na serwer terminali. Sesja zasadniczo składa się z wirtualnego pulpitu, z którego użytkownik może uruchamiać aplikacje i z którym może wchodzić w interakcje tak samo jak ze stacją roboczą. Sesji serwera nie należy mylić z konsolą serwera, ponieważ sesja nie jest zdalnym sterowaniem konsoli, ale w rzeczywistości nowym pulpitem oddzielonym od konsoli.
za każdym razem, gdy użytkownik łączy się z serwerem terminali i tworzy ten „wirtualny pulpit”, tworzony jest unikalny numer ID sesji, aby odróżnić użytkownika (a tym samym procesy użytkownika) od wszystkich innych sesji i użytkowników. Identyfikatory sesji umożliwiają również serwerowi oddzielenie pamięci dla każdej sesji użytkownika. Gdy użytkownik wyloguje się z klienta usług terminalowych, używana sesja jest usuwana, a procesy i pamięć, które zostały uruchomione i używane przez tę sesję, są usuwane. Każdy serwer terminali śledzi własne identyfikatory sesji i zajmuje się ich wydawaniem, śledzeniem i usuwaniem.
ponieważ sesje serwera są „wirtualne” (a pamięć i procesy są oddzielone między sesjami), awaria lub blokada aplikacji w jednej sesji nie powinna mieć wpływu na żadne inne sesje użytkownika, nawet jeśli inni użytkownicy używają tej samej aplikacji.
jednak kluczowe zdanie to „nie powinno” wpływać na innych użytkowników. Mimo że sesje użytkowników są oddzielne na serwerze, nadal udostępniają zasoby serwera i niektóre segmenty kodu. Jeśli jeden użytkownik wywoła proces, który powoduje, że serwer ma niebieski ekran, będzie to oczywiście miało wpływ na innych użytkowników. Z drugiej strony, proste zdarzenia, takie jak zawieszanie się aplikacji na żądaniu przekroczenia limitu czasu lub awaria programu Microsoft Word, gdy użytkownik otworzy uszkodzony dokument, nie będą widoczne dla innych użytkowników (w ramach własnych sesji) w systemie.
Stany sesji
ponieważ sesja jest tak naprawdę pulpitem użytkownika, czasami sesja może być w różnych stanach, podobnie jak normalna stacja robocza. Na przykład, jeśli użytkownik odejdzie od swojej stacji roboczej na pewien czas, stacja robocza nie zostanie wyłączona. Jest raczej tylko bezczynny, czekając na wejście użytkownika. Sesje serwera terminali zachowują się tak samo i mogą występować w jednym z wielu różnych stanów w zależności od aktywności użytkownika (lub braku aktywności), łączności między Klientem a serwerem oraz ustawień czasu przerwy w sesji.
rysunek 2.2: każdy serwer terminali utrzymuje wiele oddzielnych sesji użytkownika
wszystkie sesje użytkownika na serwerze terminali muszą znajdować się w jednym z następujących sześciu stanów:
- Active to aktywny i aktywny użytkownik. Użytkownik wchodzi w interakcję z sesją serwera terminali i nie miał okresu nieaktywności lub odłączenia sieci od serwera. Jest to „normalny” stan sesji.
- Idle to stan, w który wchodzi sesja, gdy nie ma danych wejściowych od użytkownika przez określony czas.
- rozłączone sesje występują, gdy procesy i programy sesji „live” są uruchomione, ale żaden klient RDC nie jest połączony. (Jeśli pominięto pierwszy rozdział, nowa nazwa klienta RDP to” klient RDC”.) Najczęstszą przyczyną jest rozłączenie sieci lub gdy użytkownik kliknie „X” w prawym górnym rogu oprogramowania klienta RDC. Użytkownik może ponownie połączyć się z rozłączoną sesją, aby przywrócić ją do stanu „aktywnego” (i kontynuować pracę tam, gdzie ją przerwał). Pomyśl o odłączonej sesji jak o zablokowanej stacji roboczej, z tym wyjątkiem, że użytkownik może „odblokować” swoją stację roboczą z dowolnego komputera w budynku.
- połączone sesje są w stanie, w którym urządzenie klienckie jest podłączone do sesji serwera, ale żaden użytkownik nie jest zalogowany, podobnie jak znak zachęty CTRL+ALT+DEL na stacji roboczej.
- Down jest tymczasowym stanem, w którym sesja jest zamykana, a procesy w jej obrębie są zabijane. Down jest ostatnim stanem sesji przed jej zakończeniem.
- Listen to stan widoczny tylko na portach słuchacza, które są gotowe do przyjmowania połączeń przychodzących. Ten stan nie dotyczy regularnych sesji. Dotyczy to raczej procesów uruchomionych na serwerze, które oczekują (nasłuchują) nowych żądań połączenia sesji.
w większości środowisk administratorzy konfigurują sesje z różnymi limitami czasu. Możesz ograniczyć czas otwarcia pojedynczej sesji lub automatycznie przekonwertować sesję bezczynną na sesję rozłączoną. Limity czasu pomagają ograniczyć czas, jaki serwer spędza na wykonywaniu procesów dla użytkowników, którzy naprawdę nie pracują na serwerze. Omówimy dokładne techniki i strategie ich konfigurowania w dalszej części tej książki.
porty połączeń i słuchacze
każda sesja RDP użytkownika łączy się z serwerem terminali za pośrednictwem portu połączenia. Port połączenia (zwykle nazywany tylko „połączeniem”) to wirtualny port na serwerze powiązany z określoną kombinacją kart sieciowych i protokołów.
jeden port połączenia serwera terminali jest tworzony automatycznie po zainstalowaniu komponentu serwera terminali. Domyślnie umożliwia on każdemu użytkownikowi z grupy „Użytkownicy pulpitu zdalnego” łączenie się z sesjami serwera terminali na serwerze za pomocą dowolnej karty sieciowej. Jednak mimo że domyślny port połączenia działa z dowolną kartą sieciową z zainstalowanym TCP / IP, porty połączeń serwera terminali są tak naprawdę specyficzne dla karty sieciowej. Serwer z wieloma kartami sieciowymi można skonfigurować tak, aby miał wiele portów przyłączeniowych serwera terminali—po jednym dla każdej karty. W rzeczywistości każde połączenie może mieć zupełnie inne właściwości i uprawnienia.
rysunek 2.3: serwer terminali z wieloma portami połączeń
połączenia serwera terminali i ich powiązane słuchacze mogą być konfigurowane w dwóch miejscach. Pierwszym z nich jest przystawka MMC Terminal Services Configuration (TSC). Za pomocą TSC można skonfigurować opcje połączeń z serwerem terminali opartych na protokole RDP, takie jak Ustawienia, Uprawnienia i Karta sieciowa, przez którą połączenie jest ważne. Drugim sposobem konfiguracji połączeń z serwerem terminali jest użycie obiektu zasad grupy Active Directory (GPO) w domenie Windows 2003. Ta funkcjonalność umożliwia przypisywanie połączeń dla wielu serwerów zawartych w OU w usłudze Active Directory.
słuchacze
każdy port połączenia serwera terminala ma subkomponent o nazwie „słuchacz.”Komponent nasłuchujący” nasłuchuje ” na określonej karcie sieciowej i kombinacji protokołów, dla których skonfigurowany jest port połączenia. Gdy użytkownik chce nawiązać nową sesję na serwerze, korzysta z oprogramowania klienta RDC, aby skontaktować się z serwerem. Słuchacz serwera odbiera żądanie klienta i przekazuje je do menedżera sesji. Następnie słuchacz wraca do słuchania, aby uzyskać więcej żądań połączenia.
kanały wirtualne
jak już wcześniej omówiliśmy, protokół RDP firmy Microsoft działający na TCP/IP jest faktycznym protokołem łączącym użytkowników z sesjami serwera. Wspomnieliśmy również, że ten protokół może obsługiwać więcej niż tylko czyste wirtualne pulpity. RDP umożliwia zdalne przesyłanie dźwięku sesji z serwera do głośników urządzenia klienckiego. Pozwala również na to, aby urządzenia podłączone do portów szeregowych klienta wyglądały tak, jakby były podłączone do serwera. Te „dodatki” są dostępne za pośrednictwem wirtualnych kanałów RDP. Kanał wirtualny to po prostu mechanizm przenoszenia danych między sesją serwera terminali a klientem. Domyślnie protokół RDP w serwerze terminali 2003 zawiera kilka kanałów wirtualnych.
- Audio: Zdarzenia dźwiękowe generowane na sesji serwera są przekierowywane przez protokół RDP do urządzenia klienckiego RDC, gdzie są odtwarzane na głośnikach klienta.
- dyski klienckie: lokalne dyski na urządzeniu klienckim są udostępniane serwerowi, dzięki czemu użytkownicy mogą uzyskać dostęp zarówno do dysków serwerowych, jak i do dysków lokalnych urządzeń klienckich w ramach swoich zdalnych sesji.
- drukarki: drukarki dostępne dla urządzenia klienckiego przed uruchomieniem sesji na serwerze terminali są udostępniane użytkownikom z poziomu ich sesji serwerowych. Użytkownicy mogą następnie drukować na standardowych drukarkach systemu Windows, w tym drukarkach bezpośrednio podłączonych do urządzeń klienckich.
- Porty Szeregowe: wirtualny kanał portu szeregowego umożliwia dostęp do urządzeń podłączonych do portu szeregowego urządzenia klienta za pośrednictwem zdalnych sesji serwera terminali.
- Schowek Windows: w celu integracji aplikacji lokalnych z sesjami serwera terminali zdalnych, wirtualny kanał schowka Windows synchronizuje zawartość schowka serwera terminali zdalnych z zawartością schowka urządzenia klienta. Użytkownicy mogą płynnie wycinać i wklejać między aplikacjami lokalnymi i zdalnymi.
jeśli domyślne kanały wirtualne nie spełniają Twoich potrzeb, zestawy SDK MSDN i Windows Server 2003 zawierają informacje na temat pisania własnych niestandardowych kanałów wirtualnych. Kanał wirtualny to połączenie dwóch komponentów-komponentu po stronie klienta i komponentu po stronie serwera. Oba mogą wysyłać i odbierać dane za pośrednictwem kanału wirtualnego, umożliwiając komunikację jedno – lub dwukierunkową. Kanały wirtualne mogą być również niezależne od RDP, co oznacza, że można dostosować do środowiska bez aktualizacji lub zmiany rzeczywistego oprogramowania klienta lub serwera.
po co skupiać się na wirtualnych kanałach? Chociaż nie jest to książka dla programistów i prawdopodobnie nigdy nie stworzysz własnego kanału Wirtualnego, ważne jest, abyś zrozumiał, jak działają. Prawie każdy dodatek innej firmy do serwera terminali korzysta z kanałów wirtualnych. Zrozumienie, jak działają kanały wirtualne, pomoże Ci rozwiązać problemy z produktami innych firm, które niewątpliwie napotkasz w swojej karierze serwera terminali.
Mając to na uwadze, przyjrzyjmy się ostatecznie architekturze kanału Wirtualnego. Patrz rysunek 2.4.
rysunek 2.4: Architektura kanału wirtualnego serwera terminali 2003
komponent kanału wirtualnego po stronie serwera jest zwykle plikiem wykonywalnym uruchomionym na serwerze terminali. Komponent ten musi być komponentem trybu użytkownika, ponieważ serwer używa identyfikatora sesji do określenia, do której sesji po stronie Klienta powinien transmitować i odbierać dane.
komponent kanału wirtualnego po stronie klienta jest zwykle biblioteką DLL dostarczaną przez firmę Microsoft, dostawcę oprogramowania innej firmy lub na zamówienie przez programistów. DLL musi być załadowany na komputerze klienckim, gdy program kliencki RDC jest uruchomiony i rozpoczyna połączenie z serwerem. W większości przypadków jest to skryptowane lub wykonywane programowo na poziomie klienta.
jak wszystkie te komponenty pasują do siebie
teraz, gdy rozumiesz każdy z różnych komponentów serwera terminali, zobaczmy, jak wszystkie pasują do siebie. Postępuj zgodnie z procesem, który odbywa się w miarę nawiązywania połączenia z klientem, odnosząc się do rysunku 2.5.
rysunek 2.5: ustanawia się nową sesję
- zanim cokolwiek się stanie, słuchacze na serwerze terminali obserwują określone kombinacje kart sieciowych, adresu IP i portów TCP w celu rozpoczęcia sesji.
- użytkownik decyduje się na użycie aplikacji zdalnej, więc uruchamia swojego klienta RDC i żąda połączenia z ” server1.”Jej klient RDC sprawdza, jakie biblioteki DLL kanałów wirtualnych są zainstalowane.
- w tym środowisku nazwa „server1” odnosi się do adresu IP 192.168.14.42 (który w tym serwerze jest NIC #1). Klient RDC użytkownika wysyła żądanie połączenia sesji do 192.168.14.42.
- słuchacz serwera odbiera żądanie i przekazuje je menedżerowi sesji. Gdy Menedżer sesji przejmuje kontrolę, słuchacz wznawia słuchanie, aby uzyskać więcej sesji.
- serwer negocjuje z żądającym klienta poziom szyfrowania i możliwości kanału Wirtualnego.
- użytkownik jest następnie uwierzytelniany w domenie, a jego prawa są sprawdzane pod kątem dostępu do połączenia.
- licencje Microsoft są weryfikowane. Najpierw weryfikowana jest licencja dostępu klienta serwera, a następnie weryfikowana jest licencja dostępu klienta serwera terminala. (Licencjonowanie jest szczegółowo opisane w rozdziale 4.)
- w tym momencie sesja użytkownika jest gotowa do rozpoczęcia. Uruchamiane są skrypty logowania i ładowany jest pulpit.
w systemie Windows Server 2003 Port słuchacza jest powiązany z połączeniem”.”W rzeczywistości te dwa terminy są prawie wymienne. Skonfigurujesz właściwości połączenia, a port słuchacza połączenia zostanie odpowiednio zmodyfikowany.
teraz, gdy omówiliśmy wszystkie komponenty składające się na serwer terminali Windows 2003, przejdź do wymagań.