웹 서버에 브라우저 사이엔 어떤 일이 생길까요?
브라우저를 열고 네이버나 구글과 같은 검색 엔진에 접속하여 검색을 원하는 검색어를 입력하여 나온 수많은 웹 페이지 링크 중 하나를 클릭하면 어떤 일이 발생할까요?
먼저 링크에 걸려있는 인터넷 주소를 알아봅시다. 인터넷 주소는 다음과 같이 사용하는 프로토콜, 도메인, 경로로 이루어져 있습니다.
다시 본론으로 돌아와서 저렇게 생긴 링크 주소를 클릭하면 발생하는 일을 순서대로 나열하면 다음과 같습니다.
① 링크 주소의 도메인에 접속을 위해 DNS에 IP 주소를 질의합니다.
브라우저는 제일 먼저 blog.naver.com이라는 도메인 주소의 IP 주소를 알아내야 합니다. 도메인 주소는 사람이 이해하고 기억할 수 있는 수단이고 브라우저는 이해할 수 없는 주소거든요. 이때 IP 주소를 알기 위해 사용하는 시스템이 DNS(Domain Name System)입니다. DNS가 알려준 IP 주소는 웹 서버의 주소일 수도 있고 인터넷상의 CDN 엣지 서버 혹은 프락시(proxy) 서버 일 수도 있습니다. (일단 웹 서버인 것으로 가정..)
② DNS에서 받은 IP(웹 서버 주소)로 TCP 연결을 시도합니다. 웹에 사용하는 HTTP가 TCP이기 때문입니다. TCP는 안정적이고 연결 지향적인 프로토콜이므로 연결 세션 설정을 위해 3Way Handshake라 부르는 3단계의 연결 과정을 시작합니다.
③ 브라우저(클라이언트)와 웹 서버(서버)는 TCP 3Way Handshake를 통해 TCP 연결을 맺습니다.
- SYN은 브라우저가 웹 서버에게 연결을 요청하는 신호입니다.
- SYN/ACK는 웹 서버가 브라우저에게 연결을 허락하는 과정입니다.
- SYN/ACK를 받은 브라우저는 ACK 응답을 하면서 연결 설정을 위한 준비를 합니다.
④ HTTPS를 사용하므로 브라우저와 웹 서버는 SSL Handshake를 통해 HTTPS 연결을 맺습니다. 이 과정을 통해 브라우저와 웹 서버는 서로 암호화 통신을 시작할 수 있도록 서로의 인증서와 신분을 확인하고 어떤 암호화 방식을 사용할지 결정합니다.
⑤ 생성된 HTTPS 연결을 통해 브라우저는 GET 메서드로 해당 URL의 콘텐츠를 웹 서버에 요청합니다. 브라우저가 웹 서버에게 요청하는 종류(type)을 메서드(method)라고 하는데, 단순하게 웹 페이지 주소를 통해 콘텐츠를 요청하는 메서드가 바로 "GET"입니다.
⑥ 웹 서버는 요청된 도메인, 디렉터리, 자원 경로를 통해 해당 콘텐츠를 찾아 브라우저에 전달합니다. 정상적으로 콘텐츠를 전달하는 경우 웹 서버의 응답 코드는 "200 OK"이며 HTTP 헤더와 HTTP 바디(혹은 payload)로 이루어진 HTTP 메시지를 브라우저에게 보냅니다.
⑦ 브라우저는 웹 서버에게 받은 HTTP 메시지를 해석합니다. 헤더에서 콘텐츠의 세부 정보를 얻고 바디에서 얻은 HTML을 해석하여 브라우저 화면에 렌더링 합니다.
⑧ (사용된 HTTPS 연결을 끊거나 재사용을 위해 유지합니다.)
이상으로 링크를 클릭하였을 때 브라우저(클라이언트)와 웹 서버의 작동을 (아주 간략하게) 알아보았습니다.