Fall in IT.

DNS 개념과 배경에 대해서 간단 정리 (Domain Name System) 본문

기타

DNS 개념과 배경에 대해서 간단 정리 (Domain Name System)

D.Y 2020. 11. 9. 22:25

안녕하세요.

오늘은 DNS 즉, Domain Name System에 대해서 간단하게 알아보고 그와 관련하여 자주 사용되는 용어들을 정리해보도록 하겠습니다.

 

DNS(Domain Name System)란?

  • 호스트의 도메인 이름을 호스트의 네트워크 주소로 바꾸거나 그 반대의 변환을 수행하는 시스템

 

DNS 동작 원리

  1. 컴퓨터에서 브라우저를 켜고 www.google.com 을 입력한다.

  2. 컴퓨터는 컴퓨터 내부에 등록 되어 있는 DNS 서버로 www.google.com에 해당되는 IP 주소를 물어보고

  3. DNS 서버는 해당 도메인의 IP 주소를 알려준다.

  4. 컴퓨터는 이를 받아서 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

 

모두 즐거운 코딩하세요~

 

Comments