on
DNS의 이해
이 글은 생활코딩 WEB2 - Domain Name System을 통해 습득한 내용을 기반으로 하고 있습니다.
들어가기에 앞서
Host
란 인터넷에 연결된 컴퓨터 각각 한 대IP Address
는Host
간의 통신에 필요한 주소IP Address
를 하나하나 기억하는 것이 어렵기 때문에 개발된 것이DNS(Domain Name System)
DNS Server
에 수많은 IP 주소와 도메인을 저장- 웹에서 도메인(www.example.com)을 입력하면 DNS Server에서 도메인의 IP주소(197.0.2.1)을 알려주면 그 IP 주소를 토대로 접속
IP Address와 Hosts의 개념
2대의 컴퓨터 간의 인터넷 통신을 위해서는 IP 주소가 반드시 필요하다. 컴퓨터 외에도 인터넷이 연결된 것를 Host
라고 부른다.
이 때 모든 IP 주소를 기억할 수 없으므로 운영체제마다 hosts
라는 파일이 존재한다. 이 파일에 IP와 도메인 이름을 저장해두면, DNS를 사용하지 않고도 다른 Host
에 접근할 수 있다.
Hosts 파일을 설정하는 방법
Hosts 위키피디아에 OS별 경로가 나와있다.
IP 주소 도메인 이름
127.0.0.1 localhost
255.255.255.255 broadcasthost
::1 localhost
도메인 이름과 보안
hosts 파일을 변조해 평소 사용하던 도메인 이름을 입력할 경우, 기존과 다른 사이트로 접속이 가능하다. 이렇게 변조가 가능한 hosts 파일은 보안에 취약하기 때문에 변조가 되지 않도록 해야한다.
해킹 사례 중 Fishing
이라고 불리는 것이 있다. 이는 도메인 이름을 변조하여 은행 사이트와 똑같이 만든 사이트로 접속을 유도해 개인정보를 빼내는 일이다. 이러한 것을 막기 위해 https
가 사용된다.
DNS의 태동
before DNS
과거에는 SRI(Stanford Research Institude)에서 전 세계의 hosts 파일을 관리했었다. 이 기관의 hosts 파일을 덮어쓰기한 후, 내 컴퓨터에서 도메인 이름오로 접속하는 방식이었다. 처음에는 좋은 방식이었지만, 인터넷이 커지면서 점점 문제점이 발견되었다. hosts 파일을 다운로드하지 않으면 추가된 호스트 이름을 사용할 수 없었고 SRI에서 수작업으로 IP와 도메인 이름을 갱신하였으므로 시간과 비용이 들었다.
After DNS
DNS에게 “이 IP는 OO이라는 도메인 이름을 가지고 싶습니다”라고 요청하면 DNS에 갱신된 내용이 저장된다. 물론 자동화되어 있다. 이 후, 자신의 컴퓨터에서 WiFi 혹은 인터넷이 연결되면 DNS Server에 있는 IP 주소가 DHCP(Dynamic Host Configuration Protocol, 동적 호스트 구성 프로토콜)를 통해 셋팅된다. 웹 브라우저에서 도메인 이름을 입력하면 먼저 로컬의 hosts 파일을 탐색하고, 없다면 DNS Server에 도메인 이름의 IP를 요청해서 받는다.
Public DNS의 사용
DNS Server의 IP나 도메인을 알고 있어야 Server에 접근이 가능하다. 이런 정보는 ISP(Internet Service Provider: KT, SK 브로드밴드, SKT 등)가 자동으로 셋팅해준다. 속도가 느리거나 보안, Privacy 이슈로 통신사가 지정한 DNS Server를 사용하고 싶지 않을수도 있다. 이 때 사용할 수 있는 것이 Public DNS Server이다.
구글에서 Public DNS Server를 검색하면 다양한 곳에서 제공하는 DNS Server를 볼 수 있다.
DNS의 내부 원리
DNS Server
DNS Server는 IP 주소와 도메인 이름을 기억하는 기능과 Client가 이름을 물어보면 IP를 알려주는 기능을 갖고 있다.
맨 뒤에는 .
이 생략되어 있다. 각각의 부분들은 담당하는 Server Computer가 개별적으로 존재한다.
Root
는 Top-level
을 담당하는 Server의 목록과 IP를 알고 있으며, Top-level
은 Second-level
, Second-level
은 sub
의 목록과 IP를 알고 있다. 즉, 상위 목록이 직속 하위 목록을 알고 있다는 것이다.
Root NameServer의 IP 주소에게 blog.example.com을 물어보면, Root NameServer는 이를 모르기 때문에 Top-level에게 물어본다. 그러면 Top-level은 Second-level에게 물어보고 Second-level은 blog.example.com을 담당하는 sub DNS Server에게 물어보게 되면서, sub에서 IP 주소를 알려준다.
위 예시처럼 DNS Server는 계층적인 구조를 가지고 있다.
Domain 구조
- 인터넷상에서 사용되는 Domain은 전 세계적으로 고유하게 존재하는 이름이다.
- 정해진 규칙 및 체계에 따라야하며, 임의로 생성되거나 변경될 수 없다.
- 모든 Domain은
.(dot)
또는루트(root)
라 불리는 Domain 아래에 역트리(Inverted Tree)구조로 계층적 구성을 이루고 있다. - 루트 도메인 바로 아래 단계를 1단계 도메인 또는 최상위 도메인(TLD, Top Level Domain) 이라고 부르며, 그 아래 단계를 2단계 도메인(SLD, Second Level Domain)이라고 한다.
도메인 이름 등록 과정과 원리
DNS register
- 관계 국제 인터넷주소 관리기구(Internet Corporation for Assigned Names and Numbers, ICANN) - 등록소(Registry) - 등록대행자(Registrar) - 등록자(Registrant)
- A, NS는 Record Type을 뜻한다. A는 최종적인 IP 주소이며, NS는 Name Server를 뜻한다.
Reference
Comments
CS 의 다른 글
-
HTTP 헤더 - 캐시와 조건부 요청 03 Jan 2022
-
HTTP 헤더 - 일반 헤더 26 Dec 2021
-
HTTP 상태코드 20 Dec 2021
-
HTTP 메서드 활용 17 Dec 2021
-
HTTP 메서드 12 Dec 2021
-
HTTP 기본 09 Dec 2021
-
URI와 웹 브라우저 요청 흐름 08 Dec 2021
-
인터넷 네트워크 06 Dec 2021
-
Single LinkedList 01 Oct 2021
-
ArrayList 24 Sep 2021
-
List Interface(리스트 인터페이스) 23 Sep 2021
-
자바 컬렉션 프레임워크 20 Sep 2021
-
면접 기초 질문 리스트 31 Aug 2021
-
인프라 기초 총정리 14 Aug 2021
-
하드웨어와 네트워크 기초 지식 03 Aug 2021
-
오버레이 네트워크(Overlay Network) 02 Aug 2021
-
이건 꼭 알고 가자! 면접 출제 빈도가 높은 질문들 19 May 2021
-
1분 자기소개 19 May 2021
-
백엔드 개발자 면접 / 학습내용 15 Feb 2021
-
너비 우선 탐색(breadth-first search, BFS) 22 Oct 2020
-
깊이 우선 탐색(depth-first search, DFS) 10 Oct 2020
-
크리티컬 섹션(Critical Section) 10 Sep 2020
-
삽입 정렬(Insertion Sort) 04 Sep 2020
-
선택 정렬(Selection Sort) 04 Sep 2020
-
거품 정렬(Bubble Sort) 04 Sep 2020
-
LRU 알고리즘 31 Aug 2020
-
Stack, Queue 29 Aug 2020
-
awk 명령어 사용법 24 Aug 2020
-
grep 명령어 사용법 23 Aug 2020
-
DNS의 이해 14 Aug 2020
-
대칭키와 공개키 10 Aug 2020
-
HTTP & HTTPS 10 Aug 2020