브라우저에 google.com를 요청할 경우 어떤 일이 발생하는가?

브라우저에서 URL을 검색하면

  • 브라우저는 google.com에 대한 요청 전문을 만들고 OS에 요청한다.
  • OS는 DNS Lookup을 통해 아래와 같은 과정으로 도메인에 대한 IP를 찾는다.
    • OS에서 hosts파일을 확인한다.
    • OS가 캐싱한 DNS cache을 확인한다.
    • DNS 서버(1.1.1.1, 8.8.8.8, ISP 제공)에게 해당 도메인에 대한 IP를 질의한다.
    • DNS 서버는
      • 루트 네임서버로부터 해당 도메인의 TLD(top-level domain: .com .net 등을 관리하는 최상위 네임서버) 서버의 IP를 질의한다.
      • 응답받은 TLD의 IP를 사용하여 해당 도메인의 IP를 질의한다.
    • 캐싱된 IP가 있더라도, 유효기간이 만료(TTL)된 경우 캐시를 버리고 다시 질의함.
  • OS는 확보한 IP를 기반으로 해당 서버를 찾는다.
  • 필요에 따라, https를 위한 ssl 핸드쉐이크를 수행한다. 패킷의 암호화를 목적으로 하며 공인인증서를 기반으로 비밀키를 공유한다.
  • 응답을 받으면 브라우저는 렌더링한다.

더보기1. IP를 기반으로 서버를 찾는 과정 - LAN과 WAN

  • google.com의 IP를 확보하면 해당 IP가 같은 네트워크인지 아닌지를 판단한다.
  • 같은 네트워크(LAN)라면 스위치를 통해 빠르게 MAC 주소를 찾는다. 그렇지 않을 경우(WAN) 라우터로 해당 서버를 찾아야 한다. 이때 OS는 게이트웨이(라우터)의 MAC 주소를 찾는다. 모두 ARP로 MAC 주소를 찾는다.
  • LAN의 판단 기준은 현재 class 가 아닌 서브넷마스크를 기반한다. 서브넷 마스크는 IP의 Net ID와 Host Id를 구분하는 기준이 되는데 서브넷 마스크만큼의 범위가 Net Id이다. 서브넷마스크를 기준으로 서버 IP와 클라이언트 IP가 같은 대역일 경우 LAN으로 판단한다.
  • class와 서브넷 마스크 관계 없이 해당 범위에서 첫 번째와 마지막 IP는 host로 사용할 수 없다. s class의 경우 마지막 8비트가 00000000일 경우 네트워크 주소로 할당하며 1111_1111은 broadcast로 할당하여 호스트로 할당할 수 없다. 서브넷 또한 마찬가지인데 /25의 경우 123.123.123.0 ~ 123.123.123.127를 범위로 하며 0과 127은 같은 이유로 사용하지 않는다. 서브넷을 나누면 나눌수록 낭비가 발생하지만, 하나의 네트워크 단위를 제공해야 하는 상황에서는 c class를 전체를 제공하는 것보다 서브넷으로 최대한 잘게 쪼개주는 것이 이득이다.

더보기2. ARP와 MAC주소

  • ARP란 같은 LAN에서 해당 IP를 가진 장치의 MAC 주소를 알기 위한 프로토콜이다. 스위치 등 네트워크 장비는 ARP 테이블을 가지고 있어 IP에 대한 MAC 주소를 제공한다.
  • MAC 주소는 장비에 할당된 고정된 값으로서 변경 가능한 IP와 함께 장비를 구분하는 기준으로 사용된다.
  • ARP는 ARP Request로 시작하는데 해당 질의는 브로드캐스트를 통해 수행된다. 같은 네트워크의 모든 서버에 요청하여 일치하는 서버가 해당 요청에 응답하는 형태로 처리된다.
  • 네트워크가 다를 경우 게이트웨이를 통과하여 WAN으로 해당 IP를 가진 서버를 찾는다. 이 경우 게이트웨이에 대한 MAC을 필요로 하며 이때 마찬가지로 ARP를 사용한다.