naver.com에 접속하면 일어나는 일

Network
2025-10-09

1. Host Configuration (DHCP)

  • PC가 부팅 후 네트워크에 연결되면, 먼저 통신에 필요한 네트워크 파라미터를 할당 받아야 한다.
  • 이 과정은 DHCP (Dynamic Host Configuration Protocol) 를 통해 자동으로 수행된다.
    1. DHCP Discover : 클라이언트가 네트워크에 DHCP 서버를 찾기 위해 브로드캐스트 메시지를 전송한다
    2. DHCP Offer : 라우터 (DHCP 서버)가 사용 가능한 IP 주소 및 기타 설정을 담아 클라이언트에 응답한다.
    3. DHCP Request : 클라이언트가 제인받은 주소를 사용하겠다고 서버에 요청한다.
    4. DHCP ACK : 서버가 요청을 최종 승인하고 IP 주소 임대를 확정한다.
  • 이 결과를 클라이언트는 다음 정보를 획득한다
    • 사설 IP 주소
    • 서브넷 마스크
    • 기본 게이트웨이 주소 (라우터의 사설 IP 주소)
    • DNS 서버 주소

💡

게이트웨이와 라우터의 IP

  • 게이트웨이는 '외부 네트워크로 나가는 관문'이며, 라우터는 공인 IP와 사설 IP를 모두 가진다.
    • 사설 IP: 내부 네트워크(LAN) 쪽을 향하는 인터페이스의 주소. (e.g., 192.168.0.1)
    • 공인 IP: 외부 인터넷(WAN) 쪽을 향하는 인터페이스의 주소. 이 주소는 ISP(인터넷 서비스 제공자)로부터 할당받는다. NAT 기술을 통해 내부 장치들이 이 공인 IP를 공유하여 인터넷에 접속한다.
  • 로컬 네트워크(LAN)에 있는 장치가 외부 네트워크(인터넷)와 통신해야 할 때, 모든 트래픽이 거쳐 나가는 지점
  • 이 역할은 라우터가 수행하므로, 로컬 네트워크 장치들의 기본 게이트웨이 주소는 라우터의 사설 IP 주소

2. DNS (Domain Name System) Resolution

  • 사용자가 브라우저에 naver.com 을 입력하면, OS는 이 도메인 이름에 매핑된 IP 주소를 찾아야 한다.
    1. 로컬 캐시 (브라우저, OS)를 먼저 확인한다
    2. 캐시에 정보가 없으면, DHCP로 할당 받은 DNS 서버에 naver.com의 IP 주소를 묻는 재귀적 쿼리를 전송한다.
    3. DNS 서버는 naver.com의 A 레코드를 찾아 해당 공인 IP 주소를 클라이언트에 반환한다.

💡

DNS 서버

  • 전 세계에 13개의 루트 DNS 서버 클러스터를 포함하여 수많은 실제 DNS 서버가 24시간 동작하며 인터넷 통신을 가능하게 한다.
  • DNS 서버는 한 곳에 있는 단일 서버가 아니라, 전 세계에 분산된 계층적 구조(hierarchical structure)를 가진다.

전체 구조

재귀 리졸버

  • 클라이언트의 모든 DNS 요청을 받아 처리하는 유일한 창구
  • 이 서버는 자체적으로 정보를 가지고 있지 않지만, 정보를 찾기 위해 아래의 계층 구조를 가진 서버들에게 대신 요청을 한다.
  • KT, SKT 같은 ISP나 Google(8.8.8.8), Cloudflare(1.1.1.1)가 운영하는 서버

권한 서버 계층

  • 실제 도메인 정보를 가지고 있는 서버들로, Root → TLD → Authoritative 순서의 명확한 피라미드 구조를 가진다.

DNS 계층 관계 (Top-Down)

1. 루트 DNS 서버 (Root DNS Server)

  • 역할: DNS 계층 구조의 최상위 정점. 인터넷의 모든 도메인 조회가 시작되는 출발점입니다.
  • 기능: naver.com의 IP 주소를 직접 알려주진 못하지만, .com을 담당하는 TLD 서버가 어디에 있는지 알려준다.

2. TLD 서버 (Top-Level Domain Server)

  • 역할: 루트 서버 바로 아래 계층으로, .com, .net, .kr 같은 최상위 도메인을 관리한다.
  • 기능: .com TLD 서버는 naver.com의 IP 주소를 직접 알려주진 못하지만, naver.com 도메인 정보를 최종적으로 관리하는 권한 네임 서버가 어디에 있는지 알려준다.

3. 권한 네임 서버 (Authoritative Name Server)

  • 역할: DNS 계층 구조의 가장 아래에 있으며, 실제 도메인과 IP 주소의 매핑 정보(A 레코드 등)를 보유하고 있는 최종 서버
  • 기능: naver.com의 IP 주소가 223.130.195.95라는 최종적인 답변을 해줄 수 있는 유일한 서버

쿼리 흐름으로 본 관계

  • PC → 재귀 리졸버: "IP 주소 좀 찾아줘."
  • 재귀 리졸버 → 루트 서버: ".com TLD 서버 주소 알려줘."
  • 재귀 리졸버 → .com TLD 서버: "naver.com 권한 네임 서버 주소 알려줘."
  • 재귀 리졸버 → naver.com 권한 네임 서버: “IP 주소 뭐야?"
  • 권한 네임 서버 → 재귀 리졸버: "그거 223.130.195.95 야."
  • 재귀 리졸버 → PC: "찾았어! 223.130.195.95 야."

💡

DNS 레코드 (DNS Records) 종류

  • A 레코드 (Address Record) 가장 기본적인 레코드로, 특정 도메인 이름(호스트명)을 IPv4 주소에 매핑한다. www.example.com IN A 192.0.2.1
  • AAAA 레코드 (Quad A Record) A 레코드의 IPv6 버전이다. 도메인 이름을 IPv6 주소에 매핑한다. www.example.com IN AAAA 2001:db8::1
  • CNAME 레코드 (Canonical Name Record) 특정 도메인 이름을 다른 도메인 이름(별칭)으로 연결한다. 최종적으로는 연결된 도메인의 A 레코드를 따라가게 된다. www.example.com IN CNAME example.com
  • MX 레코드 (Mail Exchange Record) 해당 도메인의 이메일을 처리하는 메일 서버를 지정한다. 우선순위(priority) 값을 함께 지정하여 여러 메일 서버를 둘 수 있다. example.com IN MX 10 mail.example.com
  • NS 레코드 (Name Server Record) 해당 도메인의 네임서버가 무엇인지를 명시하는 레코드이다. DNS 계층 구조에서 관리 위임을 위해 사용된다. example.com IN NS ns1.example.com
  • TXT 레코드 (Text Record) 도메인에 대한 임의의 텍스트 정보를 저장한다. 주로 도메인 소유권 인증, 이메일 보안을 위한 SPF, DKIM 정책 등을 명시하는 데 사용된다.

3. TCP Connection Establishment

  • HTTP 통신에 앞서, 신뢰성 있는 데이터 전송을 위해 클라이언트와 서버 간의 TCP 연결을 수립한다.
  • 이 과정은 3-way handshake를 통해 이루어진다.
    • Client → Server : 접속을 요청하는 SYN 패킷을 전송한다.
    • Server → Client : 요청을 수락하며, 클라이언트의 SYN에 대한 ACK와 서버 자신의 SYN을 함께 전송한다.
    • Client → Server : 서버의 SYN을 확인했다는 ACK 전송한다.
  • 이 과정이 완료되면 양단 간에 소켓 (Socket)이 생성되고, 데이터 전송이 가능한 상태가 된다.
  • HTTPS의 경우 이어서 TLS/SSL 핸드셰이크가 진행된다.

4. HTTP Request & Encapsulation

  • TCP 연결이 수립되면, 브라우저는 애플리케이션 계층에서 HTTP Request 메시지를 생성한다.
GET / HTTP/1.1
Host: naver.com
...
  • 이 데이터는 TCP/IP 스택을 따라 내려가면서 각 계층의 헤더가 붙는 캡슐화(Encapsulation) 과정을 거친다.
    • Transport Layer
      • HTTP 메시지는 TCP 세그먼트로 캡슐화된다.
      • 헤더에는 출발지 포트(e.g., 51000)와 목적지 포트(80 or 443) 정보가 포함된다.
    • Network Layer
      • TCP 세그먼트는 IP 패킷으로 캡슐화된다.
      • 헤더에는 출발지 IP(사설 IP)와 목적지 IP(네이버 공인 IP)가 포함된다.
    • Data Link Layer
      • IP 패킷은 이더넷 프레임으로 캡슐화된다.
      • 헤더에는 출발지 MAC 주소(PC의 NIC)와 목적지 MAC 주소(게이트웨이의 MAC)가 포함된다. (게이트웨이의 MAC 주소는 ARP를 통해 알아낸다.)

5. NAT & Routing

  • 프레임은 기본 게이트웨이(라우터)로 전송된다.
  • 라우터는 프레임을 수신하여 IP 패킷을 확인한 후 NAT(Network Address Translation)를 수행한다
    • 라우터는 IP 패킷의 출발지 주소를 PC의 사설 IP에서 자신의 공인 IP로 변경한다.
  • 동시에 여러 내부 호스트를 구분하기 위해 출발지 포트 번호도 임의의 다른 포트로 변경(PAT: Port Address Translation)하고, 이 매핑 정보를 NAT 테이블에 기록합니다.
    • 192.168.0.10:51000 <-> [라우터 공인 IP]:62000
  • 수정된 패킷은 라우팅 테이블에 따라 인터넷상의 다음 홉(hop)으로 포워딩되며, 여러 라우터를 거쳐 최종 목적지인 네이버 서버에 도달한다.

6. Server Response & Return Path

  • 네이버 서버는 요청 패킷을 역캡슐화(Decapsulation)하여 HTTP 요청을 처리하고, HTML 문서가 포함된 HTTP Response를 생성한다.
  • 응답 패킷은 다시 캡슐화 과정을 거친다.
    • 이때 출발지 IP는 네이버 서버, 목적지 IP는 라우터의 공인 IP가 된다
  • 패킷은 인터넷을 통해 다시 클라이언트의 라우터로 돌아온다
  • 라우터는 수신된 패킷의 목적지 포트(62000)를 확인하고, NAT 테이블을 참조하여 이 패킷이 원래 192.168.0.10:51000에서 온 요청에 대한 응답임을 파악한다
  • 라우터는 패킷의 목적지 IP와 포트를 다시 원래의 사설 IP와 포트로 수정한 후, 내부 네트워크를 통해 해당 PC로 전달한다