cleanUrl: /posts/what-happen-browser-after-url-enter

이 포스팅은 What happens when you type a URL in the browser and press enter 를 번역 + 요약 하였습니다.

이걸 설명해달라는 친구가 있었는데 막상 설명하려고 하니까 말문이 턱 막혀버려 찾아보게 되었습니다.

https://s3-us-west-2.amazonaws.com/secure.notion-static.com/556ec3b4-2fbc-4bc2-8686-ce6b3ca16c09/Untitled.png

DNS 는 phone book 과 같다.(DB) 서버는 unique IP 주소를 갖는다. DNS 는 이름과 IP 주소의 리스트를 요청한 URL 에 해당하는 IP 주소를 반환합니다.

DNS 의 목적은 human friendly navigation 입니다.

1. Cache를 찾아봅니다.

DNS record 를 찾기 위해 browser 는 4가지 캐시를 먼저 확인합니다.

  1. Browser cache: browser 를 통해 방문했던 DNS record 를 일정 기간동안 저장하고 있습니다. 따라서 DNS가 가장 먼저 질의하는 곳은 browser cache 입니다.
  2. OS cache: browser cache 에 없다면, system call 을 computer OS 의 DNS cache 로 합니다. (i.e. gethostname on windows)
  3. Router cache: 컴퓨터에도 DNS record 가 없다면 router 에 요청하여 router cache 를 확인합니다.
  4. ISP(Internet Search Provider - like KT) cache: 다음은 ISP 로 옮겨 searching 한다. 이 캐시가 마지막 캐시입니다.

2. Cache 에 URL 이 없을 때 무엇을 하는가?

URL 이 캐시들에 없다면, ISP 의 DNS 서버는 DNS 질의를 하여 IP address 를 찾기 시작합니다. DNS query 의 목표는 여러 DNS 서버를 돌며 URL 에 맞는 IP address 를 찾을 때 까지 검색하는것 입니다.

이 검색을 recursive search 라 하여 DNS 서버들을 검색하는데 맞는 IP 를 찾거나, 그런 IP 가 없다는 error 를 반환할 때 까지 수행합니다.

이 상황에서 우리는 ISP 의 DNS 서버로 요청을 되풀이하는데, DNS 서버에서 정확한 IP 를 찾아내기 위해서 입니다.

https://s3-us-west-2.amazonaws.com/secure.notion-static.com/ede6a6f1-4d17-4567-b632-3ee4325f7d1e/Untitled.png

요즘 Third-level domain 까지 확인 할 필요가 있습니다. 각각의 level은 그들의 name server 를 갖고 있다.

예를들어, http://maps.google.com 을 찾는다면, root name server 에서 Top level server 로 redirect 를 하여 .com 을 찾습니다. 그리고 second-level 에서 google 을 찾아 google.com 이 되면 third level server 로 redirect 하여 maps.google.com 정확한 IP address 를 찾아 반환합니다.

이러한 redirect 가 실행될 작은 크기의 data packet 을 사용해 전송합니다. 이 패킷이 여러 DNS 서버로 redirect 전송이 됩니다. 이 장비는 Routing table 을 사용해 어떤 방법을 찾아야 가장 빠를지 확인합니다.