Cum funcționează Terminal Server Pentru Windows Server 2003

un Terminal Server este practic același cu sistemul de operare Windows Server obișnuit, cu excepția faptului că în mediile Terminal Server, componentele cheie au fost adăugate sau modificate pentru a oferi suport pentru mai mulți utilizatori simultani.

Microsoft Windows a fost întotdeauna un sistem de operare „multi-utilizator” în sensul că mai mulți utilizatori ar putea fi conectați la un singur server la un moment dat. Cu toate acestea, acești utilizatori au fost conectați la servicii de fișiere sau servicii de imprimantă de pe servere. Au rulat interfețele Windows locale pe computerele lor locale, iar serverul a acceptat o singură interfață desktop prin intermediul tastaturii, mouse-ului și monitorului local. Principala diferență cu Terminal Server este că mai mulți utilizatori își pot rula propriile sesiuni desktop Windows pe server. Deci Terminal Server este „multi-user”, în sensul că acceptă mai multe interfețe desktop. Unora le place să se gândească la acest lucru ca la un mediu de „telecomandă”, cu excepția faptului că serverul Terminal poate găzdui mulți utilizatori „controlând de la distanță” în același timp, fiecare utilizator făcând ceva complet diferit.

pentru ca Terminal Server să accepte mai multe sesiuni de utilizatori, trebuiau făcute unele modificări din software-ul obișnuit Microsoft Windows server. Există două diferențe fundamentale între un server Windows obișnuit și unul cu Terminal Server instalat:

  • când Terminal Server este instalat pe un server Windows 2003, anumite componente de bază ale sistemului de operare Windows sunt modificate pentru a suporta mai multe interfețe de utilizator simultane. De exemplu, managerul de memorie virtuală și managerul de obiecte sunt modificate pentru a suporta mai multe interfețe desktop simultane, fără a se confunda. Acestea sunt modificări majore, care necesită să reporniți sistemul după instalarea Terminal Server.
  • noi servicii și componente sunt adăugate atunci când este instalat Terminal Server care permit serverului să accepte mai multe sesiuni de utilizator. Cel mai important dintre acestea este serviciul „Terminal Server”. Acest serviciu, care rulează adânc în interiorul serverului, este responsabil pentru interfațarea mai multor sesiuni de utilizator cu sistemul de operare. De asemenea, este responsabil pentru funcții precum crearea sesiunilor, primirea utilizatorilor și încheierea sesiunilor.

componente Terminal Server

deși se pare că serverul Terminal este în esență un sistem pcAnywhere glorificat, este de fapt un sistem complex format din mai multe componente, subsisteme și interfețe diferite. O diagramă mai completă a componentelor serverului Terminal este prezentată în figura 2.1. Consultați-l în timp ce citiți următoarele secțiuni care descriu fiecare componentă care alcătuiește Windows 2003 Terminal Server.

figura 2.1: Terminal Server 2003 componente

Kernel-ul Windows Server 2003

vă va aminti că o componentă cheie a oricărui mediu de calcul bazat pe server este un sistem de operare multi-utilizator. În Windows Server 2003, acest sistem este controlat de kernel.

Windows Server 2003 are nevoie de o modalitate de a Distanța componentele critice ale sistemului de operare de toți utilizatorii nebuni. Pentru a realiza acest lucru, procesele Windows funcționează într-unul din cele două moduri: Modul utilizator sau modul kernel. Gândindu-vă la antrenamentul Windows NT, vă veți aminti că o aplicație Mod utilizator nu poate scrie direct în memoria sistemului de operare. În schimb, are acces complet la propriul spațiu de memorie de 4 GB. O componentă a sistemului de operare numită manager de memorie virtuală (care rulează în sine în modul kernel) controlează toate acestea și scrie în memoria sistemului în numele aplicației în modul utilizator.

în mediile serverului Terminal, separarea aplicațiilor în modul utilizator și modul kernel permite sistemului să separe și să izoleze utilizatorii. Un accident de aplicație al utilizatorilor nu va doborî întregul sistem. (Desigur, te gândești că un accident de aplicație poate lua în jos un sistem, cu toate acestea, care este de obicei legat de drivere de dispozitiv care rulează în modul kernel.)

în mediile Windows „standard” (adică server non-Terminal) în care doar un singur utilizator se conectează interactiv, toate procesele în modul kernel trăiesc fericiți împreună într-o zonă de memorie și spațiu de nume. Cu toate acestea, în medii cu mai mulți utilizatori, cum ar fi Terminal Server, Această partajare nu va funcționa, deoarece solicitările din sesiunile diferiților utilizatori ar putea intra în conflict între ele. Kernel-ul de pe un Server Terminal este, prin urmare, conștient de mai multe sesiuni; se păstrează sesiunea fiecărui utilizator separat cu procese izolate și memorie. Windows Server 2003 face unele modificări la kernel-ul atunci când componenta Terminal Server este instalat pentru a realiza acest lucru.

în primul rând, serverul plasează o parte din spațiul de adrese de memorie al nucleului în memoria virtuală. Acest lucru permite ceea ce ar fi cereri conflictuale într-un mediu cu un singur utilizator să fie procesat corect în mediul cu mai mulți utilizatori și pentru ca mai multe instanțe de drivere de dispozitiv în modul kernel să fie încărcate și utilizate de mai mulți utilizatori (motivul pentru care un utilizator poate bloca tehnic întregul sistem).

unele procese de sistem nu sunt specifice sesiunii, ceea ce înseamnă că toți utilizatorii din toate sesiunile vor avea nevoie de acces la ele. Aceste procese sunt stocate într-o singură zonă de memorie (globală) partajată de toți utilizatorii.

un efect secundar al proceselor de partajare ca aceasta într-un mediu Terminal Server este că, uneori, veți rula în procese care nu sunt „sesiune conștient.”Un rezultat potențial (și cam amuzant) poate fi mesajele de eroare care sunt afișate pe consola serverului din aplicațiile care rulează în cadrul sesiunii unui utilizator. Deoarece de obicei nu există nimeni în camera serverului care să recunoască mesajul, există potențialul de a împiedica continuarea aplicației unui utilizator.

serviciul Terminal Services

„serviciul Terminal Services” se referă la un serviciu Windows obișnuit (Start | Instrumente Administrative | servicii) numit „Terminal Services.”În lumea reală, oamenii se referă de obicei la acesta ca „Terminal Service” și folosesc termenul „Terminal Server” atunci când se referă la un Server Windows care rulează serviciul Terminal.

dacă nucleul multi-utilizator este fundamentul calculului bazat pe server în Windows Server 2003, serviciul Terminal este piatra de temelie. Acest serviciu (încărcat prin termserv.dll) este încărcat imediat după kernel-ul vine on-line. După încărcarea consolei serverului (drivere de tastatură, video și mouse), serviciul Terminal inițiază subsistemul managerului de sesiuni (SMS-uri.exe) responsabil pentru gestionarea și urmărirea tuturor sesiunilor de utilizator de pe server.

sesiuni Terminal Server

se creează o nouă sesiune de fiecare dată când un utilizator se conectează la Terminal Server. O sesiune constă în esență dintr-un desktop virtual de pe care utilizatorul poate rula aplicații și cu care poate interacționa la fel ca și cu o stație de lucru. O sesiune de server nu trebuie confundată cu consola de server, deoarece o sesiune nu este o telecomandă a consolei, ci de fapt un desktop nou separat de consolă.

de fiecare dată când un utilizator se conectează la un Server Terminal și creează acest „desktop virtual”, este creat un număr unic de identificare a sesiunii pentru a diferenția utilizatorul (și, prin urmare, procesele utilizatorului) de toate celelalte sesiuni și utilizatori. ID-urile de sesiune permit, de asemenea, serverului să păstreze memoria separată pentru sesiunea fiecărui utilizator. Când un utilizator se deconectează de la un client Terminal Services, sesiunea care a fost utilizată este ștearsă și procesele și memoria care au fost lansate și utilizate de acea sesiune sunt eliminate. Fiecare server Terminal urmărește propriile ID-uri de sesiune și gestionează sarcina de a le emite, urmări și elimina.

deoarece sesiunile de server sunt „virtuale” (iar memoria și procesele sunt păstrate separat între sesiuni), un accident de aplicație sau blocare într-o singură sesiune nu ar trebui să afecteze alte sesiuni de utilizator, chiar dacă alți utilizatori folosesc aceeași aplicație.

cu toate acestea, fraza cheie aici este „nu ar trebui” să afecteze alți utilizatori. Chiar dacă sesiunile de utilizator sunt separate pe un server, acestea Partajează în continuare resursele serverului și anumite segmente de cod. Dacă un utilizator invocă un proces care determină serverul să aibă ecran albastru, Acest lucru va avea în mod evident un efect asupra celorlalți utilizatori. Pe de altă parte, aparițiile simple, cum ar fi o aplicație agățată de o solicitare expirată sau Microsoft Word care se blochează atunci când un utilizator deschide un document corupt, nu vor fi văzute de ceilalți utilizatori (în cadrul propriilor sesiuni) din sistem.

stări de sesiune

deoarece o sesiune este într-adevăr desktopul unui utilizator, există momente în care o sesiune poate fi în diferite stări diferite, la fel ca o stație de lucru normală. De exemplu, dacă un utilizator se îndepărtează de stația de lucru pentru o perioadă de timp, stația de lucru nu se oprește. Mai degrabă, este doar inactiv, așteptând intrarea utilizatorului. Sesiunile Terminal server se comportă la fel și pot fi într-una din mai multe stări diferite, în funcție de activitatea (sau inactivitatea) utilizatorului, de conectivitatea dintre client și server și de setările de expirare a sesiunii.

figura 2.2: fiecare server Terminal menține multe sesiuni de utilizator separate

toate sesiunile de utilizator de pe un Server Terminal trebuie să fie într-una din următoarele șase stări:

  • Active este un utilizator live și activ. Utilizatorul interacționează cu sesiunea Terminal Server și nu a avut o perioadă de inactivitate sau o deconectare de rețea de la server. Aceasta este starea „normală” a unei sesiuni.
  • Idle este starea în care intră o sesiune atunci când nu există nicio intrare de la utilizator pentru o anumită perioadă de timp.
  • sesiunile deconectate apar atunci când procesele și programele unei sesiuni „live” rulează, dar nu este conectat niciun client RDC. (Dacă ați omis primul capitol,” Client RDC ” este noul nume pentru clientul RDP.) Cauza comună este o deconectare de rețea sau atunci când un utilizator face clic pe „X” în colțul din dreapta sus al software-ului client RDC. Un utilizator se poate reconecta la sesiunea sa deconectată pentru a o readuce la o stare „activă” (și pentru a relua cu munca sa chiar de unde a rămas). Gândiți-vă la o sesiune deconectată ca o stație de lucru blocată, cu excepția faptului că utilizatorul își poate „debloca” stația de lucru de pe orice computer din clădire.
  • sesiunile conectate sunt într-o stare în care un dispozitiv client este conectat la o sesiune de server, dar niciun utilizator nu este conectat, la fel ca promptul CTRL+ALT+DEL pe o stație de lucru.
  • Down este o stare temporară în care o sesiune este încheiată și procesele din cadrul sesiunii sunt ucise. Down este starea finală a unei sesiuni înainte de a se termina.
  • Listen este o stare văzută doar pe porturile ascultătorilor care sunt gata să accepte conexiunile de intrare. Această stare nu se aplică sesiunilor regulate. Mai degrabă, se aplică proceselor care rulează pe server care așteaptă (ascultă) noi solicitări de conectare la sesiune.

în majoritatea mediilor, administratorii configurează sesiuni cu diferite timeout-uri. Puteți limita perioada de timp în care o singură sesiune poate fi deschisă sau puteți converti automat o sesiune inactivă într-o sesiune deconectată. Timeout-urile ajută la limitarea timpului pe care serverul îl petrece executând procese pentru utilizatorii care într-adevăr nu lucrează pe server. Vom acoperi tehnicile și strategiile exacte pentru configurarea acestora mai târziu în această carte.

porturi de conectare și ascultători

fiecare sesiune RDP a utilizatorului se conectează la serverul Terminal printr-un port de conexiune. Un port de conexiune (denumit în mod obișnuit doar „conexiune”) este un port virtual de pe server asociat cu o combinație specifică de carduri de rețea și protocol.

un port de conectare Terminal Server este creat automat atunci când este instalată componenta Terminal Server. În mod implicit, permite oricărui utilizator din grupul „Utilizatori desktop la distanță” să se conecteze la sesiunile Terminal Server de pe server prin orice placă de rețea. Cu toate acestea, chiar dacă portul de conexiune implicit Funcționează cu orice placă de rețea cu TCP/IP instalat, porturile de conectare Terminal Server sunt într-adevăr specifice plăcii de rețea. Puteți configura un server cu mai multe carduri de rețea pentru a avea mai multe porturi de conectare Terminal Server—câte unul pentru fiecare card. De fapt, fiecare conexiune poate avea proprietăți și permisiuni complet diferite.

figura 2.3: un server Terminal cu mai multe porturi de conectare

conexiuni Terminal Server și ascultătorii lor asociați pot fi configurați în două locuri. Primul este prin snap-in-ul MMC Terminal Services Configuration (TSC). Puteți utiliza TSC pentru a configura opțiunile pentru conexiunile de server terminal bazate pe RDP, cum ar fi Setări, Permisiuni și pe ce placă de rețea este validă o conexiune. A doua modalitate de a configura conexiunile Terminal Server este printr-un obiect de politică de grup Active Directory (GPO) într-un domeniu Windows 2003. Această funcționalitate vă permite să atribuiți conexiuni pentru mai multe servere conținute cu un OU în Active Directory.

ascultători

fiecare port de conexiune Terminal Server are o subcomponentă numită „ascultător.”Componenta ascultătorului” ascultă ” pe o anumită placă de rețea și combinație de protocol pentru care este configurat portul de conectare. Când un utilizator dorește să stabilească o nouă sesiune pe server, își folosește software-ul client RDC pentru a contacta serverul. Ascultătorul serverului preia cererea clientului și o transmite managerului de sesiune. Ascultătorul se întoarce apoi la ascultare pentru mai multe cereri de conectare.

canale virtuale

după cum am discutat anterior, protocolul RDP Microsoft care rulează pe TCP/IP este protocolul real care conectează utilizatorii la sesiunile serverului. De asemenea, am menționat că acest protocol poate suporta mai mult decât desktop-uri virtuale pure. RDP permite sesiunea audio de la distanță de la server să fie canalizată către difuzoarele dispozitivului client. De asemenea, permite dispozitivelor conectate la porturile seriale ale clientului să apară ca și cum ar fi conectate la server. Aceste „extra” sunt disponibile prin canalele virtuale ale RDP. Un canal virtual este pur și simplu un mecanism pentru a muta datele înainte și înapoi între o sesiune Terminal Server și un client. În mod implicit, protocolul RDP pe Terminal Server 2003 conține mai multe canale virtuale.

  • Audio: Evenimentele sonore generate pe sesiunea serverului sunt redirecționate prin protocolul RDP către dispozitivul client RDC, unde sunt redate pe difuzoarele clientului.
  • unități Client: unitățile de disc locale de pe dispozitivul client sunt puse la dispoziția serverului, astfel încât utilizatorii să poată accesa atât unitățile de server, cât și unitățile de dispozitiv client locale în cadrul sesiunilor lor la distanță.
  • Imprimante: imprimantele disponibile pentru dispozitivul client înainte de lansarea unei sesiuni pe un Server Terminal sunt puse la dispoziția utilizatorilor din cadrul sesiunilor lor de server. Utilizatorii pot imprima apoi la imprimantele Windows standard, inclusiv imprimantele atașate direct la dispozitivele lor client.
  • porturi seriale: canalul virtual al portului serial permite accesul dispozitivelor conectate la portul serial al unui dispozitiv client prin sesiunile sale de server Terminal la distanță.
  • Clipboard Windows: pentru a integra aplicații locale cu sesiuni de server terminal la distanță, canalul virtual clipboard Windows sincronizează conținutul clipboard-ului serverului terminal la distanță cu conținutul clipboard-ului dispozitivului client. Utilizatorii pot tăia și lipi perfect între aplicațiile locale și la distanță.

dacă canalele virtuale implicite nu corespund nevoilor dvs., MSDN și SDK-urile Windows Server 2003 conțin informații despre scrierea propriilor canale virtuale personalizate. Un canal virtual este o combinație de două componente—o componentă din partea clientului și o componentă din partea serverului. Ambele pot trimite și primi date prin canalul virtual, permițând comunicarea într-un singur sens sau în două sensuri. Canalele virtuale pot fi, de asemenea, independente de RDP, ceea ce înseamnă că puteți personaliza în mediul dvs. fără a actualiza sau schimba software-ul client sau server real.

de ce toate se concentreze pe canale virtuale? Deși aceasta nu este o carte pentru dezvoltatori și probabil că nu vă veți dezvolta niciodată propriul canal virtual, este esențial să înțelegeți cum funcționează. Doar despre fiecare terță parte add-on produs pentru Terminal Server face uz de canale virtuale. Înțelegerea modului în care funcționează canalele virtuale vă va ajuta să depanați produsele terțe pe care le veți întâlni, fără îndoială, în cariera dvs. de server Terminal.

acestea fiind spuse, să aruncăm o privire finală asupra arhitecturii unui canal virtual. Vezi figura 2.4.

figura 2.4: arhitectura canalului Virtual Terminal Server 2003

componenta canalului virtual de pe server este de obicei un executabil care rulează pe serverul Terminal. Această componentă trebuie să fie o componentă în modul utilizator, deoarece serverul folosește ID-ul sesiunii pentru a determina la ce sesiune din partea clientului ar trebui să transmită și să primească date.

componenta canalului virtual din partea clientului este de obicei un DLL furnizat de Microsoft, furnizorul de software terț sau scris personalizat de dezvoltatorii dvs. DLL-ul trebuie încărcat pe computerul client atunci când programul client RDC este lansat și începe conexiunea la server. În cele mai multe cazuri, acest lucru este scriptat sau făcut programatic la nivel de client.

cum se potrivesc toate aceste componente

acum că înțelegeți fiecare dintre diferitele componente ale serverului Terminal, să vedem cum se potrivesc toate împreună. Urmați procesul care are loc ca o conexiune client se face, referindu-se la figura 2.5.

figura 2.5: se stabilește o nouă sesiune

  1. înainte de a se întâmpla ceva, ascultătorii de pe serverul Terminal urmăresc anumite plăci de rețea, adrese IP și combinații de porturi TCP pentru cererile de intrare pentru a începe sesiunile.
  2. un utilizator decide să utilizeze o aplicație la distanță, așa că lansează clientul RDC și solicită o conexiune la „server1.”Clientul ei RDC verifică pentru a vedea ce DLL-uri de canale virtuale sunt instalate.
  3. în acest mediu, numele „server1” se referă la adresa IP 192.168.14.42 (care se întâmplă să fie NIC #1 în acest server). Clientul RDC al utilizatorului trimite o cerere de conectare la sesiune la 192.168.14.42.
  4. ascultătorul serverului preia cererea și o predă managerului de sesiune. Pe măsură ce managerul de sesiune preia, ascultătorul reia ascultarea pentru mai multe sesiuni.
  5. serverul negociază cu clientul solicitant pentru nivelul său de criptare și capacitățile canalului virtual.
  6. utilizatorul este apoi autentificat în domeniu și drepturile sale sunt verificate pentru accesul la conexiune.
  7. licențele Microsoft sunt verificate. Licența de acces client server este verificată mai întâi și apoi Licența de acces client server Terminal este verificată. (Licențierea este detaliată în Capitolul 4.)
  8. în acest moment, sesiunea utilizatorului este gata să înceapă. Scripturile de conectare rulează și desktopul este încărcat.

în Windows Server 2003, un port ascultător este asociat cu o „conexiune.”De fapt, cei doi termeni sunt aproape interschimbabili. Configurați proprietățile pentru o conexiune, iar portul ascultător al conexiunii este modificat corespunzător.

acum că am acoperit toate componentele care alcătuiesc un server Terminal Windows 2003, apelați la cerințe.

Lasă un răspuns

Adresa ta de email nu va fi publicată.