클라이언트 서버 모델이란 무엇인가?
클라이언트 서버 모델이란 무엇인가?
서비스 요청자인 클라이언트와 서비스 자원의 제공자인 서버간에 작업을 분리해주는 분산 애플리케이션 구조이자
네트워크 아키텍처를 나타낸다.
대표적인 예로 월드와이드 웹이 있다.
웹사이트에서는 아파치등의 웹서버가 서버역할을 하고, 사용자가 쓰는 웹 브라우저가 클라이언트 프로그램이 된다.
클라이언트란?
컴퓨터와 모바일기기등은 네트워크 통신을 통해 인터넷에 연결돼 있는데
이때의 기기 또는 웹에 접근하는 소프트웨어등의 사용자 측을 말한다.
함축적인 의미를 지니고 있다.
화면을 처리하거나 사용자 입력에 초점이 맞춰져 있다.
서버란?
웹페이지, 사이트, 앱을 저장하는 컴퓨터 또는 소프트웨어.
클라이언트의 요청을 받아 처리하고, 이를 다시 클라이언트에 응답을 보낸다.
어떤 형태로든 클라이언트의 요청을 받아 정보를 제공하면 서버 컴퓨터가 될 수 있다.
데이터의 처리 및 저장, 웹 페이지 지원, 네트워크 활동 관리등의 역할을 수행한다.
그 역할에따라, 웹서버, 와스서버, 디비 서버 등이 있다.
메시지 패턴
요청/응답 패턴: 클라이언트는 요청을 보내고, 서버는 요청을 받으면 반드시 응답을 보낸다.
클라이언트는 서버의 API라는 인터페이스를 바탕으로 서버에 정보를 요청하고, 서버로부터 응답을 받으면 이를 처리하여 리소스를 출력한다.
클라이언트와 서버는 일정하게 정해진 API에따라 응답을 주고 받는다.
웹 브라우저와 서버간에는 주로 http가 쓰인다.
어떻게 동작하는가?
사용자가 클라이언트를 이용해 무언가 리소스를 얻고자 한다. 먼저 브라우저가 웹사이트에 있는 서버의 주소를 찾는다.
클라이언트 명령을 http메시지로 서버에 보낸다. 이 메시지들은 TCP/IP연결을 통해 전송된다.
서버가 클라이언트의 요청을 받아 정절한 요청이라면 200OK라는 상태코드를 띄운다. (적절한 요청 수용됨. 응답 및 요청 리소스 반환)
서버가 클라이언트가 요청한 리소스를 데이터 패킷이라는 형태로 전송한다.
브라우저는 이 패킷들을 받아 다시 원하는 형태의 리소스로 재조립해 화면에 출력한다.
장점
분산 어플리케이션 구조이자, 서버의 입장에서는 처리하는 데이터를 분산시키지 않고 단일한 서버에 저장하여 관리함으로써, 데이터의 유일성과 통일성을 보장할 수 있다. 때문에 탈 중앙 저장 방식에 필요한 합의 알고리즘이 필요없으며, 중앙 서버만 관리하면 되므로, 네트워크 구성 및 유지관리 비용이 적게든다.
단점
해킹공격과 디도스 및 랜섬웨어 공격에 취약하다, 모든 데이터가 중앙서버에 집중되어 있기에, 해커가 중앙서버의 데이터를 위변조 할경우 모든 클라이언트에 잘못된 정보가 전달된다.
즉 보안성유지와 백업에 추가적 비용이 들어간다.
대안?
중앙서버 없이 데이터를 여러곳에 분산 저장하는 P2P방식. 토렌트나 블록체인등이 이에 기반하고 있다.
DNS
원래 서버 주소값은 숫자 덩어리이다. 이를 알아보기 쉽도록 영문으로 접근가능하게 한것이 DNS이다.
해당 도메인 네임서버로 접근해 IP주소 서버로 가서 페이지에 대한 정보를 요청함.
패킷
서버에서 클라이언트로 데이터를 전송할때 쓰는 단위
다량의 데이터를 분할하지 않고 보내면 한번에 한 사용자만 데이터를 받는 Blocking상태에 빠지거나,
데이터가 손실될 수도 있음. 따라서 전체 데이터를 일정 길이로 쪼개 클라이언트에 보내는 데, 이 형식이 바로 패킷.
패킷은 수신처의 정보가 담긴 헤더/ 데이터 / 에러정보가 기록된 테일러 세부분으로 나뉨.
전체 데이터를 서버에서 적절한 길이로 잘라낸 다음, 패킷으로 클라이언트에 보낸 뒤에, 이를 다시 클라이언트에서
재조립하여, 원래 데이터로 만들어냄.
수신처의 정보가 있고 에러 체크도 가능하여 신뢰성 노높음. 표준화된 프로토콜 사용함.
수신처의 정보를 담고 있기 때문에 보안 취약점 존재.(패킷 암호화)
계층 이름 단위(PDU) 예시 프로토콜(Protocols) 디바이스(Device)
7 | 응용 계층(Application Layer) | Data | 텔넷(Telnet), 구글 크롬, 이메일, 데이터베이스 관리 | HTTP, SMTP, SSH, FTP, Telnet, DNS, modbus, SIP, AFP, APPC, MAP | |
6 | 표현 계층(Presentation Layer) | Data | 인코딩, 디코딩, 암호화, 복호화 | ASCII, MPEG, JPEG, MIDI, EBCDIC, XDR, AFP, PAP | |
5 | 세션 계층(Session Layer) | Data | NetBIOS, SAP, SDP, PIPO, SSL, TLS, NWLink, ASP, ADSP, ZIP, DLC | ||
4 | 전송 계층(Transport Layer) | TCP-Segment, UDP-datagram | 특정 방화벽 및 프록시 서버 | TCP, UDP, SPX, SCTP, NetBEUI, RTP, ATP, NBP, AEP, OSPF | 게이트웨이 |
3 | 네트워크 계층(Network Layer) | Packet | 라우터 | IP, IPX, IPsec, ICMP, ARP, NetBEUI, RIP, BGP, DDP, PLP | 라우터 |
2 | 데이터링크 계층(DataLink Layer) | Frame | MAC 주소, 브리지 및 스위치 | Ethernet, Token Ring, AppleTalk, PPP, ATM, MAC, HDLC, FDDI, LLC, ALOHA | 브릿지,스위치 |
1 | 물리 계층(Physical Layer) | Bit | 전압, 허브, 네트워크 어댑터, 중계기 및 케이블 사양, 신호 변경(디지털,아날로그) | 10BASE-T, 100BASE-TX, ISDN, wired, wireless, RS-232, DSL, Twinax | 허브,리피터 |
참고
http://wiki.hash.kr/index.php/OSI_7_계층