클라이언트
클라이언트(client)란 네트워크를 이용하여 서버 시스템에 연결된 PC나 스마트폰 등 사용자 측을 말한다. 클라이언트는 서버에서 받아온 데이터를 단말기 화면에 표시하고 사용자의 요청을 서버에 전달하기 위해 웹브라우저를 사용한다. 웹브라우저는 클라이언트의 대표적 형태이지만 웹브라우저만이 클라이언트는 아니다. 이메일 클라이언트와 메일 서버와 소통하여 메일을 전달하는 것도 클라이언트라고 할 수 있다. 또 흔히 하는 채팅 또한 클라이언트의 형태라고 할 수 있다. 즉, 클라이언트는 서버에 알맞은 형태로 요청을 하고 그 결과를 사용자에게 알맞게 전달하는 것이다. 반대말은 서버(server)이다.
개요
클라이언트의 사전적인 의미는 고객이라는 의미이나 정보통신분야에서는 정보를 열람하거나 특정의 프로그램을 사용하는 컴퓨터 또는 소프트웨어를 말한다. 정보를 공급하는 컴퓨터를 말하는 서버의 반대개념으로 사용된다. 클라이언트 서버는 하나 또는 여러 개의 관련 있는 응용 프로그램을 둘 또는 그 이상의 상호 협력적인 처리 환경에서 운용하는 다양한 형태의 분산 컴퓨팅을 의미한다. 서버는 망을 통해서 요청을 받으며 자신의 서비스를 수행하고 그 결과를 서비스 요청자에게 돌려준다. 서버에게 요청을 하고 응답을 기다리는 실행 프로그램은 클라이언트가 된다.[1]
클라이언트/서버(client/server) 구성에서 사용자측. 사용자가 서버에 접속했을 때 클라이언트는 사용자 자신을 지칭할 수도 있고, 사용자의 컴퓨터를 가리키기도 하며, 컴퓨터에서 동작하고 있는 프로그램이 될 수도 있다. 컴퓨터 시스템의 프로세스는 또 다른 컴퓨터 시스템의 프로세스를 요청할 수 있다. 네트워크에서는 네트워크 서버에 정보나 응용 프로그램을 요구할 수 있는 PC 등의 처리 기능이 있는 워크스테이션을 말하며 객체 연결 및 포함(OLE)에서는 서버 응용 프로그램이라는 다른 응용 프로그램에 데이터를 포함시켜 놓은 응용 프로그램을 말한다. 파일 서버로부터 파일의 내용을 요청하는 워크스테이션을 파일 서버의 클라이언트라 한다. 각각의 클라이언트 프로그램은 하나 또는 그 이상의 서버 프로그램에 의하여 자동 실행될 수 있도록 디자인되며, 또한 각각의 서버 프로그램은 특별한 종류의 클라이언트 프로그램이 필요하다.[2]
비교
- 서버(server)
- 클라이언트에게 네트워크를 통해 정보나 서비스를 제공하는 컴퓨터 시스템으로 컴퓨터 프로그램 또는 장치를 의미한다.특히, 서버에서 동작하는 소프트웨어를 서버 소프트웨어라 한다. 주로 리눅스 등의 운영 체제를 설치한 대형 컴퓨터를 쓰지만, 그렇지 않은 경우도 있다. 서버는 프린터 제어나 파일 관리 등 네트워크 전체를 감시, 제어하거나, 메인프레임이나 공중망을 통한 다른 네트워크와의 연결, 데이터·프로그램·파일 같은 소프트웨어 자원이나 모뎀·팩스·프린터 공유, 기타 장비 등 하드웨어 자원을 공유할 수 있도록 도와주는 역할을 한다.
- 서버는 사용자(클라이언트)의 요청에 의하여 서비스를 하는데 이와 같이 구성된 시스템을 서버-클라이언트 시스템이라고 하며, 이는 하나 이상의 응용 프로그램을 상호 협력적인 환경에서 운용하는 분산처리 형태를 의미한다. 즉, 서비스를 요청하는 클라이언트와 클라이언트의 요청을 처리하는 서버와의 협동작업을 통해서 사용자가 원하는 결과를 얻는 처리방식을 뜻한다. 클라이언트의 수가 5~20대 저오인 소규모 랜LAN의 경우에는 한 대의 서버로 충분히 모든 서비스를 소화할 수 있으나, 대규모 랜의 경우에는 여러 대의 서버를 배치하고, 파일 관리는 파일 서버, 프린터 제어는 프린터 서버, 인터넷 등의 외부와의 교환은 통신 서버가 담당하는 등 각각 역할을 세분하게 된다.
- 컴퓨팅에서의 서버라는 용어의 이용은 대기 행렬이론에서 비롯한 것이다. 컴퓨팅에서 서버는 적어도 RFC 5(1969년)로 거슬러 올라가며, 이 RFC는 아르파넷(ARPANET)을 기술하는 최초의 문서들 가운데 하나이며 사용자와 대비되고 있고 두 가지 종류의 호스트와는 구별하고 있다. 서버 호스트, 사용자 호스트, 서비스를 제공하는 것을 뜻하는 서빙(serving)이라는 용어 또한 RFC 4와 같은 초기 문서들로 거슬러 올라간다. 또한, 서버의 제조사에 따라 IBM 서버, HP 서버, 델(Dell) 서버 등이 있다.[3]
특징
컴퓨터에서 클라이언트는 서버 시스템과 연결해서 주된 작업이나 정보를 서버에게 요청하고 그 결과를 돌려받는 컴퓨터 시스템을 말한다. 클라이언트는 네트워크를 통해서, 서버라는 다른 컴퓨터 시스템 상의 원격 서비스에 접속할 수 있는 응용 프로그램이나 서비스를 말하는 것이다. 또는 특정 프로그램을 사용하거나 정보를 열람하는 소프트웨어 나 컴퓨터를 지칭하기도 하며, 이렇게 원격을 당하거나 정보를 열람당하거나 사용당하는 것들을 말하기도 한다. 사용자가 특정 웹사이트를 방문했을 때 만들어지는 쿠키(cookie)정보는 서버 측이 아니라 클라이언트 측에 저장된다.[4]
클라이언트는 일반적으로 팻 클라이언트, 씬 클라이언트, 하이브리드 클라이언트로 나뉜다.
종류
- 팻 클라이언트(fat client)
- 리치 클라이언트(rich client), 씩 클라이언트(thick client)라고도 한다. 스스로 다량의 데이터를 처리하는 클라이언트로 서버에 꼭 의지하지는 않는다. 팻 클라이언트는 개인용 컴퓨터의 한 형태로 가장 흔하게 쓰이며 개인용 컴퓨터나 노트북 컴퓨터는 독립적으로 수행한다. 인터넷 환경이 없으면 일을 할 수 없어 편리성이 떨어지는 씬 클라이언트에 비해 서버에 의존하지 않아 편리성이 높지만 업무용 PC를 분실하게 되는 경우 기밀 정보가 유출되는 사고가 발생할 수 있다. 팻 클라이언트에서는 PC 상에서 대부분의 처리를 하기 때문에 데이터도 PC에 저장된다. 그래서 PC 자체를 분실하면 보안상의 위험이 상당히 커진다.[5]리치 클라이언트의 프로그래밍 언어 및 개발 도구에는 일반적으로 델파이, 닷넷 프레임워크, 자바, 비주얼 스튜디오가 있다.
- 씬 클라이언트(thin client)
- 최소한의 클라이언트로, 호스트 컴퓨터의 리소스를 사용한다. 다량의 데이터를 처리하는 애플리케이션 서버가 제공한 사진을 그래픽으로 보여 주는 것이 임무이다. 씬 클라이언트는 클라이언트 서버 시스템에 있어서 클라이언트 측에는 거의 아무런 처리를 하지 않고 대부분의 처리를 서버 측에 맡기는 시스템을 말한다. 씬 클라이언트는 원래 1990~2000년대 전반에 널리 보급되던 시스템 구성이며 처리 방식이다. 당시는 클라이언트 단말기의 메모리나 중앙처리장치CPU 등의 처리 성능이 부족했었기 때문에 부하가 높은 처리가 가능한 한 성능이 높은 서버 측에서 수행함으로써 전체 처리의 퍼포먼스를 향상시키는 것을 목적으로 했었다. 그 PC의 처리 성능이 눈에 띄게 향상되어 서버 측에서 하던 처리를 클라이언트 측에서 수행하게 되었는데 이러한 시스템 구성이나 처리 방식을 팻 클라이언트라고 한다. 팻 클라이언트의 사용이 크게 늘어 씬 클라이언트의 사용이 줄었다가 보안 관점에서 씬 클라이언트의 필요성이 높아지고 있다.
- 단말기에는 데이터를 저장하는 기구를 장치하지 않고, 서비에는 데이터를 처리한 결과를 표시하기만 하는 단말기가 있어 보안에 효과적이다. 새로운 씬 클라이언트의 주요 방식은 서버에서 네트워크를 경유하여 클라의 OS를 가동시키는 네트워크 부팅 방식, 화면처리는 서버에서 하고 이미지만 클라에 전송하는 화면 전송 방식, VMWare 등과 같은 가상 머신을 이용하는 가상형 방식 등이 있다.[5]씬 클라이언트를 위한 프로그래밍 환경은 자바스크립트/AJAX (클라이언트 측면 자동화), ASP, JSP, 루비 온 레일스, 파이썬의 Django, PHP 등을 포함한다.
- 하이브리드 클라이언트(hybrid client)
- 팻 클라이언트와 씬 클라이언트를 합쳐놓은 것이다. 팻 클라이언트처럼 비슷하게 기능을 하지만, 데이터 보관을 위해 서버에 의지한다. 멀티미디어 지원과 고성능을 위한 팻 클라이언트와 뛰어난 관리 능력과 유연성을 위한 씬 클라이언트의 장점을 제공한다.[6]
활용
흔히 접할 수 있는 예시로는 게임 클라이언트가 있는데, 아예 게임 프로세스명이 Client.exe로 존재하는 프로그램도 있으며, 개인 또는 사내 메신저 등으로 기업에서 제공하는 인터넷 기반 서비스 프로그램에 이르기까지 특정 네트워크에 접속하는 거의 모든 프로그램 전부를 클라이언트라고 볼 수 있다. 일반적으로 클라이언트는 서버가 제공하는 서비스를 사용자의 환경에서 구현할 수 있도록 하는 프로그램과 프로그램의 실행에 필요한 확장 파일 및 서비스에 필요한 암호화된 데이터 등으로 구성된다. 예를 들어 멀티 플레이 게임의 클라이언트는 게임 실행에 대한 거의 모든 부분을 구현해 둔 경우가 많으며, 기본적으로 게임에서 사용되는 이미지, 동영상, 캐릭터 모델링 데이터 등의 게임 리소스들과 바이너리 형태의 실행 파일로 이루어져 있다. 그 외의 추가적인 데이터는 클라이언트가 실행된 후 서버와 연동하여 다운로드 받게 된다. 다만 일부 게임은 클라이언트끼리 P2P 방식으로 데이터를 전송하기도 한다. MMORPG 같은 게임에서는 플레이어 간의 데이터를 항상 서버와 실시간으로 동기화하여 서비스한다. 대부분의 연산은 서버에서 수행하고, 클라이언트는 유저의 조작을 서버에게 이벤트로 통보하는 역할을 수행하게 된다. 매칭 위주의 게임에서는 클라이언트에서 필요할 때에만 플레이어의 상태나 이벤트 같은 데이터를 서버에 요청하다가 본 게임으로 넘어가면 실시간으로 동기화하는 형태로 서비스하게 된다. 대부분의 게임 클라이언트는 데이터 파일이 아무나 열어볼 수 없는 확장자로 되어 있는 경우가 많은데 이는 사용자가 파일을 열어 조작하는 것을 일차적으로 방지하기 위함이며, 만약 변조에 성공하여 서버가 잘못된 정보를 보내주게 된다면 그것만으로도 게임에 큰 재앙이 되어 서비스를 통째로 망가뜨릴 가능성도 있다. 따라서 클라이언트는 보통 본래 가지고 있던 데이터도 변조 확인 절차를 거치게 되어 있으며, 서버와 통신하여 받은 데이터도 해시를 통한 파일 변조 검사를 거쳐 사용하는 경우가 대다수이다.[7]
서버-클라이언트
서버-클라이언트(server-client) 구조란 데이터를 저장하고 관리하는 서버 부분과 해당 서버에 접속하여 데티어를 열람하는 클라이언트 부분으로 구성된 네트워크 구조를 말한다. 서버와 클라이언트는 1:N 구조로 연결되어 있다. 즉, 한 대의 서버에 다수의 클라이언트가 접속하여 서비스를 이용한다. 대부분의 인터넷 웹 사이트는 서버-클라이언트 구조로 작동한다. 예를 들어 네이버, 구글, 페이스북, 유튜브 등 인터넷 포털 사이트에 방대한 데이터를 저장하고 다수의 사용자들이 개인 PC나 스마트폰 등의 단말기를 사용하여 해당 서버에 접속하여 필요한 정보를 열람할 수 있다. 서버의 경우 하루 24시간, 1년 365일 인터넷에 연결되어 있어야 한다. 반면 클라이언트의 경우 필요할 때만 켜서 인터넷에 접속하면 된다.[8]
서버-클라이언트 구조는 매우 효율적인 네트워크 구조이다. 다수의 사용자들이 공동으로 열람·복사·수정·관리하는 데이터를 여러 곳에 분산시키지 않고 단일한 중앙 서버에 저장하여 관리함으로써 데이터의 유일성과 통일성을 보장할 수 있다. 중앙 서버만 관리하면 되므로 분산 저장 방식에 비해 네트워크 구성 및 유지관리 비용이 적게 든다. 이러한 장점이 있는 반면 서버-클라이언트 구조는 해킹 공격과 디도스 및 랜섬웨어 공격 등에 취약하다. 모든 중요 데이터가 중앙 서버에 집중되어 있기 때문에 해커가 중앙 서버에 침투하여 데이터를 위변조할 경우 모든 클라이언트들에게 잘못된 정보가 전달된다. 이를 방어하기 위해 방화벽, 웹 방화벽, 침입탐지시스템(IDS), 침입방지시스템(IPS)등 다양한 보안 제품을 설치하고, 서버에 저장된 데이터를 복사하여 별도의 저장장치에 백업을 해야하기 때문에 추가적인 비용이 들어간다. 이러한 단점은 중앙 서버를 두지 않고 데이터를 여러 곳에 분산 저장하는 피투피(P2P) 방식을 이용할 경우 해결 가능하다. 피투피(P2P)란 Peer to Peer의 약자로서, 인터넷으로 다른 사용자의 컴퓨터에 접속하여 각종 정보나 파일을 교환하고 공유할 수 있게 해 주는 서비스이다. 파일 공유를 위한 토렌트(Torrent), 암호화폐인 비트코인과 이더리움, 블록체인(blockchain) 기술 등은 피투피 기반으로 운영된다.[8]
각주
- ↑ 클라이언트 네이버 지식백과 - https://terms.naver.com/entry.nhn?docId=17210&cid=43659&categoryId=43659
- ↑ 클라이언트 네이버 지식백과 - https://terms.naver.com/entry.nhn?docId=817848&cid=42344&categoryId=42344
- ↑ 서버 위키백과 - https://ko.wikipedia.org/wiki/%EC%84%9C%EB%B2%84
- ↑ 한국기술교육직업전문학교, 〈네트워크 기초용어 17 (클라이언트)IT 기술교육의 끝, 한국기술교육직업전문학교〉, 《다음 블로그》, 2016-08-25
- ↑ 5.0 5.1 돼지왕왕돼지, 〈(도서 정리) 56. 씬 클라이언트 - 보안의 기본〉, 《티스토리》, 2019-12-05
- ↑ 클라이언트 위키백과 - https://ko.wikipedia.org/wiki/%ED%81%B4%EB%9D%BC%EC%9D%B4%EC%96%B8%ED%8A%B8_(%EC%BB%B4%ED%93%A8%ED%8C%85)
- ↑ 클라이언트 나무위키 - https://namu.wiki/w/%ED%81%B4%EB%9D%BC%EC%9D%B4%EC%96%B8%ED%8A%B8
- ↑ 8.0 8.1 Caminante, 〈(17일차) 서버·클라이언트 개념, 서버-클라이언트 구조, TCP/IP(TCP, UDP 전송방식)〉, 《티스토리》, 2020-03-14
참고자료
- 클라이언트 네이버 지식백과 - https://terms.naver.com/entry.nhn?docId=17210&cid=43659&categoryId=43659
- 클라이언트 네이버 지식백과 - https://terms.naver.com/entry.nhn?docId=817848&cid=42344&categoryId=42344
- 서버 위키백과 - https://ko.wikipedia.org/wiki/%EC%84%9C%EB%B2%84
같이 보기