'termdd.sys'에 해당되는 글 2건

  1. 2008.09.16 Terminal Services Architecture
  2. 2008.07.29 Windows 2008 Terminal Server Internal

참조 : http://technet.microsoft.com/en-us/library/cc755399.aspx

요즘 Citrix 관련해서 문의를 많이 받는다. 이중 Windows 2003 Terminal Services Architecture에

관해 물으시는 분들이 많아 Windows 2003 Terminal Services Architecture에 대한 내용을 정리해보았

다.  Windows 2003 Terminal Services는 크게 4가지 요소로 구성이된다. multi-user kernel, client,

Terminal Services Licensing, Session Directory Services이다. 흔히 Terminal Services를 구성하겠다고

하면 먼저Windows 2003 OS가 설치되어 있어야 하고, 필요한 License를 구매하고 이후 Terminal

Server 및 License서버 역활을 추가 시키고, Client Session을 관리하기 위해 Terminal Server에 들어가

서 직접 확인하고...뭐이런 일련의 과정을 생각한다면 쉽게 기억할 수 있을 것이라 생각이 된다.

그럼 이제부터 Terminal Services Architecture에 대한 본론으로 들어가보자!!

image

처음에 Session Manager가 실행되고 이후 Sub System Process가 기동되는 순서로 프로세스가

시작이된다. 그러나 여기서는 Terminal Services가 핵심이 아니던가!! 이에 Terminal Services에서 실행

되는 Process에 대한 설명에 대해 간단히 알아보자!!

termiserv.exe : Client 연결을 운영하며, 서비스 생성이나 Shutdown시 연결 확인을 하는 Prcoess

termdd.sys : RDP Protocol을 말하며, terminal server의 핵심 드라이버

RdpDD.sys : Win32K.sys에서 처리된 값을 받아 RdpWD.sys로 전달해 주는 RDPWD를 RDP Protocol로

               변환RDP Display Driver역활!!

RdpWD.sys : multi-chanel Data를 받아 적절한 Session 값으로 전달

wlnotify.dll : User Mode에서 Client Session을 생성한다.

Terminal Server Service를 실행하였을 경우 각 Client 마다 Client Session이 연결되게 된다. 이때

연결된 Client에서는 고유한 "SessionID"를 부여받게 된다. (이중 Console ID는 SessionID 0 이다)

이러한 일련의 과정은 Console접속부터 이루어 지게 된다는 점을 잊지 말자. Console Session 연결이

이루어지면 Display, mouse, keyboard와 같은 장치 driver들이 Load 되게 된다.  Console Session이

만들어진 후에 Terminal Server Services는 Session Manager (Smss.exe)를 호출하게 되며 2개의

Thread를 생성하게 된다. 이후 idle Session을 생성하며, Session Manager는 Csrss.exe, winlogon.exe,

win32k.sys등을 Session ID에 Mapping 한다. (참고로 csrss.exe와 winlogon.exe는 Session ID마다

1개씩 생성된다)

이후 Windows Image Loader는 image header안에 미리 정의된 Bit set 에 의해

SessionSpace locadble image와 같은 Win32k.sys등의 드라이버를 인식하게 된다. 이후 만약

Win32k.sys 드라이버가 Load 되지 않았다면 해당 Session에서 물리적 메모리와 virtual Kernel 주소

공간의 포일터의 이미지를 코드화 하여 재인식 시키는 작업을 하며, 이미 Active 되어 있는 Session에

미리 Load된 Image`s Code(win32k.sys)가 있을 경우에는 기존에 사용하던 Memory 공간에 있는것을

참조한다.

Console Session 과 Terminal Server의 각 Session들은 각기 독립적인 Display, keyboard, mouse등의

장치 Driver를 갖게 된다. rdpdd.dll을 통해 mouse, keyboard등의 Client Device들은 RDP driver인

Rdpwd.sys로 replace되어 동작하게 되다. 결국 이러한 역활을 할수 Device Mapping이 될수있께

도와주는 드라이버가 Termdd.sys라는 RDP Protocol을 이용하여 Client Services를 진행하게 된다.

말로쓰면 상당히 복잡한 내용들이지만 그림으로 표현하면 이렇게 간단하다!!

image

흠...허무하당...ㅋㅋ 보너스도 물리적 구성도에 대한 그림도 Capture해서 정리한다.

image 

신고
Posted by hotpoto

Windows 2008 Terminal Server 내부구조에 대한 내용이다.

내부 구조라 함은 넘 어려운 내용일 수도 있으나 System 운영시 Trouble Shooting하는데는 많은 도움을

줄 수 있을 것이라 생각이 된다. 그럼 지금부터 고고~~

Terminal 서비스 시작도 Windows Boot Process와 마찬가지로 SMSS.EXE의 Process에서 시작된다.

Session Manager에 대한 자세한 내용은 http://maystyle.tistory.com/368 참조!!

SMSS.exe 는 이후 CSRSS.EXE WININIT.exe를 프로세스를 실행시킨다.

그런 이후에 WININIT.exe는 신규접속 / 서버 연결등을 관리하는 Local Session Manager LSM.exe를

실행시키며, SERVICES.exe와 LSASS.exe를 실행하여 terminal 접속을 시작한다.

여기까지가 Windows OS상에서 흔히 시작되는 Process라 할 수 있겠다... 지금부터 핵심적인(?) Terminal

접속방법은 과연 무엇일까???

Services Control Manager는 터미널 서비스 상에 포함되어 있는 termsrv.dll에 의해 초기화 되며,

termdd.sys란 stack Driver에 의해서 3389 TCP Port 가 Listen 상태로 된다. 즉 터미널 접속을 받기 위한

대기상태로 된다는 말이다.

이후에 USERINIT.exe에 의해 WINLOGON.exe가 실행되면서 아래와 같은 Registry 값이 실행된다.

HKLM\SOFTWARE\Microsoft\Windows NT\Current Version\Winlogon\Userinit

Windows Server 2008 Core Server일 경우에는 아래와 같은 경로로 Registry값이 실행된다.

HKLM\SOFTWARE\Microsoft\Windows NT\Current Version\Winlogon\Shell

이후 Terminal 접속 Architecture에 대한 부분을 찾아보다가 넘 깜짝 놀란 Site가 있어 나머지 내용은

영문으로 포스팅 된 내용을 하부에 사용할려고 한다.

출처 : http://blogs.technet.com/askperf/archive/2008/02/14/ws2008-terminal-services-architecture.aspx

난 언제쯤 이정도 내공에 오를수 있을런지...^^

Terminal Server client sessions use separate drivers on the server, one for the display (rdpdd.dll) and one for the keyboard and mouse (rdpwd.sys).  The user interface rendering calls are captured by rdpdd.dll and transmitted to the client over the RDP protocol.  The keyboard and mouse input on the client is transmitted over the TCP connection to rdpwd.sys for translation.  These drivers provide the remote server interaction functionality for the client session.  Remember that prior to Windows Server 2008, TS session creation was done serially by the Session Manager process, SMSS.EXE.  The new Session Manager design provides parallel session initialization, with the session-specific instances of SMSS.EXE concurrently creating the WINLOGON.EXE and CSRSS.EXE process instances for each session.  The end result is improved Terminal Server logon times.

● 기타 유용한 Site Link 모음

   - Windows 2008 Terminal Services Gateway Overview http://blogs.technet.com/askperf/archive/2008/02/26/ws2008-terminal-services-gateway-overview.aspx

   - Windows 2008 Session Broker Load Balancing

http://blogs.technet.com/askperf/archive/2008/02/25/ws2008-session-broker-load-balancing.aspx

   - Windows 2008 Terminal Server Session Broker Overview

http://blogs.technet.com/askperf/archive/2008/02/24/ws2008-terminal-server-session-broker-overview.aspx

   - Windows 2008 Terminal Server Web Access Architecture

http://blogs.technet.com/askperf/archive/2008/02/23/ws2008-terminal-server-web-access-architecture.aspx

   - Windows 2008 Terminal Services RemoteApps

http://blogs.technet.com/askperf/archive/2008/02/22/ws2008-terminal-services-remoteapps.aspx

신고
Posted by hotpoto

티스토리 툴바