Aracılığıyla paylaş


Terminal Sunucusu İzlenecek Yolu: Başlangıç, Bağlantı ve Uygulama

Bu makalede, Terminal Server'ın 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.

Özgün KB numarası: 186572

Windows Terminal Server Başlatma

Windows Terminal Server ç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 klavyesi, 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 Windows NT Oturum Yöneticisi'ni (Smss.exe) çağırarak istemci bağlantılarını bekleyen iki (varsayılan = 2) boş istemci oturumu (konsol oturumu oluşturulduktan sonra) oluşturur. 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, görüntü üst bilgisinde önceden tanımlanmış bir bit kümesiyle bu Win32k.sys SessionSpace tarafından yüklenebilir bir görüntü olarak tanır. Ardından, 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ı görüntü, 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üdür 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, RDP sürücüsüne ve rdp sürücüsünden fare ve klavye etkinliğine yönelik iletileri Wdtshare.sys 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 bir bağlantı dinleyicisi iş parçacığı çağırır, yeniden birden çok örnek yığın yöneticisi (Termdd.sys) tarafından yönetilen, 3389 numaralı TCP bağlantı noktası üzerinde RDP istemci bağlantılarını dinler.

Bu noktada, CSRSS işlemi kendi SessionID ad alanı altında yer alır ve verileri işlem başına gerektiği gibi ö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 engeller.

İstemci Bağlantısı

RDP istemcisi, TCP/IP-32b çalıştıran herhangi bir Windows tabanlı terminale (WinCE tabanlı), Windows for Workgroups 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 TCP bağlantı noktası 3389'da dinlemeye devam eder. Her RDP yığını, oturum yapılandırma ayrıntılarının görüşmesini işlemek için istemci oturumları bağlandıkça oluşturulur. İlk ayrıntılar, oturum için bir şifreleme düzeyi oluşturmak olacaktır. Terminal Sunucusu başlangıçta üç şifreleme düzeyini destekleyecektir: 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ü paketlerini de şifreler. Bu şifreleme yöntemi, uzak ekranda görüntülenecek ağ üzerinden hareket eden 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 de şifreler, ancak 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 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 Sunucusu ayrıca, ekran yenilemelerinin sabit bir bit akışı yerine istemcilere akış denetimiyle 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 temizlenmek üzere yavaşlar. Bu sayıların tümünü kayıt defteri aracılığıyla ayarlayabilirsiniz.

Oturum ayrıntıları anlaşıldıktan sonra, bu bağlantının sunucu RDP yığını örneği mevcut boşta win32k kullanıcı oturumuna 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 devam eder. Şu anda boşta win32k oturumu yoksa, Terminal Server hizmeti Oturum Yöneticisi'ni (SMSS) çağırarak yeni oturum için yeni bir kullanıcı alanı oluşturur. Win32k kullanıcı oturumunun büyük bir kısmı paylaşılan kodu kullanıyor ve bir örnek daha önce yüklendikten sonra önemli ölçüde daha hızlı yükleniyor.

Kullanıcı bir kullanıcı adı ve parola yazdıktan sonra paketler Terminal Sunucusu'na ş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 tutan Terminal Server hizmetine geçirir. Bir SessionID bu kullanıcıyla zaten ilişkiliyse (örneğin, bağlantısı kesilmiş bir oturum varsa), o anda etkin olan oturum yığını eski oturuma eklenir. İlk oturum açma için kullanılan geçici Win32 oturumu 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. Bir nedenle bu kullanıcı için birden fazla oturum etkinse oturum listesi görüntülenir ve yeniden bağlantı için hangisini seçeceğine kullanıcı 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 bitlik 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 Sunucusu'ndaki 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ında kopyalama korumasını kullanır. Birden çok işlem aynı bellek içeriğini okumak ve yazmak istediğinde, 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. Kopyalama-yazma, Terminal Server'da çalışan uygulamalar için kullanışlıdır ve verimlidir.

Microsoft Word gibi Win32 tabanlı bir uygulama tek bir işlem (Oturum) tarafından fiziksel belleğe yüklendiğinde, yazmada kopyalama olarak işaretlenir. Yeni işlemler (Oturumlar) word'i de çağırdığında, uygulama zaten belleğe yüklendiğinden 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.

32 bit uygulamaları Terminal Server ortamında ç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, her Win16 uygulamasının yürütülmesi için bir sanal MS-DOS tabanlı bilgisayar (VDM) oluşturarak 16 bit uygulamaların (Win16) Win32 ortamında çalışmasına izin verir. 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 birden çok oturumdaki uygulamalar arasında kod paylaşılamaz. Win16 ve Win32 çağrıları arasındaki çeviri de sistem kaynaklarını kullanır. Win16 uygulamalarını bir Terminal Server ortamında çalıştırmak, karşılaştırılabilir bir Win32 tabanlı uygulamanın kullanacağı kaynaklardan iki kat daha fazla kaynak 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 getirilecektir. RDP'nin bir diğer avantajı, kullanıcının oturum için ne istediğine 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 kesilmiş olduğunu 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ı Oturum Kapatma

Oturumu kapatmanın uygulanması genellikle basittir. Kullanıcı oturumdan oturumu 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ırsa, uygulamanın kodu uygulamadan son çıkana kadar bellekte kalır.