일기장

DNS: 주소 입력 후 웹 화면 보기

graph-dev 2025. 1. 22. 04:15
728x90

나의 노션 프로필

 

DNS(도메인 네임 서버)의 역할을 고려해서,

 

사용자가 주소를 입력하여 웹 화면을 보기까지의 과정을 통해 알아보겠다.

 

DNS는 주소창에 특정 주소를 검색했을 때, 해당 주소의 IP를 호출할 때 질의를 날려 확인한다.

 

1. DNS 조회

DNS 서버에 쿼리를 보낸다고 할 수 있다. DNS 캐시에 정보가 있으면 바로 IP 주소를 가져온다. 아니라면, 통신사(ISP) 혹은 DNS 서버에 질의하여 IP 주소를 얻는다.

 

2. TCP 연결(3-way handshake)

웹 브라우저가 DNS로 받은 IP 주소로 연결 요청을 보낸다.

TCP 3-way handshake가 이루어진다. SYN(연결요청), SYN-ACK(서버가 요청 수락 및 응답 보냄), ACK(클라이언트가 확인 응답을 보냄)의 과정이다.

 

3. HTTPS 핸드셰이크(HTTPS 사용시)

입력한 주소가 HTTPS 사용하면, 웹 브라우저-서버 간 TLS 핸드셰이크를 수행한다. HTTPS 핸드셰이크와 같은 말이다. 클라이언트는 서버에 인증서를 요청하고, 서버는 SSL 인증서를 클라이언트에 전달한다. 클라이언트가 인증서 검증 후 암호화 키를 교환하여 안전한 연결을 설정한다.

 

4. HTTP 요청 전송

TLS 세션이 설정되면, 브라우저가 HTTP GET 요청을 보낸다. 요청에는 헤더 정보(브라우저 정보, 쿠키 등)가 포함된다.

GET / HTTP/1.1
Host: 도메인 주소

 

5. 서버에서 준비

해당 도메인 주소의 웹 서버(Nginx, Apache 등)이 요청을 받는다. 요청을 처리하고, 데이터(HTML, CSS, JS, 이미지 등)을 준비한다. 데이터를 압축 후 응답한다.

 

6. HTTP 응답 전송

서버가 웹 브라우저로 HTTP 응답을 보낸다.

HTTP/1.1 200 OK
Content-Type: text/html

 

응답 본문에 해당 도메인 주소의 페이지 HTML 코드가 들어간다.

 

7. 브라우저 렌더링

웹 브라우저가 받은 HTML을 파싱해서 페이지 구조를 만들고, 여기에 필요한 CSS, JavaScript, 이미지 파일 등을 다운로드해서 렌더링을 한다. 이제 내가 화면을 볼 수 있다.

 

8. 네트워크 연결 종료

데이터 전송이 끝나면 TCP 연결은 4-way handshake(FIN, FIN-ACK, ACK 패킷 교환)으로 종료된다.

 

이 모든 과정이 '보통' 1~2초 내에 이루어진다. 이 말은 오래걸리기도 한다는 뜻이다. 빠르게 이루어진다 정도로 기억한다.