2. Server-Client 모델
2.1 웹사이트에 접속할 때 일어나는 과정
2.1.1 서버 클라이언트 모델이 동작하는 방식 (웹사이트에 접속할 때 일어나는 과정)
- 사용자가 naver.com 입력
- 주체: 사용자 (leon)
- 설명: 네이버 웹사이트를 보기 위해 브라우저 주소창에 naver.com을 입력함.
- 브라우저가 요청 생성
- 주체: 브라우저 (예: Chrome)
- 설명: naver.com의 루트 경로(/)에 대해 HTTP GET 요청을 만들 준비를 함.
이때 실제 요청은 아직 발생하지 않고, 우선 IP 주소 조회가 필요함.
- 도메인 이름(naver.com)을 IP 주소로 변환 (DNS)
- 주체: DNS 서버
- 설명: 브라우저가 DNS에 naver.com의 실제 위치(IP 주소)를 요청함.
DNS는 이를 찾아서 예: 1.1.1.9 같은 IP 주소를 브라우저에 알려줌.
- 브라우저가 해당 IP 주소로 GET 요청 전송
- 주체: 브라우저 → 인터넷을 통해 Naver 서버
- 설명: 브라우저는 받은 IP 주소(1.1.1.9)로 GET / 요청을 보냄.
이 요청은 ISP, 백본, 라우터 등을 거쳐 네이버 서버로 전달됨.
- 네이버 서버가 요청을 처리
- 주체: 네이버의 웹 서버
- 설명: GET / 요청을 받은 웹 서버는 기본적으로 index.html 파일을 찾음.
해당 파일이 존재하면 이를 읽어 응답 준비를 함.
- 네이버 서버가 응답 전송 (index.html)
- 주체: 네이버 웹 서버 → 인터넷 경로
- 설명: index.html을 응답 데이터로 만들어, 요청자의 IP 주소(부산에 있는 컴퓨터)로 전송함.
- 응답이 인터넷을 통해 클라이언트에게 도착
- 주체: 인터넷 경로(라우터, 백본망 등)
- 설명: 네이버 서버에서 보낸 데이터(index.html)가 경로를 따라 되돌아와 클라이언트의 브라우저에 도착함.
- 브라우저가 index.html을 렌더링
- 주체: 브라우저
- 설명: 받은 index.html을 해석하여 웹페이지로 렌더링함.
HTML은 웹페이지의 구조와 내용을 표현하기 위한 언어이며, 이를 시각적으로 화면에 표시함.
2.2 Server - Client 의 의미
2.2.1 Server - Client 의 의미
둘다 서로간의 역할(Role)로서의 정의이다.
Client: 요청을 하는 쪽
Server: 요청에 응답하는 쪽
2.2.2 Server - Client 의 특징
-
Server 가 있어야, Client 가 요청을 할 수 있다.
-
Server/Client는 서로간의 역할(Role)이다. 즉, 둘 다 존재해야 한다. 하나만 존재할 수없다.
-
Server/Client가 정보를 주고 받기 위해서는 약속(protocol)이 필요하다.
- 컴퓨터는 한 비트씩 읽으므로, 처음 데이터부터 몇 번째 데이터까지 무슨 의미인지를 미리 알아야 계속해서 들어오는 연속적인(stream) 데이터에서 몇 번째 까지, 어떻게 읽을지 해석할 수 있다.
2.2.3 Server - Client 용어의 오해
엄밀하게 말하면, Server/Client는 특정 기술을 의미하지 않는다.
- 예) 백엔드 서버를 만들었을 때, 그 서버는 Client 입장에서는 API의 서버이지만, 조회하는 데이터베이스와의 관계에서는 Client가 된다.
채용 공고에서 말하는 서버개발자, 클라이언트 개발자는 그럼 뭔가요?
- 통상적으로 JD에서 말하는 서버개발자, 클라이언트 개발자는 기술적으로 정확한 용어라기 보다는 사용하다보니 굳어진 용어라고 생각하면 된다. 서버 개발자가 개발하는 서버에서는 HTTP client, DB client 등 많은 클라이언트를 개발하게 된다. 여기서 말하는서버/Client 는 사용자(고객) 입장에서 눈에 보이지 않는 영역을 서버, 눈에 보이는 영역(웹페이지, 모바일 앱)을 개발하는 쪽을 클라이언트라고 생각하면 된다. 둘 사이의 관계는 client-server 관계가 맞다.