Terminal Server İzlenecek Yol: Başlangıç, Bağlantı ve Uygulama

Bu makalede, terminal sunucusunun başlatma işlemi açıklanır ve kullanıcı sunucuya bağlanıp bir uygulama çalıştırdığında ne olduğu açıklanır.

Şunlar için geçerlidir: Windows Server 2012 R2
Özgün KB numarası: 186572

Windows Terminal Sunucusu Başlatma

Windows Terminal Sunucusu çekirdek işletim sistemini ön başlatır ve yüklerken, Terminal Server hizmeti (Termsrv.exe) başlatılır ve gelen bağlantıları dinleyen dinleme yığınları (protokol ve aktarım çifti başına bir tane) oluşturur. Her bağlantıya, Terminal Server'da tek bir oturumu temsil etmek için benzersiz bir oturum tanımlayıcısı veya "SessionID" verilir. Bir oturum içinde oluşturulan her işlem, ad alanını başka bir bağlantının ad alanından ayırt etmek için ilişkili SessionID ile "etiketlenmiştir".

Konsol (Terminal Server klavye, fare ve video) oturumu her zaman ilk yüklenen oturumdur ve özel durum istemci bağlantısı olarak değerlendirilir ve SessionID atanır. Konsol oturumu, yapılandırılmış Windows NT ekran, fare ve klavye sürücülerinin yüklü olduğu normal bir Windows NT sistem oturumu olarak başlar.

Terminal Server hizmeti daha sonra istemci bağlantılarını bekleyen iki (varsayılan = 2) boşta istemci oturumu (konsol oturumu oluşturulduktan sonra) oluşturmak için Windows NT Oturum Yöneticisi'ni (Smss.exe) çağırır. Boşta oturumları oluşturmak için, Oturum Yöneticisi Windows NT tabanlı istemci/sunucu çalışma zamanı alt sistemi işlemini (Csrss.exe) yürütür ve bu işleme yeni bir SessionID atanır. CSRSS işlemi ayrıca Winlogon (Winlogon.exe) işlemini ve yeni ilişkili SessionID altında Win32k.sys (Window Manager ve grafik cihaz arabirimi - GDI) çekirdek modülünü çağırır. Değiştirilen Windows NT görüntü yükleyicisi, bu Win32k.sys görüntü üst bilgisinde önceden tanımlanmış bir bit kümesiyle SessionSpace tarafından yüklenebilir görüntü olarak tanır. Daha sonra, Win32k.sys henüz yüklenmemişse, görüntünün kod bölümünü fiziksel belleğe, bu oturumun sanal çekirdek adres alanından işaretçilerle yeniden konumlandırır. Tasarım gereği, bellekte önceden yüklenmiş bir görüntünün koduna (Win32k.sys) her zaman eklenir. Örneğin, herhangi bir etkin uygulama veya oturumdan.

Bu görüntünün veriler (veya paylaşılmayan) bölümü, yeni oluşturulan SessionSpace sayfalanabilir çekirdek belleği bölümünden yeni oturuma ayrılır. Konsol oturumundan farklı olarak, Terminal Server İstemcisi oturumları ekran, klavye ve fare için ayrı sürücüler yükleyecek şekilde yapılandırılır.

Yeni görüntü sürücüsü, Uzak Masaüstü Protokolü (RDP) görüntüleme cihazı Sürücüsü Tsharedd.dll. Fare ve klavye sürücüleri, termdd.sys birden çok örnek yığını yöneticisi aracılığıyla yığınla iletişim kurar. Termdd.sys, Wdtshare.sys RDP sürücüsüne ve rdp sürücüsünden fare ve klavye etkinliği için iletileri gönderir. Bu sürücüler RDP istemci oturumunun uzaktan kullanılabilir ve etkileşimli olmasını sağlar. Son olarak Terminal Server, RDP protokolü için, 3389 numaralı TCP bağlantı noktası üzerindeki RDP istemci bağlantılarını dinleyen birden çok örnek yığın yöneticisi (Termdd.sys) tarafından yönetilen bir bağlantı dinleyicisi iş parçacığı da çağırır.

Bu noktada, CSRSS işlemi kendi SessionID ad alanı altında yer alır ve gerektiğinde işlem başına verileri örneği oluşturulur. Bu SessionID'nin içinden oluşturulan tüm işlemler CSRSS işleminin SessionSpace içinde otomatik olarak yürütülür. Bu, farklı SessionID'lere sahip işlemlerin başka bir oturumun verilerine erişmesini önler.

İstemci Bağlantısı

RDP istemcisi herhangi bir Windows tabanlı terminale (WinCE tabanlı), TCP/IP-32b çalıştıran Çalışma Grupları için Windows 3.11'e veya Microsoft Win32 API tabanlı platforma yüklenebilir ve çalıştırılabilir. Windows tabanlı olmayan istemciler Citrix MetaFrame eklentisi tarafından desteklenir. Çalışma Grupları için Windows RDP istemcisinin yürütülebilir dosyası yaklaşık 70 KB boyutundadır, 300 KB çalışma kümesi kullanır ve görüntüleme verileri için 100 KB kullanır. Win32 tabanlı istemcinin boyutu yaklaşık 130 KB'tır, görüntüleme verileri için 300 KB çalışma kümesi ve 100 KB kullanır.

İstemci, 3389 numaralı TCP bağlantı noktası üzerinden Terminal Sunucusu'na bir bağlantı başlatır. Terminal Server RDP dinleyicisi iş parçacığı oturum isteğini algılar ve yeni oturum isteğini işlemek için yeni bir RDP yığını örneği oluşturur. Dinleyici iş parçacığı, gelen oturumu yeni RDP yığını örneğine teslim eder ve daha fazla bağlantı denemesi için 3389 numaralı TCP bağlantı noktasını dinlemeye devam eder. İstemci oturumları, oturum yapılandırma ayrıntılarının anlaşmasını işlemek için bağlandıkça her RDP yığını oluşturulur. İlk ayrıntılar oturum için bir şifreleme düzeyi oluşturmak olacaktır. Terminal Server başlangıçta üç şifreleme düzeyini destekler: düşük, orta ve yüksek.

Düşük şifreleme yalnızca istemciden Terminal Sunucusu'na gönderilen paketleri şifreler. Bu "yalnızca giriş" şifrelemesi, kullanıcının parolası gibi hassas verilerin girişini korumaktır. Orta düzeyde şifreleme, istemciden giden paketleri düşük düzeyli şifrelemeyle aynı şekilde şifreler, ancak terminal sunucusundan istemciye döndürülen tüm görüntüleme paketlerini de şifreler. Bu şifreleme yöntemi, uzak ekranda görüntülenmek üzere ağ üzerinden ilerlerken hassas verilerin güvenliğini sağlar. Hem düşük hem de orta düzeyde şifreleme, 40 bit anahtarla Microsoft-RC4 algoritmasını (geliştirilmiş performansla değiştirilmiş RC4 algoritması) kullanır. Yüksek şifreleme paketleri istemciye ve istemciden her iki yönde şifreler, ancak yine 40 bit anahtarla endüstri standardı RC4 şifreleme algoritmasını kullanır. Windows NT Terminal Server'ın dışarı aktarma dışı bir sürümü 128 bit üst düzey RC4 şifrelemesi sağlar.

Hangi ortak sistem yazı tiplerinin yüklü olduğunu belirlemek için istemci ile sunucu arasında bir yazı tipi değişimi gerçekleşir. İstemci, RDP oturumu sırasında metnin daha hızlı işlenmesini sağlamak için tüm yüklü sistem yazı tiplerini Terminal Sunucusu'na bildirir. Terminal Server istemcinin hangi yazı tiplerini kullanabileceğini biliyorsa, istemciye daha büyük bit eşlemler yerine sıkıştırılmış yazı tipi ve Unicode karakter dizeleri geçirerek ağ bant genişliğini kaydedebilirsiniz.

Varsayılan olarak, tüm istemciler simgeler, araç çubukları, imleçler gibi bit eşlemleri önbelleğe almak için kullanılan ancak Unicode dizelerini tutmak için kullanılmayan bir bit eşlem önbelleği için 1,5 MB bellek ayırır. Önbellek ayarlanabilir (kayıt defteri anahtarı aracılığıyla) ve En Son Kullanılan (LRU) algoritması kullanılarak üzerine yazılır. Terminal Server, sabit bit akışı yerine istemcilere ekran yenilemelerinin akış denetimli geçirilmesini sağlayan arabellekler de içerir. İstemcideki kullanıcı etkileşimi yüksek olduğunda, arabellek saniyede yaklaşık 20 kez boşaltılır. Boşta kalma süresi sırasında veya kullanıcı etkileşimi olmadığında arabellek saniyede yalnızca 10 kez boşaltılır. Tüm bu numaraları kayıt defteri aracılığıyla ayarlayabilirsiniz.

Oturum ayrıntıları üzerinde anlaşmaya varıldıktan sonra, bu bağlantının sunucu RDP yığını örneği mevcut boşta win32k kullanıcı oturumuyla eşlenir ve kullanıcıdan Windows NT oturum açma ekranı istenir. Otomatik oturum açma yapılandırılırsa, şifrelenmiş kullanıcı adı ve parola Terminal Server'a geçirilir ve oturum açma işlemi devam eder. Şu anda boşta Win32k oturumu yoksa, Terminal Server hizmeti yeni oturum için yeni bir kullanıcı alanı oluşturmak üzere Oturum Yöneticisi'ni (SMSS) çağırır. Win32k kullanıcı oturumunun büyük bir bölümünde paylaşılan kod kullanılır ve bir örnek daha önce yüklendikten sonra önemli ölçüde daha hızlı yüklenir.

Kullanıcı bir kullanıcı adı ve parola yazdıktan sonra paketler Terminal Server'a şifrelenmiş olarak gönderilir. Winlogon işlemi daha sonra kullanıcının oturum açma ayrıcalığına sahip olduğundan emin olmak için gerekli hesap kimlik doğrulamasını gerçekleştirir ve kullanıcının etki alanını ve kullanıcı adını bir etki alanı/kullanıcı adı SessionID listesi bulunduran Terminal Server hizmetine geçirir. Bir SessionID bu kullanıcıyla zaten ilişkiliyse (örneğin, bağlantısı kesilmiş bir oturum varsa), şu anda etkin olan oturum yığını eski oturuma eklenir. İlk oturum açma için kullanılan geçici Win32 oturumu daha sonra silinir. Aksi takdirde bağlantı normal şekilde devam eder ve Terminal Server hizmeti yeni bir etki alanı/kullanıcı adı SessionID eşlemesi oluşturur. Bu kullanıcı için bir nedenden dolayı birden fazla oturum etkinse, oturum listesi görüntülenir ve kullanıcı yeniden bağlantı için hangisini seçeceğine karar verir.

Uygulama Çalıştırma

Kullanıcı oturum açıldıktan sonra, kullanıcı için masaüstü (veya tek uygulama modundaysa uygulama) görüntülenir. Kullanıcı çalıştırmak için 32 bit bir uygulama seçtiğinde, fare komutları Terminal Server'a geçirilir ve bu komut seçilen uygulamayı yeni bir sanal bellek alanına (2 GB uygulama, 2 GB çekirdek) başlatır. Terminal Server'daki tüm işlemler, mümkün olan her yerde çekirdek ve kullanıcı modlarında kod paylaşır. İşlemler arasında kod paylaşımını sağlamak için, Windows NT Sanal Bellek (VM) yöneticisi yazma sayfasına kopyalama koruması kullanır. Birden çok işlem aynı bellek içeriğini okumak ve yazmak isterse, VM yöneticisi bellek bölgesine yazma sayfasına kopyalama koruması atar. İşlemler (Oturumlar), bir yazma işlemi gerçekleştirilene kadar aynı bellek içeriğini kullanır. Bu sırada VM yöneticisi fiziksel sayfa çerçevesini başka bir konuma kopyalar, işlemin sanal adresini yeni sayfa konumuna işaret edecek şekilde güncelleştirir ve şimdi sayfayı okuma/yazma olarak işaretler. Yazmada kopyalama, Terminal Server'da çalışan uygulamalar için kullanışlıdır ve verimlidir.

Microsoft Word gibi Win32 tabanlı bir uygulama bir işlem (Oturum) tarafından fiziksel belleğe yüklendiğinde, yazma üzerine kopyalama olarak işaretlenir. Yeni işlemler (Oturumlar) da Word çağırdığında, uygulama bellekte zaten yüklü olduğundan görüntü yükleyici yeni işlemleri (Oturumlar) mevcut kopyaya işaret eder. Arabellekler ve kullanıcıya özgü veriler gerektiğinde (örneğin, bir dosyaya kaydetme), gerekli sayfalar yeni bir fiziksel bellek konumuna kopyalanır ve tek işlem (Oturum) için okuma/yazma olarak işaretlenir. VM yöneticisi bu bellek alanını diğer işlemlerden korur. Ancak bir uygulamanın çoğu paylaşılabilir koddur ve kaç kez çalıştırılırsa çalıştırılsın fiziksel bellekte yalnızca tek bir kod örneğine sahip olur.

Terminal Server ortamında 32 bit uygulamaları çalıştırmak (gerekli olmasa da) tercih edilir. 32 bit uygulamalar (Win32), kodun paylaşılmasına izin verir ve çok kullanıcılı oturumlarda daha verimli çalışır. Windows NT, 16 bit uygulamaların (Win16) her Win16 uygulaması için bir sanal MS-DOS tabanlı bilgisayar (VDM) oluşturarak Win32 ortamında çalışmasına olanak tanır. Tüm 16 bit çıkış, gerekli eylemleri gerçekleştiren Win32 çağrılarına çevrilir. Win16 uygulamaları kendi VDM'leri içinde yürütürken kod birden çok oturumdaki uygulamalar arasında paylaşılamaz. Win16 ve Win32 çağrıları arasındaki çeviri de sistem kaynaklarını kullanır. Win16 uygulamalarını Terminal Server ortamında çalıştırmak, benzer bir Win32 tabanlı uygulamanın kullanacağı kaynakların iki katını tüketebilir.

Oturum Bağlantısını Kes ve Kullanıcı Oturumu Kapat

Oturumun Bağlantısını Kes

Kullanıcı oturumun bağlantısını kesmeye karar verirse, diğer işlemler için fiziksel bellek gerekiyorsa işlemler ve tüm sanal bellek alanı kalır ve fiziksel diske çağrılır. Terminal Server, etki alanı/kullanıcı adı ve ilişkili SessionID eşlemesini tuttuğundan, aynı kullanıcı yeniden bağlandığında mevcut oturum yüklenir ve yeniden kullanılabilir duruma gelir. RDP'nin bir diğer avantajı da, kullanıcının oturum için isteklerine bağlı olarak oturum ekranı çözünürlüklerini değiştirebilmesidir. Örneğin, bir kullanıcının daha önce 800 x 600 çözünürlükte bir Terminal Server oturumuna bağlandığını ve bağlantısının keslendiğini varsayalım. Kullanıcı daha sonra yalnızca 640 x 480 çözünürlüğü destekleyen farklı bir bilgisayara geçerse ve mevcut oturuma yeniden bağlanırsa, masaüstü yeni çözünürlüğü destekleyecek şekilde yeniden çizilecektir.

Kullanıcı Oturumu Kapatma

Oturumu kapatma işlemi genellikle basit bir işlemdir. Kullanıcı oturumdan oturumunu kapattıktan sonra SessionID ile ilişkili tüm işlemler sonlandırılır ve oturuma ayrılan tüm bellekler serbest bırakılır. Kullanıcı Microsoft Word gibi 32 bit bir uygulama çalıştırıyorsa ve oturumdan oturumu kapatıyorsa, uygulamanın kodu uygulamadan son çıkana kadar bellekte kalır.