본문 바로가기

CS 지식

웹 브라우저에 URL을 입력하면 일어나는 일(2)

안녕하세요 트와일입니다.

지난번 주제 웹 브라우저에 URL을 입력하면 일어나는 일(1)에 이은 포스팅입니다.

웹 브라우저에 URL을 입력했을 때 일어나는 과정 6단계

더보기
  1. 웹 브라우저에 URL(www.naver.com)을 입력한다.(도메인은 IP address가 mapping 된 것이다.)
  2. 웹 브라우저에 URL을 입력했을 때 mapping 된 Domain이 IP address를 3단계에 걸쳐 확인한다.
  3. IP주소를 찾았다면, 그 주소를 갖고있는 웹 서버에 접근하여 TCP연결을 한다.
  4. TCP통신이 완료되면, 웹 브라우저가 웹 서버로 HTTP request를 보낸다.
  5. 웹 서버가 웹 브라우저에 HTTP response를 보낸다.
  6. 웹 브라우저에서 html 코드를 렌더링하여 화면에 보여준다.

지난 포스팅에서는 1번에 대한 내용을 소개하고 cmd창에서 naver.com 도메인의 IP address를 직접 확인해 봄으로써 IP address가 naver.com라는 Domain으로 mapping 된 것을 확인하였습니다.

그렇다면, mapping 된 Domain과 IP address가 어디에 제공되는 것인지 알아보겠습니다.

 

2. 웹 브라우저에 URL을 입력했을 때 mapping 된 Domain이 IP address를 3단계에 걸쳐 확인한다.

1) host 파일 확인

hosts 파일은 운영체제가 호스트 이름을 IP address에 맵핑할 때 사용하는 컴퓨터 파일이다.
출처: https://ko.wikipedia.org/wiki/Hosts

즉, IP address를 사용자 친화적인 이름으로 맵핑하여 사용할 수 있게 해주는 파일입니다. 127.0.0.1이 localhost로 맵핑되는 것과 같습니다.

접속하고자 하는 Domain이 hosts파일에 등록되어 있으면, DNS 서버에 IP address를 요청할 필요 없이 Domain에 맵핑된 IP address를 확인하여 바로 사이트에 접속하게 됩니다.

hosts파일

위의 파일이 Window OS에서 확인할 수 있는 hosts파일입니다.

위의 예시처럼 이전 포스팅에서 확인한 naver.com [222.130.200.107] 네이버의 Domain과 IP address를 등록하면, 등록한 PC에서는 웹 브라우저에서 naver.com을 입력했을 때 hosts에 등록된 IP address를 확인하여 바로 사이트에 접속하게 되는 것입니다.

 

2) DNS cache table

DNS Cache는 운영체제에서 관리하는 임시 데이터베이스로, 최근에 방문했거나 방문을 시도했던 웹 사이트의 기록을 담고 있다.
출처 : https://www.lifewire.com/what-is-a-dns-cache-8175144

hosts파일에서는 사용자가 직접 Domain과 IP address를 입력하는 반면, DNS cache table은 운영체제 관리되어 자동으로 기록됩니다. Window OS 기준으로 cmd창에서 아래 명령어를 입력하여 DNS cache의 목록을 확인할 수 있습니다.

ipconfig /displaydns

DNS cache table 목록 중 하나

DNS cache table에 저장된 Domain에 다시 접속할 때는 DNS 서버에 요청을 보내지 않아 속도가 빠르다는 장점이 있으나, 아래 몇 가지의 이유로 DNS cache를 초기화해주기도 합니다.

# DNS cache table 삭제
ipconfig /flushdns
  1. DNS Spoofing 방지 - 해커가 침입하여 악의 적인 사이트로 리디렉션(redirection)을 유도하는 방식이다.
  2. 404 error 발생 시 해결 - 기존에 방문했던 사이트가 변경되어 Domain을 변경하였다면, cache table에 잘 못된 정보를 가지고 있는 것이다.
  3. 웹 사이트 접속 문제 해결 - DNS cache table의 목적이 재 방문 시 접속 시간을 줄이기 위한 것이지만, Cache table에 방대한 cache가 쌓여있다면 모두 뒤져야 하기 때문에 그만큼 접속이 지연될 수 있다.
  4. 검색기록을 삭제하기 위해 - Chrome에서 방문기록 삭제와 비슷한 맥락이다.

 

3) Local DNS server(ISP)

위의 두 가지 방법으로도 IP address를 확인할 수 없으면, Local DNS server로 요청을 보내게 됩니다. Local DNS server는 기본적으로 LAN 선을 연결하면, 인터넷을 사용할 수 있도록 IP를 할당해 주는 ISP(Internet Service Provider)의 DNS 서버를 말합니다. 국내에서는 대표적인 ISP 업체로 KT, SKT, LG가 있습니다.

국내 대표 ISP 업체 DNS 주소
SK DNS 서버를 사용중인 PC

사용자가 KT 인터넷을 사용하고 있다면, KT DNS server에 접속하고자 하는 사이트의 Domain이 등록되어 있는지 요청하여 IP address를 확인할 수 있습니다.

만약, KT DNS server에도 접속하고자 하는 사이트의 Domain이 등록되어 있지 않다면, KT DNS server가 Root DNS server에 해당 Domain에 대한 정보를 요청하게 됩니다.

Root DNS Server에도 Domain정보가 없다면, TLD(Top Level Domain)에 물어봅니다.

이런 식으로 DNS server는 Tree 구조로 이뤄져 있어서 접속하고자 하는 Domain을 찾을 때까지 다른 DNS server에 계속 요청하게 됩니다.

DNS server Tree 구조

DNS의 구성이 트리구조로  되어 있는 것은 전 세계 도메인이 너무 많아 모든 조직의 도메인정보를 갖고 있을 수 없기 때문에, 각 조직의 DNS Server를 자체적으로 운영하되, 다른 조직의 DNS Server들과 상호연동 되어 있는 Domain Name Space를 구성하고 있는 것입니다.
출처: https://peemangit.tistory.com/52

이러한 과정을 한 번 거치고 나면 2번 단계인 사용자 PC의 DNS cache table에 Domain정보가 저장되어 이후 접속할 때는 Cache table에 등록된 정보를 확인하여 외부 DNS server에 요청하지 않고 바로 접속되는 것입니다.

 

지금까지 URL을 Web browser에 입력했을 때 Domain의 정보를 Local DNS(cache table) server 부터 Loot DNS server까지 요청하는 과정이었습니다. 이제 겨우 서버의 집 주소를 찾은 것입니다. 서버의 집 안을 확인하려면 여러 가지 방법으로 통신을 보낼 수 있는데 Web상에서는 HTTP(HyperText Transfer Protocol)라는 통신 프로토콜을 사용합니다.

다음 포스팅에서는 HTTP 요청을 어떤 식으로 보내는지에 대한 과정을 알아보겠습니다.