웹 브라우저의 검색창에 URL을 입력하면 무슨 일이 일어날까?
단순히 주소를 입력하는 것으로 보일지 모르지만, 실제로는 여러 단계의 복잡한 과정이 진행된다. 이 과정을 단계별로 살펴보자.
사용자가 “www.google.com” 같은 URL을 입력하면 브라우저는 먼저 이 도메인 이름을 IP 주소로 변환해야 한다. 이 과정을 DNS 조회라고 한다.
IP 주소가 확인되면 브라우저는 서버와 TCP 연결을 수립한다.
TCP(Transmission Control Protocol)는 데이터를 신뢰성 있게 전달하기 위한 프로토콜이다.
이 과정에서 3-way handshake라는 절차가 이루어진다.
HTTPS를 사용하는 경우, 이 단계 이후에 SSL/TLS handshake가 추가로 진행된다.
이 과정에서는 보안 인증서를 교환하고, 데이터를 암호화하기 위한 키를 협상한다.
TCP 연결이 성공적으로 이루어지면, 브라우저는 HTTP 요청을 서버로 보낸다.
이 요청은 다음과 같은 정보를 포함한다.
예를 들어, 브라우저가 “GET / HTTP/1.1” 요청을 보내면 이는 서버에게 해당 웹 페이지의 리소스를 보내달라는 요청이다. 이 요청의 구체적인 구조는 아래와 같다.
// State line
GET / HTTP/1.1
// HTTP request headers
Host: www.google.com
User-Agent: Mozilla/5.0
Accept-Language: en-US
// Request body
<BODY>
위 요청은 서버에게 루트 경로(/)의 리소스를 HTTP/1.1 프로토콜을 사용해 요청하는 예시이다.
서버는 요청을 받은 뒤 처리하고, 클라이언트(브라우저)로 응답을 보낸다.
서버의 응답은 다음과 같은 구조로 이루어진다.
예를 들어, 서버가 클라이언트의 요청에 대해 성공적인 응답을 보낼 때의 구조는 다음과 같다:
// State line
HTTP/1.1 200 OK
// HTTP request headers
Content-Type: text/html; charset=UTF-8
Content-Length: 305
// Request body
<html>
<head><title>Example</title></head>
<body>
<h1>Hello, World!</h1>
</body>
</html>
브라우저는 이러한 응답 데이터를 수신하고, 이후 화면에 표시할 준비를 한다.
브라우저는 서버로부터 받은 데이터를 바탕으로 렌더링 과정을 수행한다.
검색창에 URL을 입력하면 단순한 텍스트 입력 이상의 복잡한 과정이 진행된다.
DNS 조회를 도로의 표지판 찾기에 비유할 수 있다면, 서버와의 통신은 목적지에 도착하기 위한 여정이며, 브라우저 렌더링은 최종 목적지에 도착해 경치를 즐기는 과정이라고 할 수 있다.
이 모든 과정이 눈 깜빡할 사이에 이루어지지만, 이러한 과정을 이해하면 웹 작동 원리에 한 발짝 더 가까이 다가설 수 있다.