DNS 개념과 배경에 대해서 간단 정리 (Domain Name System)
안녕하세요.
오늘은 DNS 즉, Domain Name System에 대해서 간단하게 알아보고 그와 관련하여 자주 사용되는 용어들을 정리해보도록 하겠습니다.
DNS(Domain Name System)란?
-
호스트의 도메인 이름을 호스트의 네트워크 주소로 바꾸거나 그 반대의 변환을 수행하는 시스템
DNS 동작 원리
-
컴퓨터에서 브라우저를 켜고 www.google.com 을 입력한다.
-
컴퓨터는 컴퓨터 내부에 등록 되어 있는 DNS 서버로 www.google.com에 해당되는 IP 주소를 물어보고
-
DNS 서버는 해당 도메인의 IP 주소를 알려준다.
-
컴퓨터는 이를 받아서 IP 주소에 해당하는 컴퓨터에 접속하게 되는 것이다.
DNS가 나오게 된 배경
-
인터넷에 연결 된 컴퓨터 한대 한대를 호스트(host) 라고 한다.
-
호스트와 호스트가 서로 통신을 하기 위해서는 서로에 대한 주소가 필요한데, 이를 IP 주소라고 한다.
-
IP 주소 덕분에 인류는 호스트와 호스트를 연결해서 통신할 수 있게 되었다.
-
한 대의 컴퓨터에서 다른 컴퓨터로 접속할때 IP주소를 이용하다 보니까 여러가지 불편한 점이 생겨났다.
-
이 중 하나가 IP 주소를 외우기 너무 어렵다는 것이었고
-
이를 해결하기 위해서 Jon Postel과 Mockapetris가 Domain Name System을 만들게 된다.
-
DNS Server는 수 많은 IP 주소의 이름이 저장되어 있는 서버를 말한다.
DNS 이전 상황
-
A라는 호스트는 B라는 호스트에 접속하기 위해서 IP 주소를 알아야했다.
-
만약, 호스트 B의 IP 주소가 변경 됐다면 새로운 IP를 알아야한다.
-
이를 해결하기 위해서 SRI(Stanford Research Institute) 라는 회사가 전화로 등록 요청을 받고, IP / 도메인네임을 수작업으로 등록했다. (세상에.. 주말엔??)
-
A라는 호스트는 SRI에서 호스트 파일을 다운로드 받았고
-
이를 사용해서 B 호스트에 접속이 가능했다.
DNS 이전 상황의 문제
-
SRI에서 무수히 많은 IP와 도메인네임을 수작업으로 등록하는데 시간이 오래 걸린다.
-
파일을 저장하는데 한계가 있다.
-
hosts의 파일을 다운로드 받는 클라이언트 입장에서도 주기적으로 다운받아야(업데이트) 한다.
-
SRI 서버와 클라이언트도 마찬가지로 파일을 저장하는데 한계가 있다.
DNS 현재 상황
-
사용자의 컴퓨터가 인터넷에 연결되면 DHCP란 기술을 사용해서 DNS 서버 주소가 등록된다.
-
조금 더 정확히 설명하자면, 컴퓨터가 인터넷에 연결되면 사용하는 통신사(ISP, Internet Service Provider)인 SK 또는 KT 등에 의해 자동으로 통신사의 DNS 서버의 IP가 등록된다.
-
DNS 서버는 맘 먹으면(?) 어떤 유저가 어떤 사이트를 이용하는지 모두 확인이 가능하며, 이를 이용해서 데이터 판매 혹은 마케팅에 이용할 수도 있다. (사실 그렇게 하지는 않겠지만요..)
DNS 서버의 구조
-
DNS 서버는 총 4 가지의 DNS 서버로 구성된다.
-
Root DNS 서버(최상위 서버) / Top-level DNS 서버 / Second-level DNS 서버 / sub DNS 서버 (최하위 서버)
-
각 서버는 바로 아래의 서버의 주소를 알고 있어서 하위로 내려가면서 도메인에 맞는 IP 주소를 찾는 과정을 거치게 된다.
-
-
ISP의 DNS 서버는 Root DNS 서버를 가지고 있지만 항상 Root DNS 서버에 요청을 하는것은 비효율적이기 때문에
-
가장 첫 번째 DNS인 ISP DNS 서버에서 캐시를 이용해서 자주 사용되는 것은 바로 리턴하도록 설계되어 있다.
기타 개념
-
localhost는 무엇인가?
-
127.0.0.1 이라는 loopback IP 주소의 도메인 이름이다.
-
각 운영체제는 hosts 라는 파일이 존재하는데 이는 로컬에서 관리하는 DNS 서버와 비슷하게 동작한다.
-
-
hosts를 사용한 해커의 공격
-
예를들어, hosts에 www.naver.com의 IP로 naver와 똑같은 모습의 해킹 사이트를 매핑시켜놓을 수 있다.
-
이를 피싱이라고 한다.
-
-
A record란?
-
A는 Address의 약자로 도메인네임과 IP 주소를 매핑할때 사용한다.
-
ex) www.google.com A 128.23.21.52
-
-
CNAME 이란?
-
도메인의 별명이다.
-
ex) www.google.com CNAME google.com, blog.google.com
-
-
A record를 사용해서 등록하면 될 것을.. 왜 CNAME이란 개념이 필요할까?
-
CNAME은 IP 주소가 자주 변경되는 상황에서 사용하면 효율적이다.
-
CNAME을 사용하지 않고 A 레코드로 모두 등록해놓았을 경우, IP 변경이 있을때 모두 수정해야하지만
-
CNAME을 사용하면 A 레코드만 변경하고 기존의 CNAME은 모두 그대로 사용할 수 있다.
-
정리하자면, DNS 서버는 쉽게 두 가지 일을 한다.
첫 번째는 도메인의 IP를 저장하고, 두 번째는 도메인의 IP를 알려준다.
우리는 DNS를 통해서 IP 주소를 변경하더라도 서비스를 계속 유지할 수 있는 유연함을 얻게 되었다!
참조
ko.wikipedia.org/wiki/%EB%8F%84%EB%A9%94%EC%9D%B8_%EB%84%A4%EC%9E%84_%EC%8B%9C%EC%8A%A4%ED%85%9C
opentutorials.org/course/3276/20299
모두 즐거운 코딩하세요~