[ 내 앞의 컴퓨터 ] [ 멀리 있는 서버 ] X 서버 X 클라이언트 화면 · 키보드 · 마우스 실제 프로그램 (하드웨어를 가진 쪽) (xterm, gedit ...) │ │ │◄──── 화면에 그려 달라는 요청 ───────────┤ ├───── 키보드·마우스 입력 전달 ─────────►│
구분
X 서버
X 클라이언트
정체
디스플레이·입력장치를 가진 쪽
응용 프로그램
하는 일
화면에 그려 주고 입력을 전달
무엇을 그릴지 요청
있는 곳
사용자 앞
어디든 (원격도 가능)
예
내 노트북의 화면
xterm, xclock, 브라우저
"자원(화면)을 제공하는 쪽이 서버" 라고 생각하면 이해된다. 웹은 자료를 가진 쪽이 서버지만, X는 화면을 가진 쪽이 서버다. 그래서 내 앞의 컴퓨터가 X 서버가 된다.
이 구조 덕분에 원격 컴퓨터에서 실행한 프로그램의 창이 내 화면에 뜨는 일이 가능하다. 이를 네트워크 투명성(network transparency) 이라 한다.
X 클라이언트 (xterm) X 서버 (내 화면) │ │ ├── ① 요청(Request) "여기에 창을 그려 줘" ──►│ │◄─ ② 응답(Reply) "그 창의 크기는 이렇다" ─┤ │◄─ ③ 이벤트(Event) "A 키가 눌렸다" ─────────┤ │◄─ ④ 오류(Error) "그런 창은 없다" ────────┤
메시지
방향
내용
요청(Request)
클라이언트 → 서버
창 만들기, 선·글자 그리기, 정보 묻기
응답(Reply)
서버 → 클라이언트
정보를 물은 요청에 대한 답
이벤트(Event)
서버 → 클라이언트
키보드·마우스 입력, 창이 가려졌다 드러남 등
오류(Error)
서버 → 클라이언트
요청을 처리할 수 없음
요청만 클라이언트가 보내고 나머지 셋은 서버가 보낸다. 키보드와 마우스는 서버 쪽에 달려 있으므로 입력은 항상 서버에서 클라이언트로 흐른다.
클라이언트는 화면에 직접 손대지 못한다. 점 하나를 찍는 것도 서버에 부탁해야 한다. 그래서 여러 프로그램의 창이 한 화면에서 서로 덮어쓰지 않고 공존한다.
1984 X Window System MIT 에서 시작 │ 1987 X11 지금까지 쓰이는 버전 번호 │ 1992 XFree86 PC 유닉스용 무료 구현. 오랫동안 표준 │ 2004년 라이선스 변경으로 갈라짐 ▼ 2004 X.org Server XFree86 에서 갈라져 나옴. 현재 표준 │ ▼ 2008~ Wayland X 를 대체하려는 차세대 방식
이름
성격
XFree86
PC용 X 구현으로 오랫동안 표준이었다. 라이선스 문제로 주도권을 잃었다
X.org Server
XFree86에서 갈라져 나온 구현. 현재의 표준
Wayland
X의 복잡한 구조를 걷어낸 차세대 디스플레이 서버 프로토콜
발전 순서 XFree86 → X.org Server → Wayland 를 그대로 묻는 문제가 나온다. 세 이름의 순서를 외운다.
X11 은 1987년에 나온 11번째 버전이며, 지금 쓰는 것도 여전히 X11이다. 그래서 X11이라는 표기가 곳곳에 남아 있다.
Wayland는 X의 새 버전이 아니라 대체품이다. 구조 자체가 다르며, 기존 X 프로그램은 XWayland라는 호환 계층으로 돌린다.