Computer >> 컴퓨터 >  >> 네트워킹 >> 인터넷

브라우저에서 URL을 입력하면 어떤 일이 일어날까? 웹 동작 원리 완벽 가이드

웹 개발을 공부하다 보면 Angular나 React 같은 화려한 프레임워크에만 집중하기 쉽습니다. 하지만 그보다 더 근본적인 질문이 있습니다. 바로 '브라우저에서 URL을 입력하면 과연 어떤 일이 일어날까?'라는 질문입니다. 이 글에서는 URL을 입력하는 순간부터 화면에 콘텐츠가 나타나기까지의 전체 과정을 단계별로 살펴보겠습니다.

URL(Uniform Resource Locator)이란?

URL의 정식 명칭인 'Uniform Resource Locator'를 보면 그 의미가 어느 정도 짐작됩니다. 말 그대로 우리가 접근하려는 리소스의 위치, 즉 주소를 담고 있는 것입니다.

일상생활에 비유해 볼까요? 친구 집에 방문하려면 친구 집 주소가 필요합니다. 거대한 웹 세계에서도 마찬가지입니다. 웹사이트에 접속하려면 해당 사이트의 주소가 필요한데, 웹사이트가 '집'이라면 URL은 '주소'에 해당합니다.

URL의 구조

URL이 무엇인지 알았으니, 이제 URL을 이루는 각 요소가 무엇을 의미하는지 살펴보겠습니다. 다음 예시를 함께 볼까요?

https://www.example.com/page1

첫 번째 부분인 'https'는 브라우저가 어떤 프로토콜을 사용해야 하는지 알려줍니다. http, https, ftp 등이 있으며, 프로토콜이란 브라우저가 네트워크상에서 통신할 때 따르는 규칙의 집합을 의미합니다. 특히 https는 정보를 암호화하여 안전하게 주고받는 보안 버전입니다.

두 번째 부분인 'www.example.com'도메인 이름입니다. 친구 집 주소에 비유할 수 있으며, 해당 웹사이트의 정보를 제공하는 서버(특수 목적의 컴퓨터)에 도달하기 위한 주소 역할을 합니다.

URL과 도메인 이름의 차이

'URL도 주소고, 도메인 이름도 주소라니?'라고 혼란스러울 수 있습니다. 핵심 차이는 다음과 같습니다. URL은 완전한 주소로서, 정보를 어떤 방식으로 교환할지(프로토콜), 해당 사이트에 도착한 후 어떤 경로로 이동할지(경로)까지 모두 담고 있습니다. 반면 도메인 이름은 URL을 구성하는 일부입니다.

앞선 비유를 이어가 보면, 친구 집 주소가 도메인 이름이라면, URL은 집 주소에 더해 '별도의 방에서 조용히 대화한다(보안 통신)'처럼 어떤 방식으로 대화할지, 그리고 집에 들어간 후 어느 방으로 향할지(경로)까지 알려주는 것입니다. 즉, 도메인 이름에 추가 정보가 결합된 것이 곧 URL인 셈입니다.

도메인 이름의 비밀: IP 주소와 DNS

도메인 이름은 방대한 웹 세계에서 웹사이트에 고유한 정체성을 부여합니다. 동일한 도메인 이름은 존재할 수 없습니다. 그런데 여기에 숨겨진 이야기가 있습니다.

사실 우리가 URL을 입력하면 실제로는 해당 웹사이트 콘텐츠를 호스팅하는 컴퓨터의 IP 주소에 접속하는 것입니다. 인터넷에 연결된 모든 컴퓨터는 통신을 위한 고유한 IP 주소를 가지고 있기 때문입니다.

'그렇다면 도메인 이름은 왜 필요할까요? IP 주소로 직접 접속하면 되지 않을까?'라는 의문이 들 수 있습니다. 물론 가능하지만, 과연 수많은 웹사이트의 IP 주소를 모두 외울 수 있을까요? 현실적으로 불가능합니다.

스마트폰의 연락처를 떠올려 보세요. 우리는 모든 사람의 전화번호를 외우지 못하지만 이름은 쉽게 기억합니다. 마찬가지로 복잡한 IP 주소 대신 기억하기 쉬운 도메인 이름을 사용하는 것이죠. 이렇게 도메인 이름과 그에 대응하는 IP 주소를 데이터베이스로 저장·관리하는 시스템이 바로 DNS(Domain Name System)입니다.

DNS 조회: 도메인 이름으로 IP 주소 찾기

URL을 입력하면 가장 먼저 도메인 이름에 연결된 IP 주소를 확인해야 합니다. DNS는 마치 전화번호부처럼, 이름(도메인)으로 전화번호(IP 주소)를 찾아주는 역할을 합니다.

브라우저에서 URL을 입력하면 어떤 일이 일어날까? 웹 동작 원리 완벽 가이드


전체적인 개요는 이렇지만, 실제 도메인 조회는 여러 계층을 거치며 구체적으로 다음 단계로 진행됩니다.

1. URL을 입력하면 우선 브라우저 캐시를 확인합니다. 브라우저는 이전에 방문한 사이트의 DNS 기록을 일정 기간 유지하기 때문에, 여기서 도메인에 해당하는 IP 주소가 있는지 먼저 찾아봅니다.

2. 브라우저 캐시에 없다면 운영체제(OS) 캐시, 이어서 라우터 캐시를 순차적으로 확인합니다.

3. 여기까지도 결과를 찾지 못하면 리졸버 서버, 즉 ISP(인터넷 서비스 제공업체)에 도움을 요청합니다. 요청은 ISP로 전달되며 ISP 캐시에서 DNS 조회가 수행됩니다.

4. 그래도 결과가 없다면 DNS 계층 구조의 최상위인 루트 서버로 요청이 전달됩니다. 루트 서버는 직접 IP를 알려주기보다는 어디서 정보를 얻을 수 있는지 안내하는 역할을 합니다. 예를 들어 .com, .net, .gov, .org 같은 최상위 도메인의 IP를 찾는다면 TLD 서버(Top Level Domain 서버)를 찾아가라고 안내합니다.

5. 이제 리졸버는 TLD 서버에 도메인의 IP 주소를 요청합니다. TLD 서버는 도메인의 주소 정보를 보관하며, 정확한 정보를 알고 있는 권한 있는 네임서버(Authoritative Name Server)를 안내합니다.

6. 권한 있는 네임서버는 해당 도메인에 대한 모든 정보를 책임지는 서버입니다. 최종적으로 리졸버(ISP)는 도메인과 연결된 IP 주소를 확보해 브라우저에 전달합니다.

IP 주소를 받은 리졸버는 이를 자신의 캐시에 저장해 둡니다. 덕분에 다음에 동일한 요청이 들어오면 이런 복잡한 과정을 반복하지 않고 캐시에서 바로 IP 주소를 제공할 수 있습니다.

브라우저에서 URL을 입력하면 어떤 일이 일어날까? 웹 동작 원리 완벽 가이드

브라우저와 서버 간 TCP 연결 수립

웹사이트 정보를 보유한 컴퓨터의 IP 주소를 찾았다면, 이제 해당 서버와 연결을 시작합니다. 네트워크 통신에는 프로토콜이 필요한데, 가장 널리 쓰이는 것이 TCP/IP입니다. 두 컴퓨터 사이의 연결은 'TCP 3-way 핸드셰이크(TCP 3-way handshake)'라는 과정을 통해 수립되며, 개략적인 흐름은 다음과 같습니다.

1. 클라이언트 컴퓨터가 SYN 메시지를 전송하여 상대방이 새로운 연결을 받을 준비가 되었는지 확인합니다.

2. 상대 컴퓨터가 새 연결을 수락할 수 있다면, ACK(승인) 메시지와 함께 자신의 SYN 메시지도 함께 보냅니다.

3. 첫 번째 컴퓨터가 이 메시지를 받고, 최종적으로 ACK 메시지를 전송하여 승인합니다.

아래 다이어그램을 참고하면 이해에 도움이 됩니다.

브라우저에서 URL을 입력하면 어떤 일이 일어날까? 웹 동작 원리 완벽 가이드

통신 시작: 요청과 응답 과정

드디어 클라이언트와 서버 사이에 연결이 완성되었습니다. 이제 둘은 서로 정보를 주고받을 수 있습니다. 연결이 성공적으로 수립되면 브라우저(클라이언트)는 서버에 요청(Request)을 보내 원하는 콘텐츠를 달라고 전달합니다. 서버는 모든 요청에 대해 어떤 응답을 보내야 하는지 알고 있으므로, 이에 맞춰 응답(Response)을 반환합니다. 이 응답에는 요청한 웹 페이지는 물론 상태 코드(status code), 캐시 제어(cache-control) 등 다양한 정보가 포함됩니다. 이후 브라우저가 응답받은 콘텐츠를 화면에 렌더링하는 것으로 마무리됩니다.

이것이 바로 URL을 입력했을 때 일어나는 전체 과정입니다. 이처럼 복잡해 보이는 여정이 실제로는 1초도 걸리지 않아 완료된다는 점이 놀랍지 않나요? 이것이 바로 '브라우저에서 URL을 입력하면 어떤 일이 일어나는가?'라는 질문에 대한 답입니다.

읽어주셔서 감사합니다!