클라이언트 편집하기

이동: 둘러보기, 검색

경고: 로그인하지 않았습니다. 편집을 하면 IP 주소가 공개되게 됩니다. 로그인하거나 계정을 생성하면 편집자가 아이디(ID)으로 기록되고, 다른 장점도 있습니다.

편집을 되돌릴 수 있습니다. 이 편집을 되돌리려면 아래의 바뀐 내용을 확인한 후 저장해주세요.
최신판 당신의 편집
16번째 줄: 16번째 줄:
  
 
클라이언트는 일반적으로 팻 클라이언트, 씬 클라이언트, 하이브리드 클라이언트로 나뉜다.
 
클라이언트는 일반적으로 팻 클라이언트, 씬 클라이언트, 하이브리드 클라이언트로 나뉜다.
 +
 +
=== 종류 ===
 
* '''팻 클라이언트'''(fat client)
 
* '''팻 클라이언트'''(fat client)
 
: 리치 클라이언트(rich client), 씩 클라이언트(thick client)라고도 한다. 스스로 다량의 데이터를 처리하는 클라이언트로 서버에 꼭 의지하지는 않는다. 팻 클라이언트는 개인용 컴퓨터의 한 형태로 가장 흔하게 쓰이며 개인용 컴퓨터나 노트북 컴퓨터는 독립적으로 수행한다. 인터넷 환경이 없으면 일을 할 수 없어 편리성이 떨어지는 씬 클라이언트에 비해 서버에 의존하지 않아 편리성이 높지만, 업무용 PC를 분실하게 되는 경우 기밀 정보가 유출되는 사고가 발생할 수 있다. 팻 클라이언트에서는 PC 상에서 대부분의 처리를 하기 때문에 데이터도 PC에 저장된다. 그래서 PC 자체를 분실하면 보안상의 위험이 상당히 커진다.<ref name="왕돼지">돼지왕왕돼지, 〈[https://aroundck.tistory.com/6422 (도서 정리) 56. 씬 클라이언트 - 보안의 기본]〉, 《티스토리》, 2019-12-05</ref>리치 클라이언트의 프로그래밍 언어 및 개발 도구에는 일반적으로 [[델파이]](Delphi), [[닷넷]] 프레임워크, [[자바]](Java), 비주얼 스튜디오가 있다.
 
: 리치 클라이언트(rich client), 씩 클라이언트(thick client)라고도 한다. 스스로 다량의 데이터를 처리하는 클라이언트로 서버에 꼭 의지하지는 않는다. 팻 클라이언트는 개인용 컴퓨터의 한 형태로 가장 흔하게 쓰이며 개인용 컴퓨터나 노트북 컴퓨터는 독립적으로 수행한다. 인터넷 환경이 없으면 일을 할 수 없어 편리성이 떨어지는 씬 클라이언트에 비해 서버에 의존하지 않아 편리성이 높지만, 업무용 PC를 분실하게 되는 경우 기밀 정보가 유출되는 사고가 발생할 수 있다. 팻 클라이언트에서는 PC 상에서 대부분의 처리를 하기 때문에 데이터도 PC에 저장된다. 그래서 PC 자체를 분실하면 보안상의 위험이 상당히 커진다.<ref name="왕돼지">돼지왕왕돼지, 〈[https://aroundck.tistory.com/6422 (도서 정리) 56. 씬 클라이언트 - 보안의 기본]〉, 《티스토리》, 2019-12-05</ref>리치 클라이언트의 프로그래밍 언어 및 개발 도구에는 일반적으로 [[델파이]](Delphi), [[닷넷]] 프레임워크, [[자바]](Java), 비주얼 스튜디오가 있다.
24번째 줄: 26번째 줄:
 
: 팻 클라이언트와 씬 클라이언트를 합쳐놓은 것이다. 팻 클라이언트처럼 비슷하게 기능을 하지만, 데이터 보관을 위해 서버에 의지한다. 멀티미디어 지원과 고성능을 위한 팻 클라이언트와 뛰어난 관리 능력과 유연성을 위한 씬 클라이언트의 장점을 제공한다.<ref>클라이언트(컴퓨팅) 위키백과 - 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)</ref>
 
: 팻 클라이언트와 씬 클라이언트를 합쳐놓은 것이다. 팻 클라이언트처럼 비슷하게 기능을 하지만, 데이터 보관을 위해 서버에 의지한다. 멀티미디어 지원과 고성능을 위한 팻 클라이언트와 뛰어난 관리 능력과 유연성을 위한 씬 클라이언트의 장점을 제공한다.<ref>클라이언트(컴퓨팅) 위키백과 - 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)</ref>
  
=== 서버-클라이언트 ===
+
== 활용 ==
 +
흔히 접할 수 있는 예시로는 게임 클라이언트가 있는데, 아예 게임 프로세스명이 Client.exe로 존재하는 프로그램도 있으며, 개인 또는 사내 메신저 등으로 기업에서 제공하는 인터넷 기반 서비스 프로그램에 이르기까지 특정 네트워크에 접속하는 거의 모든 프로그램 전부를 클라이언트라고 볼 수 있다. 일반적으로 클라이언트는 서버가 제공하는 서비스를 사용자의 환경에서 구현할 수 있도록 하는 프로그램과 프로그램의 실행에 필요한 확장 파일 및 서비스에 필요한 암호화된 데이터 등으로 구성된다. 예를 들어 멀티 플레이 게임의 클라이언트는 게임 실행에 대한 거의 모든 부분을 구현해 둔 경우가 많으며, 기본적으로 게임에서 사용되는 이미지, 동영상, 캐릭터 모델링 데이터 등의 게임 리소스들과 바이너리 형태의 실행 파일로 이루어져 있다. 그 외의 추가적인 데이터는 클라이언트가 실행된 후 서버와 연동하여 다운로드받게 된다. 다만 일부 게임은 클라이언트끼리 피투피 방식으로 데이터를 전송하기도 한다. [[MMORPG]] 같은 게임에서는 플레이어 간의 데이터를 항상 서버와 실시간으로 동기화하여 서비스한다. 대부분의 연산은 서버에서 수행하고, 클라이언트는 유저의 조작을 서버에게 이벤트로 통보하는 역할을 수행하게 된다. 매칭 위주의 게임에서는 클라이언트에서 필요할 때에만 플레이어의 상태나 이벤트 같은 데이터를 서버에 요청하다가 본 게임으로 넘어가면 실시간으로 동기화하는 형태로 서비스하게 된다. 대부분의 게임 클라이언트는 데이터 파일이 아무나 열어볼 수 없는 확장자로 되어 있는 경우가 많은데 이는 사용자가 파일을 열어 조작하는 것을 일차적으로 방지하기 위함이며, 만약 변조에 성공하여 서버가 잘못된 정보를 보내주게 된다면 그것만으로도 게임에 큰 재앙이 되어 서비스를 통째로 망가뜨릴 가능성도 있다.  따라서 클라이언트는 보통 본래 가지고 있던 데이터도 변조 확인 절차를 거치게 되어 있으며, 서버와 통신하여 받은 데이터도 해시를 통한 파일 변조 검사를 거쳐 사용하는 경우가 대다수이다.<ref>클라이언트 나무위키 - https://namu.wiki/w/%ED%81%B4%EB%9D%BC%EC%9D%B4%EC%96%B8%ED%8A%B8</ref>
 +
 
 +
== 서버-클라이언트 ==
 
서버-클라이언트(server-client) 구조란 데이터를 저장하고 관리하는 서버 부분과 해당 서버에 접속하여 데이터를 열람하는 클라이언트 부분으로 구성된 네트워크 구조를 말한다. 서버와 클라이언트는 1:N 구조로 연결되어 있다. 즉, 한 대의 서버에 다수의 클라이언트가 접속하여 서비스를 이용한다. 대부분의 인터넷 웹 사이트는 서버-클라이언트 구조로 작동한다. 예를 들어 [[네이버㈜]](Naver), [[구글]](Google), [[페이스북]](Facebook), [[유튜브]](YouTube) 등 인터넷 포털 사이트에 방대한 데이터를 저장하고 다수의 사용자들이 개인 PC나 스마트폰 등의 단말기를 사용하여 해당 서버에 접속하여 필요한 정보를 열람할 수 있다. 서버의 경우 하루 24시간, 1년 365일 인터넷에 연결되어 있어야 한다. 반면 클라이언트의 경우 필요할 때만 켜서 인터넷에 접속하면 된다.<ref name="Caminante">Caminante, 〈[https://workatit.tistory.com/m/15?category=841482 (17일차) 서버·클라이언트 개념, 서버-클라이언트 구조, TCP/IP(TCP, UDP 전송방식)]〉, 《티스토리》, 2020-03-14</ref>
 
서버-클라이언트(server-client) 구조란 데이터를 저장하고 관리하는 서버 부분과 해당 서버에 접속하여 데이터를 열람하는 클라이언트 부분으로 구성된 네트워크 구조를 말한다. 서버와 클라이언트는 1:N 구조로 연결되어 있다. 즉, 한 대의 서버에 다수의 클라이언트가 접속하여 서비스를 이용한다. 대부분의 인터넷 웹 사이트는 서버-클라이언트 구조로 작동한다. 예를 들어 [[네이버㈜]](Naver), [[구글]](Google), [[페이스북]](Facebook), [[유튜브]](YouTube) 등 인터넷 포털 사이트에 방대한 데이터를 저장하고 다수의 사용자들이 개인 PC나 스마트폰 등의 단말기를 사용하여 해당 서버에 접속하여 필요한 정보를 열람할 수 있다. 서버의 경우 하루 24시간, 1년 365일 인터넷에 연결되어 있어야 한다. 반면 클라이언트의 경우 필요할 때만 켜서 인터넷에 접속하면 된다.<ref name="Caminante">Caminante, 〈[https://workatit.tistory.com/m/15?category=841482 (17일차) 서버·클라이언트 개념, 서버-클라이언트 구조, TCP/IP(TCP, UDP 전송방식)]〉, 《티스토리》, 2020-03-14</ref>
  
30번째 줄: 35번째 줄:
  
 
사용자가 특정 웹사이트를 방문했을 때 저장소의 한 형태로 필요한 몇 가지 정보들을 정해진 유효기간까지 사용할 수 있도록 해주는 기능인 [[쿠키]](cookie)가 만들어지는데 이 쿠키에 대해 혼동되는 부분이 있다. 바로 서버 측인가 아니면 클라이언트 측이냐 하는 것이다. 이런 문제는 서버 측 언어와 클라이언트 언어 둘 다 쿠키사용과 관련된 API를 가지고 있기 때문이다. 그렇기 때문에 쿠키 선언을 둘 다 해야 하는지 아니면 한쪽만 해야 하는지 혼동할 수 있는데 이러한 쿠키 정보는 서버 측이 아니라 클라이언트 측에 저장된다.<ref>〈[https://webisfree.com/2015-12-28/%EC%84%9C%EB%B2%84%EC%B8%A1-%EC%BF%A0%ED%82%A4%EC%99%80-%ED%81%B4%EB%9D%BC%EC%9D%B4%EC%96%B8%ED%8A%B8%EC%B8%A1-%EC%BF%A0%ED%82%A4%EC%9D%98-%EC%B0%A8%EC%9D%B4%EC%A0%90%EC%9D%80 서버측 쿠키와 클라이언트측 쿠키의 차이점은?]〉, 《웹이즈프리》, 2017-09-21</ref>
 
사용자가 특정 웹사이트를 방문했을 때 저장소의 한 형태로 필요한 몇 가지 정보들을 정해진 유효기간까지 사용할 수 있도록 해주는 기능인 [[쿠키]](cookie)가 만들어지는데 이 쿠키에 대해 혼동되는 부분이 있다. 바로 서버 측인가 아니면 클라이언트 측이냐 하는 것이다. 이런 문제는 서버 측 언어와 클라이언트 언어 둘 다 쿠키사용과 관련된 API를 가지고 있기 때문이다. 그렇기 때문에 쿠키 선언을 둘 다 해야 하는지 아니면 한쪽만 해야 하는지 혼동할 수 있는데 이러한 쿠키 정보는 서버 측이 아니라 클라이언트 측에 저장된다.<ref>〈[https://webisfree.com/2015-12-28/%EC%84%9C%EB%B2%84%EC%B8%A1-%EC%BF%A0%ED%82%A4%EC%99%80-%ED%81%B4%EB%9D%BC%EC%9D%B4%EC%96%B8%ED%8A%B8%EC%B8%A1-%EC%BF%A0%ED%82%A4%EC%9D%98-%EC%B0%A8%EC%9D%B4%EC%A0%90%EC%9D%80 서버측 쿠키와 클라이언트측 쿠키의 차이점은?]〉, 《웹이즈프리》, 2017-09-21</ref>
 
== 활용 ==
 
흔히 접할 수 있는 예시로는 게임 클라이언트가 있는데, 아예 게임 프로세스명이 Client.exe로 존재하는 프로그램도 있으며, 개인 또는 사내 메신저 등으로 기업에서 제공하는 인터넷 기반 서비스 프로그램에 이르기까지 특정 네트워크에 접속하는 거의 모든 프로그램 전부를 클라이언트라고 볼 수 있다. 일반적으로 클라이언트는 서버가 제공하는 서비스를 사용자의 환경에서 구현할 수 있도록 하는 프로그램과 프로그램의 실행에 필요한 확장 파일 및 서비스에 필요한 암호화된 데이터 등으로 구성된다. 예를 들어 멀티 플레이 게임의 클라이언트는 게임 실행에 대한 거의 모든 부분을 구현해 둔 경우가 많으며, 기본적으로 게임에서 사용되는 이미지, 동영상, 캐릭터 모델링 데이터 등의 게임 리소스들과 바이너리 형태의 실행 파일로 이루어져 있다. 그 외의 추가적인 데이터는 클라이언트가 실행된 후 서버와 연동하여 다운로드받게 된다. 다만 일부 게임은 클라이언트끼리 피투피 방식으로 데이터를 전송하기도 한다. [[MMORPG]] 같은 게임에서는 플레이어 간의 데이터를 항상 서버와 실시간으로 동기화하여 서비스한다. 대부분의 연산은 서버에서 수행하고, 클라이언트는 유저의 조작을 서버에게 이벤트로 통보하는 역할을 수행하게 된다. 매칭 위주의 게임에서는 클라이언트에서 필요할 때에만 플레이어의 상태나 이벤트 같은 데이터를 서버에 요청하다가 본 게임으로 넘어가면 실시간으로 동기화하는 형태로 서비스하게 된다. 대부분의 게임 클라이언트는 데이터 파일이 아무나 열어볼 수 없는 확장자로 되어 있는 경우가 많은데 이는 사용자가 파일을 열어 조작하는 것을 일차적으로 방지하기 위함이며, 만약 변조에 성공하여 서버가 잘못된 정보를 보내주게 된다면 그것만으로도 게임에 큰 재앙이 되어 서비스를 통째로 망가뜨릴 가능성도 있다.  따라서 클라이언트는 보통 본래 가지고 있던 데이터도 변조 확인 절차를 거치게 되어 있으며, 서버와 통신하여 받은 데이터도 해시를 통한 파일 변조 검사를 거쳐 사용하는 경우가 대다수이다.<ref>클라이언트 나무위키 - https://namu.wiki/w/%ED%81%B4%EB%9D%BC%EC%9D%B4%EC%96%B8%ED%8A%B8</ref>
 
  
 
{{각주}}
 
{{각주}}

해시넷에서의 모든 기여는 다른 기여자가 편집, 수정, 삭제할 수 있다는 점을 유의해 주세요. 만약 여기에 동의하지 않는다면, 문서를 저장하지 말아 주세요.
또한, 직접 작성했거나 퍼블릭 도메인과 같은 자유 문서에서 가져왔다는 것을 보증해야 합니다 (자세한 사항은 해시넷:저작권 문서를 보세요). 저작권이 있는 내용을 허가 없이 저장하지 마세요!

취소 | 편집 도움말 (새 창에서 열림)