[Network] 도메인 주소 입력 시 데이터 요청 과정
일반적으로 인터넷을 이용할 때, 간편하게 도메인 주소를 이용하여 접속을 하지만, 그 과정에 대하여 잘 알지 못하고 당연하게 이용하였기에 자세히 알아보자는 취지에서 주제를 정하고 조사하게 되었다.
브라우저에 도메인 주소(ex : www.youtube.com)를 입력했을 때 데이터를 요청하고 받아오는데 일어나는 과정은 크게 5가지의 단계로 나누어서 볼 수 있다.
1. 입력한 URL을 기반으로 DNS 검색 (캐싱 조회)
브라우저는 입력한 URL을 DNS 서버에 요청하기 전에 브라우저에 캐싱된 DNS에 일치하는 IP가 있는지 조회를 하고, 존재한다면 그것을 이용하고, 존재하지 않는다면 DNS 서버에 요청을 하게 된다.
2. 인접한 DNS 서버에 DNS query 전달 (DNS 서버 요청 - 반복)
ISP(Internet Server Provider)를 통하여 DNS 서버에 사용자가 입력한 URL을 기반으로 DNS query를 전달한다.
DNS query가 전달된 DNS 서버에서 IP가 조회되지 않는다면, 도메인과 일치하는 IP를 찾을 때까지 반복하여 다른 DNS 서버에 요청한다.
도메인 이름은 계층적으로 구분되어 있고 Root : .(dot)을 기준으로 계층을 구분하여 DNS 서버에서 탐색하게 된다.
Ex : .(dot) -> com/gov/...(etc) -> youtube.com
이러한 과정을 통하여 Root 계층부터 DNS 서버에서 탐색하는 과정을 Recursive Query라고 칭한다.
3. 조회한 IP를 기반으로 HTML 요청
TCP/IP 프로토콜을 기반으로 조회한 IP에 알맞은 HTML 요청을 한다.
- HTTP 또는 Websocket은 전부 TCP/IP 기반의 프로토콜이다.
4. 요청한 IP 주소에서 WAS와 WS를 기반으로 요청을 처리
요청을 받은 IP 주소에서는 요청에 포함된 데이터와 구축한 서버를 기반으로,
정적인 자료(HTML, CSS, 이미지 등)와
동적인 자료(코드의 실행 결과 - DB 조회, 코드 로직의 결괏값 등)를 처리한다.
5. 작업 처리 결과 응답 (요청한 IP 주소 -> 브라우저)
WS에서 정적인 데이터를 응답하거나 WAS에서 처리가 완료된 데이터를 초기 요청을 실시한 브라우저로 응답하는 과정을 의미한다.
- 일반적으로 HTTP의 응답에는 Headers와 Payload, 그리고 Status-code의 데이터를 응답
정리하자면 도메인 주소를 입력했을 때에는 브라우저 캐싱 및 DNS 서버를 기반으로 IP를 조회하고, 데이터를 요청하면, 서버에서 요청받은 데이터를 처리하고 응답한다고 볼 수 있다.