DNS

DNS란 domain name system의 약자로 웹 사이트에 접속할때 ip주소를 대신해주는 역할을 한다.

192.168.0.1
127.0.0.1
위와 같은 숫자들은 컴퓨터를 다룬 사람이라면 눈에 익숙한 숫자일 것이다.
보통은 자신이 사용하는 컴퓨터의 ip 주소를 가르키며 이를 대신하는 단어로 우리는 localhost를 사용한다.

여기서 사용하는 localhost가 DNS의 예시가 된다. 사용자가 어려운 ip, 숫자 나열을 외우지 않아도
직관적인 단어를 사용해 같은 기능을 수행하는 것이 DNS의 기능이자 강점이 된다.

그렇다면 우리가 웹사이트 주소창에 입력하는 이름은 어디로 가서 검증을 하게 될까?

현재 저자의 개발환경은 ruby를 이용해 개인 웹 서버를 운영하여 포스팅을 실시간으로 확인하며 수정하고 있다.
http://127.0.0.1:4000/net-work/2023/10/28/DNS-def.html
http://localhost:4000/net-work/2023/10/28/DNS-def.html
저자가 보고있는 웹 페이지의 주소이다.

DNS_ex1
DNS_ex2 두 웹 페이지는 127.0.0.1과 localhost가 완벽히 동일한 기능을 하는 것을 보여준다.

컴퓨터는 웹 주소에 쓰여진 localhost가 127.0.0.1이라는 것은 www에 나가기도 전에 해당 ip를 반환받게 된다. 이것은 특수 ip이기 때문이다.

그렇다면 다음 의문이 자동적으로 들 수밖에 없다. 다른 DNS 를 주소로 redirect해주는 장치는 어디에 있을까?

Hosts file

기본적으로 어떤 도메인의 주소가 무엇이라는 것을 알려주는 것은 1차적으로 윈도우 내의 hosts 파일에서 하게된다.
최신 Windows 기반의 운영체제는 다음과 같은 경로에 hosts 파일을 보관중이다.

%SystemRoot%:\Windows\System32\drivers\etc\hosts

Unix, Macintosh 기반의 운영체제들은 다음과 같다.

/etc/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

위와 같은 내용이 있다.
해당 hosts 파일의 맨 아랫줄 주석을 살펴보면 기본적인 syntax를 이해할 수 있다.

#   127.0.0.1   localhost

이는 localhost가 127.0.0.1을 의미함을 알 수 있고 그것을 통해 웹 주소에 쓰여진 DNS를 127.0.0.1로 해석해준다고 생각하면 된다.

hosts 파일 주석아래에 내용을 추가하게 되면 웹 브라우저 주소창에 입력하는 DNS를 hosts 파일에 있는지 먼저 찾아본 뒤 있으면 redirect, 없으면 인터넷을 통해 외부로 나가게 된다.
그렇기 때문에 컴퓨터에서 가상머신을 통해 내부 네트워크를 구성하게 된다면 가상머신은 내 컴퓨터를 일종의 라우터의 개념으로 생각하고 redirect하거나 인터넷을 통해 외부와 통신하게 된다.

해당 글은 DNS를 쉽게 설명하기 위한 목적으로 작성되었기에 계속해서 상위 네트워크의 hosts 파일을 검토하는 것처럼 설명되었지만, 이는 내용의 극히 일부이며 외부와 통신하기 위해서는 hosts파일 접근 이후 DNS Server를 이용하게 됩니다.