[서버 구축 소전] 2차시 과제 is protected. Enter the password to view this post.
오늘은 RDP의 통신 방식에 대해 다뤄 보도록 하겠습니다.(과제 설명에 따라 서버 구축은 진행하지 않음)
RDP란?
RDP(Remote Desktop Protocol)은 원격 데스크탑 프로토콜입니다.
RDP는 원격 컴퓨터의 화면 정보는 내 컴퓨터로 보내고, 내 컴퓨터의 키보드, 마우스 등의 입력 정보는 원격 컴퓨터로 보내는 프로토콜입니다.
RDP 통신
RDP는 기본적으로 클라이언트-서버 구조로 동작합니다.
여기서 클라이언트는 접속하는 쪽 컴퓨터고, 서버는 접속을 받는 쪽 컴퓨터입니다.
[내 컴퓨터 / RDP 클라이언트] │ │ 키보드 입력, 마우스 입력 전송 ▼[원격 컴퓨터 / RDP 서버]
[원격 컴퓨터 / RDP 서버] │ │ 화면 정보, 소리, 파일, 클립보드 정보 전송 ▼[내 컴퓨터 / RDP 클라이언트]RDP의 기본 포트
RDP는 기본적으로 TCP 3389번 포트를 사용합니다.
다만, 보안상 이유로 실제 서버에서는 3389번 포트를 그대로 외부에 열어두지 않는 경우가 많다고 합니다.
RDP 통신 방식
RDP는 단순히 화면 전체를 계속 동영상처럼 전송하는 방식이 아닙니다.
실제로는 더 효율적으로 동작합니다.
내 컴퓨터에서 발생한 키보드 입력이나 마우스 클릭 같은 조작 정보가 원격 컴퓨터로 전달되고, 원격 컴퓨터는 그 결과로 바뀐 화면을 다시 내 컴퓨터에 보여줍니다.
즉, 사용자의 입력은 클라이언트에서 서버로 가고, 처리 결과인 화면 변화는 서버에서 클라이언트로 돌아오는 구조입니다. 또한 필요에 따라 클립보드, 파일 전송, 소리, 프린터, 로컬 드라이브 공유 같은 데이터도 함께 주고받을 수 있습니다.
RDP 접속 과정
RDP 접속은 단순히 원격 화면을 바로 보여주는 방식이 아닙니다.
먼저 클라이언트와 서버가 연결을 만들고, 보안 설정과 사용자 인증을 거친 뒤 원격 세션이 생성됩니다.
그 이후부터 사용자의 입력 정보와 서버의 화면 변화 정보가 계속 오가면서 원격 제어가 이루어집니다.
1단계: 클라이언트가 서버에 접속 요청
사용자 컴퓨터의 원격 데스크탑 프로그램이 원격 서버에 3389번 포트로 접속을 시도합니다.
클라이언트 -> 서버"RDP 접속 요청"이 단계에서는 클라이언트가 서버에게 원격 데스크톱 연결을 시작하겠다고 요청하는 것입니다.
서버에서 RDP 접속이 허용되어 있고, 방화벽에서 3389번 포트가 막혀 있지 않다면 다음 단계로 넘어갑니다.
2단계: 보안 연결 설정
서버가 접속 요청을 받아들이면, 클라이언트와 서버는 먼저 보안 연결을 설정합니다.
RDP가 주고 받는 데이터가 암호화되지 않은 상태로 전송되면 중간에서 정보가 노출될 수 있기 때문에, 실제 원격 제어가 시작되기 전에 암호화 통신을 위한 설정을 진행합니다.
클라이언트 <-> 서버"암호화 방식과 보안 설정 협상"요즘 RDP는 보통 TLS 같은 암호화 방식을 사용해 데이터를 보호합니다.
이 과정을 통해 이후에 오가는 입력 정보나 화면 정보가 쉽게 노출되지 않도록 합니다.
3단계: 사용자 인증
보안 연결이 준비되면 서버는 접속하려는 사용자가 정상 사용자인지 확인합니다.
사용자는 보통 사용자 이름, 비밀번호, 도메인 정보 등을 입력합니다.
클라이언트 -> 서버"사용자 이름 / 비밀번호 / 도메인 정보 전송"서버는 입력된 계정 정보가 올바른지 확인하고, 해당 계정이 원격 데스크톱 접속 권한을 가지고 있는지도 검사합니다.
계정 정보가 틀렸거나 원격 접속 권한이 없다면 접속은 거부됩니다.
또한 NLA(Network Level Authentication)가 활성화되어 있으면, 원격 데스크톱 세션을 완전히 만들기 전에 먼저 사용자 인증을 진행합니다.
즉, 인증되지 않은 사용자가 불필요하게 원격 세션을 생성하지 못하게 막는 역할을 합니다.
4단계: 원격 세션 생성
인증이 성공하면 서버는 해당 사용자를 위한 원격 데스크톱 세션을 만듭니다.
세션은 원격 컴퓨터 안에서 사용자가 작업할 수 있는 독립적인 작업 공간이라고 볼 수 있습니다.
사용자는 이 세션 안에서 바탕화면을 보고, 프로그램을 실행하거나 파일을 열 수 있습니다.
이때 서버는 사용자의 접속 환경도 함께 설정합니다.
예를 들어 아래 같은 정보가 세션 설정에 포함될 수 있습니다.
- 화면 해상도
- 색상 품질
- 키보드 설정
- 오디오 사용 여부
- 클립보드 공유 여부
- 프린터 공유 여부
- 로컬 드라이브 연결 여부
즉, RDP는 단순히 화면 하나만 연결하는 것이 아니라, 사용자가 원격 컴퓨터를 어떤 환경에서 사용할지에 대한 설정까지 맞춥니다.
5단계: 가상 채널 설정
원격 세션이 생성되면 RDP는 여러 종류의 데이터를 처리하기 위해 가상 채널을 설정합니다.
가상 채널은 쉽게 말해 하나의 RDP 연결 안에서 기능별 데이터를 나누어 주고받는 통로입니다.
화면 정보, 키보드 입력, 마우스 입력, 클립보드, 오디오, 프린터, 드라이브 공유 데이터는 서로 성격이 다르기 때문에 기능별로 나누어 처리하는 것입니다.
RDP 연결├─ 화면 출력 채널├─ 키보드 / 마우스 입력 채널├─ 클립보드 채널├─ 오디오 채널├─ 프린터 공유 채널└─ 드라이브 공유 채널이 구조 덕분에 RDP는 단순히 화면만 보여주는 것이 아니라, 복사·붙여넣기, 파일 전송, 소리 출력, 프린터 공유 같은 기능도 함께 제공할 수 있습니다.
6단계: 입력 정보 전송
이 단계부터 본격적인 원격 제어가 이루어집니다.
사용자가 마우스를 움직이거나 키보드를 입력하면, 클라이언트는 그 조작 정보를 서버로 전송합니다.
이때 클라이언트가 보내는 것은 화면이 아니라 사용자의 입력 정보입니다.
클라이언트 -> 서버"마우스 좌표, 클릭 정보, 키보드 입력 정보 전송"예를 들어 사용자가 원격 화면에서 메모장을 클릭하면, 클라이언트는 마우스 좌표와 클릭 정보를 서버로 보냅니다.
사용자가 키보드로 글자를 입력하면 어떤 키가 눌렸는지에 대한 정보가 서버로 전달됩니다.
서버는 이 입력을 실제 원격 컴퓨터에서 발생한 입력처럼 처리합니다.
7단계: 화면 변화 정보 전송
서버는 클라이언트로부터 받은 입력을 처리한 뒤, 그 결과로 바뀐 화면 정보를 다시 클라이언트에게 전송합니다.
서버 -> 클라이언트"변경된 화면 정보 전송"여기서 중요한 점은 RDP가 화면 전체를 계속 영상처럼 보내는 방식이 아니라는 것입니다.
화면 전체를 매번 보내면 네트워크 사용량이 커지고 속도도 느려집니다.
그래서 RDP는 가능한 한 변경된 화면 부분 중심으로 정보를 보냅니다.
예를 들어 메모장에 글자 하나를 입력했다면 전체 화면을 다시 보내는 것이 아니라, 글자가 추가된 부분이나 창의 변화 정보를 중심으로 전송합니다.
이런 방식 덕분에 네트워크 사용량을 줄이고 원격 조작의 반응 속도를 높일 수 있습니다.
8단계: 입력과 화면 정보의 반복 교환
RDP 세션이 유지되는 동안 입력 정보와 화면 변화 정보는 계속 반복해서 오갑니다.
사용자 입력 발생-> 클라이언트가 입력 정보를 서버로 전송-> 서버가 입력 처리-> 서버가 바뀐 화면 정보를 클라이언트로 전송-> 클라이언트가 화면 갱신이 과정이 매우 짧은 시간 안에 계속 반복되기 때문에 사용자는 원격 컴퓨터를 직접 사용하는 것처럼 느끼게 됩니다.