클라이언트

 

1. 사전적 의미
2. 컴퓨터 관련 용어
2.1. 호스트
2.2. 관련 문서


1. 사전적 의미


[image]
Client
전문가서비스를 받는 고객, 의뢰인 등의 의미를 지닌다.
이 단어는 본래 라틴어의 'Clientes(클리엔테스)'에서 나온 말인데, 이는 피후원자라는 뜻이었다. 이와 대응되는 개념은 'Patronus(파트로누스)'로, 공화정 로마의 파트로누스는 클리엔테스에게 각종 편의를 제공해 주고 그 대신 클리엔테스는 파트로네스에게 표를 던져 주었다. 클리엔테스-파트로누스의 관계상 파트로누스는 주로 명망 있는 장군, 재력가 또는 귀족인 경우가 많았고, 클리엔테스는 병사, 노동자, 농민 등의 평민층이었다. 오늘날 파트로누스라는 단어는 영어에서 "후원자"를 뜻하는 'Patron'이란 말로 남았고, 클리엔테스는 영어의 클라이언트로 남아 있다. 그러나 영어 단어 클라이언트는 '패트론의 후원을 받는 사람'이라는 뜻보다 '서비스를 의뢰하는 사람'이라는 의미에 가깝다.
사진, 디자인, 프로그래밍 분야, 음악 업계, 토목 설계, 사회복지학 등에서 이 말을 자주 쓰는 것을 볼 수 있다. 회계, 세무 계열에서도 직종에서 그들에게 일감을 맡기는 분들을 통상적으로 '고객'이라고 하기보다는 클라이언트라고 한다. 심리학에서는 세부전공에 따라 명칭이 달라지는데 상담심리학 쪽에서는 전문가들 사이에서 클라이언트라 부르지만, 임상심리학에서는 Patient(환자)라는 단어로 쓴다. 같은 심리학이라도 범주에 따라 접근 방식이 다름을 보여주는 가장 두드러진 차이라고 볼 수 있다.
대중 매체에서는 종종 수상쩍은 사람들이 이 용어를 사용하기도 한다. 이 경우 이 단어가 지칭하는 인물은 대개 그 작품의 최종보스 내지는 흑막.

2. 컴퓨터 관련 용어



클라이언트-서버(client-server) 구성에서 사용자가 서버에 접속하기 위해 사용하는 프로그램 또는 서비스를 말한다.
[image]
흔히 접할 수 있는 예시로는 게임 클라이언트가 있는데, 아예 위 사진의 PC 온라인 게임 마비노기처럼 게임 프로세스명이 Client.exe로 존재하는 프로그램도 있으며, 개인 또는 사내 메신저 등으로 기업에서 제공하는 인터넷 기반 서비스 프로그램에 이르기까지 특정 네트워크에 접속하는 거의 모든 프로그램 전부를 클라이언트라고 볼 수 있다. 취소선을 쳐놓긴 했지만 어떤 의미에서는 맞는 말이다. 서버라는 개념이 나온 순간부터 서버와 통신하는 모든 프로그램은 클라이언트이며, 이외의 다른 방식은 서버라는 개념이 아예 없기 때문이다.
일반적으로 클라이언트는 서버가 제공하는 서비스를 사용자의 환경에서 구현할 수 있도록 하는 프로그램과 프로그램의 실행에 필요한 확장 파일 및 서비스에 필요한 암호화된 데이터 등으로 구성된다.
예를 들어 멀티 플레이 게임의 클라이언트는 게임 실행에 대한 거의 모든 부분을 구현해 둔 경우가 많으며, 기본적으로 게임에서 사용되는 이미지, 동영상, 캐릭터 모델링 데이터 등의 게임 리소스들과 바이너리 형태의 실행 파일로 이루어져 있다. 그 외의 추가적인 데이터는 클라이언트가 실행된 후 서버와 연동하여 다운로드 받게 된다. 다만 일부 게임은 클라이언트끼리 P2P 방식으로 데이터를 전송하기도 한다.
MMORPG 같은 게임에서는 플레이어 간의 데이터를 항상 서버와 실시간으로 동기화하여 서비스한다. 대부분의 연산은 서버에서 수행하고[1], 클라이언트는 유저의 조작을 서버에게 이벤트로 통보하는 역할을 수행하게 된다.[2]리그 오브 레전드》 같은 매칭 위주의 게임에서는 클라이언트에서 필요할 때에만 플레이어의 상태나 이벤트 같은 데이터를 서버에 요청하다가 본 게임으로 넘어가면 실시간으로 동기화하는 형태로 서비스하게 된다.
대부분의 게임 클라이언트는 데이터 파일이 아무나 열어볼 수 없는 확장자로 되어 있는 경우가 많은데[3] [4], 이는 사용자가 파일을 열어 조작하는 것을 일차적으로 방지하기 위함이며, 만약 변조에 성공하여 서버가 잘못된 정보를 보내주게 된다면 그것만으로도 게임에 큰 재앙이 되어 서비스를 통째로 망가뜨릴 가능성도 있다.[5] 따라서 클라이언트는 보통 본래 가지고 있던 데이터도 변조 확인 절차를 거치게 되어 있으며, 서버와 통신하여 받은 데이터도 해시를 통한 파일 변조 검사를 거쳐 사용하는 경우가 대다수이다.
과거 빠른 속도의 인터넷이 보급되기 이전 온라인 게임들은 클라이언트 프로그램을 컴퓨터로 내려받기에 오랜 시간이 걸렸기 때문에 일부 게임 회사에 신청하면 무료로 클라이언트 프로그램 설치 CD를 제공해 주었다고 한다.[6] 현재도 인도네시아처럼 인터넷 환경이 열악한 나라들에서는 설치 CD를 따로 제공하는 곳이 많다.[7]

2.1. 호스트


일반적인 서버-클라이언트 구조의 변형으로, 클라이언트가 서버의 역할을 겸하는 경우가 존재한다. 이 경우, 클라이언트/서버의 명칭보다 더 범용적인 호스트[8]라는 명칭을 사용하기도 한다.[9]
사이퍼즈》의 이전 경우가 그러한데, 각 클라이언트가 서로 호스트가 되어 각자 역할이 주어지며, 그에 따라 특정 데이터 집합(A 클라이언트는 오브젝트의 이동, B 클라이언트는 캐릭터의 이동 등)을 연산한 뒤 결과값을 나머지 클라이언트들에게 전달하는 방식이었다.
마비노기 영웅전》은 현재도 방을 만든 유저가 호스트를 담당하여 전투의 모든 데이터를 처리하고 파티원에게 돌려주기 때문에 호스트 PC가 좋아야 한다. 이런 방식을 더욱 확장하게 되면 그리드 컴퓨팅이 된다.
마인크래프트》는 재미있는 구조를 가지고 있는데, 싱글플레이도 로컬 서버가 열린다.[10][11] 즉 자신이 서버를 열고 자신만 그 서버에 들어가는 방식이다. 그렇기 때문에 포트를 여는것만으로도 멀티플레이가 가능한 LAN 서버가 빠르게 열린다.

2.2. 관련 문서


[1] 전투 중에 실시간으로 변하는 각종 수치 연산이 이에 해당한다. 몇몇 게임들을 플레이하다가 네트워크상에 잠시 문제가 발생하면 본인만 이리저리 움직이고, 스킬도 사용이 안 되고, 모든 수치가 얼었다가 다시 연결되면 오브젝트들이 순간이동하면서 제자리를 찾는 것이 이것 때문.[2] 서버의 부하를 줄이겠다고 클라이언트에서 전투 관련 연산을 수행하게 된다면 클라이언트 변조에 제대로 당하게 된다. 난독화도 소용없고, 암호화도 전부 뚫릴 수밖에 없는 현실을 생각한다면... 대표적인 사례는 모바일 버전 《크리티카》가 있겠다.[3] 많은 프로그램들이 dat 확장자를 사용하며, 《메이플스토리》의 경우 wz.[4] 확장자만 바꿔 놓았을 경우 파일 헤더를 확인해서 원래 확장자를 찾아낼 수 있지만, 파일 헤더도 바꿔 놓았다면 어려워진다. 스프라이트를 사용하는 게임일 경우, JPG/PNG/BMP 파일 헤더를 검색해서 무언가 나온다면 그 부분을 헥스 에디터 등으로 확인해서 헤더가 올바르다면 세세하게 뜯어볼 수 있다.[5] 이게 바로 이다! 그리고 정상적인 정보라도 외부 프로그램이나 하드웨어를 통해 자동으로 보내면 바로 자동사냥이 된다![6] 게임 잡지 번들로 데모와 클라이언트가 든 CD를 제공하기도 했다. 《월드 오브 워크래프트》의 경우 출시 당시에 클라이언트가 대용량이라 홍보를 겸해 공격적으로 설치 CD를 배포했다. 이 때문에 좀 오래된 PC방에 가 보면 당시의 WoW 클라이언트 CD 박스가 선반에 장식된 경우가 많다. 적어도 이런 클라이언트 CD 배포는 2000년대 중반까지 흔한 일이었다.[7] 인도네시아의 인터넷 속도는 현대 한국인이라면 도저히 이해할 수 없을 정도이다. 비유하자면 지하철에서 제공하는 무료 와이파이를 잡았을 때, 지하철이 터널을 통과하는 순간의 인터넷 상태 정도로 보면 된다.[8] 네트워크 상의 컴퓨터를 지칭하는 말. 네트워크를 통한 서비스 제공 및 소비를 수행한다.[9] 사실 보기에 따라선 서버-클라이언트 구조가 아닌 클라이언트를 통해 서버의 기능을 일부 대행하는 것으로도 볼 수 있으며, 이 경우 P2P 구조가 된다.[10] 기본적으로 게임 개발사인 모장에서 《마인크래프트》와 동시에 배포하는 바닐라 서버와 구조가 같다.[11] 런처를 이용한 로그를 보면 클라이언트측 로그와 서버측 로그가 동시에(...) 기록이 된다.