클라이언트(Client): 서비스를 요청하는 주체
- 예: 웹 브라우저, 모바일 앱, 게임 사용자, 메시지 앱 사용자 등
서버(Server): 클라이언트의 요청을 처리하고 응답하는 주체
- 예: 웹 서버, 게임 서버, 데이터베이스 서버 등
클라이언트와 서버는 항상 짝을 이루며, 네트워크 통신의 기본 구조이다.
📎 예를 들어, 사용자가 크롬 브라우저로 www.naver.com에 접속할 때:
• 클라이언트: 크롬 브라우저
• 서버: 네이버 웹 서버
• 요청(Request): 웹페이지 보여줘
• 응답(Response): HTML 페이지, 이미지, 광고 등
: 클라이언트가 보낸 메시지를 그대로 다시 돌려주는 서버이다.
예:
// 받은 데이터를 그대로 다시 보냄
connection.receive { data in
connection.send(data)
}
: 네트워크 통신을 7단계 계층으로 나눠서 각 계층의 역할을 정의한 국제 표준화 모델
통신을 7개의 계층으로 나누어 책임과 기능을 분리해서 설계 및 문제 해결을 쉽게 할 수 있다.
각 계층은 서로 독립적으로 동작하며, 위 아래 계층에 필요한 서비스를 제공한다.
계층 번호 | 계층 이름 | 주요 기능 및 예시 프로토콜 |
---|---|---|
7 | 응용 계층 (Application) | 사용자 인터페이스, HTTP, FTP, SMTP 등 |
6 | 표현 계층 (Presentation) | 인코딩, 암호화, 직렬화(JSON/XML 등) |
5 | 세션 계층 (Session) | 세션 관리, 동기화, 로그인 상태 유지 등 |
4 | 전송 계층 (Transport) | TCP/UDP, 포트 번호, 오류 제어, 흐름 제어 |
3 | 네트워크 계층 (Network) | IP 주소, 라우팅, 패킷 전달 |
2 | 데이터 링크 계층 | MAC 주소, 프레임, 에러 감지 |
1 | 물리 계층 (Physical) | 전기/광 신호, 케이블, 리피터, 허브 등 |
: 네트워크 상에서 클라이언트와 서버가 물리적으로 연결된 상태를 의미한다.
전화 통화가 끊어지면 더 이상 대화할 수 없는 것과 같다.
: 클라이언트가 로그인하거나 특정 정보를 서버와 논리적으로 공유하는 상태를 의미한다.
웹사이트에서 로그인하면 나의 장바구니 상태가 유지된다.
▶️ 세션 정보가 서버에 저장되어 있기 때문이다.
HTTP는 본질적으로 무상태(stateless) 프로토콜이므로, 별도의 세션 관리 기법이 필요하다. (5계층 기반)
웹 애플리케이션 구현 시 HTTP의 무상태 특성을 보완하기 위해 개발자가 세션 계층의 논리를 어플리케이션 레벨에서 직접 구현하는 경우가 많다.