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 주소를 변경하더라도 서비스를 계속 유지할 수 있는 유연함을 얻게 되었다!
'Linux > Linux 실습' 카테고리의 다른 글
| whois 패키지 설치하기 (0) | 2021.12.29 |
|---|---|
| [Linux] Kali Linux 를 원격 접속 설정하기 (0) | 2021.12.27 |
| [Linux] Python3 가상환경 사용하기 (0) | 2021.11.30 |
| [Linux] 2차 네임 서버 구축 후 테스트 (0) | 2021.11.19 |
| [Linux] 2차 네임서버 구축 (0) | 2021.11.18 |