우리는 심심치 않게 naver.com, google.com 등 주소창에 인터넷 주소를 치곤 한다. 속도가 워낙 빨라 순식간에 웹페이지를 만나게 되지만 그 사이에 client와 server 그리고 DNS 서버가 서로 많은 것을 주고 받는다. 이번에는 우리가 주소창에 google.com을 쳤을 때 어떻게 되는지 그리고 DNS란 무엇인지에 대해서 알아보겠다.
DNS
DNS란 Domain Name System의 약자로 사용자가 naver.com 같이 읽기 편한 인터넷 주소를 192.168.0.200 식으로 기계가 읽기 쉬운 주소로 변환해주는 시스템이다. 일종의 전화번호부라고 생각하면 이해하기 쉽다.
우리는 앞서서 client 하나의 컴퓨터고 server도 하나의 컴퓨터 인것을 배웠다. host를 식별하기 위한 주소가 Ip인데 실제적으로 우리는 ip 주소를 치지 않고 도메인이름을 사용한다. 그렇다면 이러한 도메인 주소를 ip 주소로 바꿔줘야 하고 이러한 역할을 DNS 서버가 하게 된다.
DNS 서버 계층 구조
DNS 서버가 하나만 있다라고 생각해보자. 70억 지구인들이 하나의 DNS 서버에 접속해서 ip 주소를 확인 한다면 한참을 대기할 것이다. 그래서 DNS 서버도 컴퓨터의 캐시메모리 마냥 계층적으로 이루어져있다.
주소창에 google.com을 입력한다면?
1. 로컬 캐시 확인
최근에 접속한 도메인이라면 로컬 캐시에 남아 있을것이다. 로컬 캐시에 없다면 2번으로 향한다.
2. hosts 파일 확인
C:\Windows\System32\drivers\etc
Windows를 사용 한다라고 하면 이 주소에 hosts 파일이 있을 것이다. 여기 hosts 파일에 도메인의 ip주소가 있는지 확인하고 없으면 3번, 공유기가 없다면 4번으로 향한다.
필자의 hosts 파일 구성이다.
# Copyright (c) 1993-2009 Microsoft Corp.
#
# This is a sample HOSTS file used by Microsoft TCP/IP for Windows.
#
# This file contains the mappings of IP addresses to host names. Each
# entry should be kept on an individual line. The IP address should
# be placed in the first column followed by the corresponding host name.
# The IP address and the host name should be separated by at least one
# space.
#
# Additionally, comments (such as these) may be inserted on individual
# lines or following the machine name denoted by a '#' symbol.
#
# For example:
#
# 102.54.94.97 rhino.acme.com # source server
# 38.25.63.10 x.acme.com # x client host
# localhost name resolution is handled within DNS itself.
# 127.0.0.1 localhost
# ::1 localhost
# End of section
3. 공유기 캐시 확인
대부분 사용자 들이 공유기를 사용할 것이다. 공유기도 자주 사용하는 도메인 ip를 저장을 하고 있다. 여기에서 없으면 4번으로 향한다.
4. ISP(Internet Service Provider)가 제공하는 DNS 확인
KT, LG, SKT 등 각 ISP마다 가지고 있는 DNS 서버를 가지고 있다. 여기에서 확인을 ipconfig /all을 쳐보면 자신이 사용하고 있는 DNS 서버의 ip 주소가 나올것이다.
각 통신사별 DNS 서버 주소다. 참고로 알고 있으면 좋다. 보통 고정ip 설정할 때는 구글의 8.8.8.8을 많이 쓰곤 한다.
SK 210.220.163.82 / 219.250.36.130 KT 168.126.63.1 / 168.126.63.2 LG 164.124.107.9 / 203.248.242.2 61.41.153.2 / 1.214.68.2 구글 8.8.8.8 / 8.8.4.4 |
5. Root DNS 확인
ISP의 DNS 서버에도 없다면 Root DNS에 가게 된다. Root Dns는 도메인의 ip 주소를 가지고 있는것 아니라, TLD의 서버 주소를 가지고 있다. google.com을 요청하게 되면 .com의 ip 주소를 모아놓고 있는 TLD의 주소 목록을 받게 되고 ISP DNS 서버는 그중에 가장 적절한 TLD DNS 서버로 향하게 된다.
6. TLD DNS 확인
TLD DNS 서버에서 google.com의 ip 정보를 알 수 있게 된다. 그리고 이 정보를 ISP DNS 서버에게 전달하게 된다.
7. google.com의 DNS 정보를 가지고 있는 DNS 서버가 ISP DNS에 전달
8. ISP DNS에게 받은 ip 주소를 통해 google.com 에 접속
1~8의 일련의 과정을 통해서 우리는 아주 쉽게 google.com에 접속을 할 수 있게 된다.
만약 면접에서 google.com을 접속 할 때 일련의 과정을 설명하라고 하면 위과 같이 설명하면 될것이다.
'CS > 네트워크' 카테고리의 다른 글
RESTful API에 대해서 (0) | 2024.07.18 |
---|---|
HTTP의 역사 (0) | 2024.07.15 |
L2, L3, L4, L7 스위치 feat. 스위치, 로드밸런싱 #2 (0) | 2024.07.15 |
L2, L3, L4, L7 스위치 feat. 스위치 #1 (1) | 2024.07.15 |
OSI 7계층에서의 데이터 흐름 (0) | 2024.07.11 |