우리가 흔히 웹사이트를 접속할 때는 웹 브라우저 프로그램을 사용한다. 일반적으로 브라우저는 다음과 같은 기능을 수행한다.
1. 웹 페이지 서버에 요청(request)하여 서버의 응답(response)을 웹 문서 형태로 받는다.
2. 받은 웹 문서(html, css 등)을 렌더링하여 모니터 화면에 웹 페이지를 표시한다.
웹 브라우저의 동작 방식을 이해하려면 서버와 클라이언트를 알아볼 필요가 있다.
클라이언트는 말 그대로 사용자-> 서비스를 사용하는 사람이라고 볼 수 있다.(스마트폰, pc 등)
클라이언트가 요청을 보내면 서버가 응답하는 구조가 기본적인 방식이다. 이를 따르는 대표적인 예시는 웹 서비스가 있다.
즉, 클라이언트는 일종의 고객이라고 볼 수 있다. 클라이언트는 서버에 요청을 보내고 응답이 도착할 때 까지 기다린다. 서버로부터 응답을 받으면 서버의 응답을 처리하여 화면에 출력한다.
로그인 페이지를 예시로 들면
1. 클라이언트가 ID와 PW를 입력해 로그인을 요청한다.
2. 로그인이 성공한다면 성공 응답, 실패한다면 실패 응답을 서버가 보내주고 클라이언트는 그 응답을 받는다.
3. 응답을 받으면 응답에 따른 화면을 출력한다.
서버는 클라이언트로부터 받은 요청을 처리해 응답을 전송한다. 대표적으로는 웹 서버가 있다.
그렇다면 서버는 어떠한 문서를 클라이언트에게 보내주게 될까? 그 대표적인 것으로는 HTML이 있다.
HTML은 웹 문서를 작성하기 위한 프로그래밍 언어다. 여기서 마크업(markup)이란 웹 문서가 모니터 화면에 보이는 형태를 결정하는 구조를 말한다. 그리고 이 문서를 주고받기 위해서는 HTTP라는 프로토콜을 따를 필요가 있다.
HTTP는 하이퍼텍스트를 전송하기 위해 개발된 프로토콜로 간편히 데이터를 전송할 수 있게 해준다.
웹 브라우저의 주소 표시줄이 URL을 입력하고 접속을 시도한다. URL은 인터넷에 존재하는 특정한 정보 자원의 종류와 위치를 나타내는 문자열이다.
ex) https://www.google.co.kr/?hl=ko
여기서 https 부분이 프로토콜이고 www.google.co.kr 부분이 인터넷의 주소이다.
이때 웹은 HTTP 프로토콜을 이용해 수없이 많은 페이지로 링크를 타고 이동할 수 있다. 웹에서는 많은 페이지가 마치 거미줄과 같은 연결 형태를 가진다.
웹 브라우저의 구조를 도식화하면 아래와 같다.
실질적으로 웹 브라우저는 다음과 같이 동작하는것이 일반적이다.
1. 웹 클라이언트는 웹 브라우저를 이용한다.
2. 웹 브라우저에 주소를 입력하면 GET 방식으로 서버에 웹 문서를 요청한다.
3. 웹 서버는 적절한 웹 문서를 찾아 응답한다.
4. 이후에 웹 브라우저는 문서를 화면에 표시한다.