본문 바로가기

IT상식

웹사이트는 주소를 입력하면 어떻게 화면에 나타날까?

1. URL과 DNS: 사람이 입력한 웹 주소를 컴퓨터가 찾는 방법

웹사이트에 접속하는 과정은 사용자가 웹브라우저의 주소창에 URL을 입력하는 순간부터 시작된다. URL(Uniform Resource Locator)은 인터넷에서 특정 웹 자원의 위치를 나타내는 주소다. 예를 들어 https://www.example.com이라는 주소를 입력하면 브라우저는 먼저 이 주소가 어떤 서버를 가리키는지 확인해야 한다. 여기서 중요한 역할을 하는 것이 DNS(Domain Name System)다. 컴퓨터와 인터넷 장비는 실제 통신 과정에서 IP 주소를 사용한다. IP 주소는 142.250.xxx.xxx처럼 숫자로 구성되어 있기 때문에 사람이 기억하기 어렵다. 따라서 DNS는 사람이 읽기 쉬운 도메인 이름을 해당 서버의 IP 주소로 변환해 주는 일종의 인터넷 전화번호부 역할을 한다.

사용자가 브라우저에 www.example.com을 입력하면 브라우저는 먼저 자체적으로 이전에 알아낸 DNS 정보를 가지고 있는지 확인한다. 정보가 없다면 운영체제와 DNS 서버에 도메인의 IP 주소를 질의한다. DNS 서버는 필요한 정보를 찾아 브라우저에 IP 주소를 알려준다. 이후 브라우저는 해당 IP 주소를 이용해 실제 웹서버와 통신을 시작한다. 물론 현대적인 인터넷에서는 DNS 캐시, 통신사업자의 DNS 서버, 여러 단계의 DNS 서버 등이 사용되기 때문에 모든 접속이 매번 처음부터 같은 과정을 거치는 것은 아니다.

실제 사례로 우리가 쇼핑몰 주소를 입력한다고 생각해 보자. 사용자가 인터넷 쇼핑몰의 도메인을 입력하면 브라우저는 먼저 그 도메인에 대응하는 서버의 위치를 확인한다. 만약 DNS 정보가 정상적으로 조회되지 않으면 인터넷 연결 자체는 정상인데도 웹사이트 주소를 입력했을 때 사이트가 열리지 않을 수 있다. 반대로 DNS 조회가 정상적으로 이루어지면 브라우저는 다음 단계인 서버와의 연결 과정으로 넘어간다. 즉, 주소창에 웹사이트 이름을 입력하는 행위는 단순히 화면에 이름을 표시하는 것이 아니라, 인터넷에서 해당 서비스를 제공하는 컴퓨터의 위치를 찾아가는 첫 번째 과정이다.

2. TCP/IP와 HTTPS: 브라우저와 웹서버가 안전하게 연결되는 과정

웹브라우저가 서버의 IP 주소를 알아냈다고 해서 곧바로 웹페이지가 화면에 나타나는 것은 아니다. 브라우저와 서버 사이에 데이터를 주고받을 수 있는 통신 연결이 필요하다. 일반적인 웹 환경에서는 TCP/IP와 같은 네트워크 프로토콜이 이러한 통신을 담당한다. 특히 오늘날 대부분의 웹사이트는 HTTPS를 사용한다. HTTPS는 HTTP 통신에 TLS라는 암호화 기술을 적용한 것으로, 브라우저와 서버 사이에서 오가는 데이터를 다른 사람이 쉽게 확인하거나 변조하지 못하도록 보호한다.

사용자가 https://로 시작하는 웹사이트에 접속하면 브라우저는 서버가 제시하는 인증서를 확인하고 암호화된 통신을 위한 절차를 수행한다. 이 과정에서 브라우저는 서버가 신뢰할 수 있는 기관에서 발급받은 인증서를 사용하는지, 접속하려는 도메인과 인증서의 정보가 일치하는지 등을 확인한다. 정상적으로 확인되면 브라우저와 서버는 암호화된 통신에 사용할 세션을 준비한다. 사용자가 로그인하거나 결제 정보를 입력하는 웹사이트에서 HTTPS가 중요한 이유도 바로 여기에 있다.

그다음 브라우저는 서버에 HTTP 요청을 보낸다. 대표적인 요청 방식에는 GET과 POST가 있다. 웹페이지를 처음 불러올 때는 GET 요청이 많이 사용된다. 예를 들어 사용자가 뉴스 사이트의 첫 화면을 요청하면 브라우저는 서버에 해당 페이지의 자료를 보내 달라고 요청한다. 서버는 요청을 분석하고 필요한 데이터를 준비한 뒤 HTTP 응답을 브라우저에 전달한다. 응답에는 HTML 문서뿐만 아니라 상태 코드, 콘텐츠 유형, 캐시 관련 정보 등 다양한 HTTP 헤더가 포함될 수 있다.

실제 사례를 보면 주소창에 온라인 쇼핑몰을 입력한 뒤 상품 페이지를 열었을 때 브라우저와 서버 사이에서는 눈에 보이지 않는 수많은 통신이 이루어진다. 처음에는 HTML을 요청하지만, HTML 안에 포함된 이미지, CSS, 자바스크립트 등의 파일을 추가로 요청하기도 한다. 따라서 화면에 보이는 하나의 웹페이지가 실제로는 수십 개에서 수백 개의 작은 파일과 데이터 요청으로 구성되는 경우도 있다. 사용자는 단순히 페이지 하나를 열었다고 생각하지만, 내부적으로는 브라우저와 여러 서버 사이에서 복잡한 데이터 교환이 진행되는 것이다.

3. HTML·CSS·JavaScript: 서버에서 받은 데이터가 웹페이지 구조로 변환되는 과정

서버로부터 데이터를 받은 뒤에는 브라우저가 이를 사람이 볼 수 있는 화면으로 변환해야 한다. 이때 핵심적인 역할을 하는 것이 HTML, CSS, JavaScript다. HTML(HyperText Markup Language)은 웹페이지의 기본 구조를 정의한다. 제목, 문단, 이미지, 링크, 표, 입력창 등이 어떤 요소인지 HTML을 통해 표현한다. 쉽게 말하면 HTML은 웹페이지의 뼈대에 해당한다. 반면 CSS(Cascading Style Sheets)는 글자의 크기, 색상, 배경, 여백, 위치, 화면 배치 등을 결정해 웹페이지의 외형을 구성한다.

JavaScript는 웹페이지에 동적인 기능을 추가한다. 사용자가 버튼을 클릭했을 때 메뉴가 나타나거나, 검색창에 입력한 내용에 따라 결과가 바뀌거나, 상품 수량을 변경했을 때 가격이 자동으로 계산되는 기능 등이 대표적인 예다. 따라서 현대적인 웹사이트는 단순한 HTML 문서만으로 구성되는 것이 아니라 HTML이 구조를 만들고 CSS가 디자인을 담당하며 JavaScript가 다양한 동작을 처리하는 방식으로 만들어지는 경우가 많다.

브라우저는 서버에서 HTML을 전달받으면 HTML 문서를 분석해 DOM(Document Object Model)이라는 구조를 만든다. DOM은 HTML 요소를 브라우저가 프로그램으로 다룰 수 있도록 구조화한 것이다. 동시에 CSS도 분석해 각 요소에 어떤 스타일을 적용해야 하는지 계산한다. 이후 브라우저는 각 요소의 크기와 위치를 계산하고 화면에 어떤 형태로 배치할 것인지 결정한다. 이 과정을 레이아웃 또는 리플로우라고 부른다. 이후 실제 픽셀 형태로 화면에 그리는 페인팅 과정이 진행된다.

예를 들어 뉴스 웹사이트를 열었다고 가정해 보자. HTML에는 기사 제목과 본문, 이미지 등의 구조가 들어 있고 CSS에는 제목의 크기와 화면의 여백 등이 정의되어 있다. JavaScript는 최신 기사 목록을 불러오거나 사용자가 메뉴를 클릭했을 때 화면을 변경하는 역할을 할 수 있다. 브라우저는 이러한 자료를 종합해 최종적으로 모니터에 글자와 이미지가 배치된 웹페이지를 보여준다. 따라서 우리가 보는 웹페이지는 서버에서 완성된 한 장의 그림을 그대로 내려받아 보여주는 것이 아니라, 브라우저가 여러 종류의 데이터를 해석하고 계산한 결과라고 할 수 있다.

4. 렌더링과 캐시: 웹페이지가 빠르게 화면에 나타나는 이유

웹페이지가 화면에 나타나는 마지막 단계가 바로 렌더링(Rendering)이다. 브라우저는 HTML, CSS, JavaScript, 이미지 등의 자료를 분석한 뒤 화면에 표시할 내용을 계산하고 그래픽 처리 과정을 거쳐 모니터에 출력한다. 이 과정에서는 DOM과 CSSOM(CSS Object Model)을 바탕으로 실제 화면에 표시할 요소를 결정하고, 요소의 위치와 크기를 계산한 다음 필요한 영역을 그린다. 웹페이지가 복잡할수록 처리해야 할 요소가 많아질 수 있기 때문에 브라우저는 렌더링 성능을 높이기 위해 다양한 최적화 기술을 사용한다.

웹사이트가 두 번째 방문부터 훨씬 빠르게 열리는 경우가 있는 것도 중요한 특징이다. 브라우저는 이미지, CSS, JavaScript 파일 등을 캐시(Cache)에 저장할 수 있다. 동일한 파일을 다시 요청할 필요가 없다고 판단하면 서버에서 처음부터 다운로드하지 않고 사용자의 컴퓨터나 모바일 장치에 저장된 파일을 활용한다. 이를 통해 네트워크에서 주고받는 데이터의 양을 줄이고 웹페이지를 더 빠르게 표시할 수 있다. 다만 웹사이트가 파일을 새롭게 수정했을 경우에는 최신 파일을 받아오기 위해 캐시를 갱신하는 과정이 필요하다.

또한 최근의 웹사이트에서는 모든 정보를 한꺼번에 내려받지 않고 필요한 데이터만 서버에 요청하는 방식도 널리 사용된다. 예를 들어 쇼핑몰에서 상품 목록을 아래로 계속 내리면 새로운 상품이 추가되는 것처럼 보이는 경우가 있다. 실제로는 처음부터 모든 상품 정보를 받은 것이 아니라 JavaScript가 사용자의 행동을 감지한 뒤 서버에 추가 데이터를 요청하고, 받은 결과를 기존 화면에 이어 붙이는 방식일 수 있다. 동영상 서비스 역시 사용자가 보는 부분을 중심으로 데이터를 전송해 네트워크 사용량과 대기시간을 줄이는 기술을 활용한다.

결국 웹사이트 주소를 입력했을 때 화면이 나타나는 과정은 하나의 단순한 동작이 아니다. URL 입력 → DNS를 통한 IP 주소 확인 → 서버와의 네트워크 연결 → HTTPS 보안 통신 → HTTP 요청과 응답 → HTML·CSS·JavaScript 분석 → 레이아웃 계산과 렌더링 → 화면 출력이라는 여러 단계가 매우 짧은 시간 안에 연속적으로 진행된다. 사용자가 주소창에 웹사이트 주소를 입력하고 몇 초 안에 복잡한 화면을 볼 수 있는 것은 DNS, 인터넷 통신 프로토콜, 서버 기술, 웹 표준, 브라우저 엔진, 그래픽 처리 기술이 서로 연결되어 작동하기 때문이다. 우리가 매일 아무렇지 않게 사용하는 웹페이지 한 장 뒤에는 수많은 컴퓨터와 네트워크 장비, 소프트웨어가 정교하게 협력하는 거대한 정보처리 과정이 숨어 있는 셈이다.

웹사이트는 주소를 입력하면 어떻게 화면에 나타날까?