DNS란 무엇인가?
DNS(Domain Name System)는 도메인을 IP로 변환해주는 시스템이다.
이 DNS를 운영하는 서버가 도메인 서버다.
여기서 도메인은 ip주소(ex. 123.123.123.123)를 사용자가 기억하기 쉽게 만든 명칭이다.
ex. 123.123.123.123 -> helloworld.com
도메인의 구조는 메인, 서브, 최상위 도메인으로 구성되어 있다.
메인 도메인
메인 도메인은 웹사이트의 기본 주소를 나타내는 도메인이다.
http://www.naver.com 에서 naver가 메인 도메인을 의미한다.
서브 도메인
서브 도메인은 메인 도메인 앞에 추가되는 도메인으로 웹사이트의 특정 기능이나 콘텐츠를 구분하기 위한 도메인이다.
blog.naver.com에서 blog, shop.naver.com 에서 shop이 서브 도메인이다.
www도 일조의 서브 도메인이다.
최상위 도메인
최상위 도메인(TLD; Top-Level Domain)은 웹사이트의 목적, 소유자, 지리적 위치를 나타내며, 사용자가 해당 웹사이트의 정체성을 인식할 수 있는 도메인이다.
즉, 접속하는 웹사이트에 대한 특성을 나타내기 위한 목적의 도메인이다.
일반적인 최상위 도메인은 .com, .net, .org 이 있고 국가적으로는 .kr, .jp 등이 있다.
DNS를 IP로 변환하는 과정
dns는 아래와 같은 과정을 통해 도메인을 ip로 변환해준다.
아래의 요청 및 응답 과정을 DNS 쿼리 과정이라고 한다.
DNS 리졸버가 DNS 서버에 도메인 명에 해당되는 IP를 요청하는 데, 이 요청 메시지가 바로 DNS 쿼리다.
그리고, 이 dns 쿼리가 포함된 전체 내용이 dns 패킷이다.
dns 패킷은 dns 서버 간 통신 시 전송되는 데이터 단위를 의미한다.
아래 과정은 dns resolver가 수행
1. 사용자가 브라우저 주소창에 http://www.naver.com입력
2. 브라우저는 dns 캐시나 etc/hosts파일에서 http://www.naver.com에 해당하는 ip주소가 있는지 확인
3. 정보가 있으면, 해당 IP주소로 접속. 없으면, 로컬dns서버(isp제공서버)에 요청 -> 정보 있으면 캐싱된 데이터 반환
4. 로컬 dns서버에도 없으면, Root Name Server에 http://www.naver.com 요청
5. Root name server는 .com에 대한 tld name server 정보 반환 -> TLD Name Server에 요청
6. TLD Name Server는 SLD name server(ex. naver.com) 정보를 반환
7. 반환된 SLD name server에 요청
8. SLD name 서버가 naver.com 에 대한 ip주소 반환
8-1. if shop.naver.com의 경우 해당 ip주소 반환 or 별도 네임서버 존재하는 경우 해당 네임서버 반환
8-2. 별도 네임서버에서 shop.naver.com에 대한 ip주소 반환
9. 사용자는 반환된 IP주소를 통해 웹 서버에 HTTP/HTTPS 요청 -> 응답 받고 웹 페이지에 접근
DNS 서버 종류는 아래와 같다.
로컬 DNS 서버
ISP에서 운영하는 dns 서버를 의미한다.
도메인을 ip주소로 변환하는 dns를 운영하는 서버이다.
외부의 루트 도메인 서버 접근 전에 접근하여 요청하는 서버이다.
보통 내부 네트워크에 위치(ex. 회사, 학교 등)하거나 ISP의 네트워크 내에 있다.
구글에서 운영하는 dns 서버도 있다.(8.8.8.8, 8.8.4.4)
Root Name Server
DNS 계층 구조의 최상위에 있는 서버이다.
TLD를 관리하는 네임서버에 대한 정보를 갖고 있다.
해당 서버에서 http://www.google.com 에 대한 ip 정보 요청이 들어오면, .com TLD Nameserver 정보를 반환한다.
TLD(Top-Level Domain) Name Server
도메인 등록 기관이 관리하는 서버로, SLD를 관리하는 네임서버에 대한 정보를 갖고 있다.
naver.com 에 대한 ip 정보를 요청시, naver.com 에 대한 네임서버 정보를 반환한다.
SLD DNS Server
도메인 소유자가 직접 설정 또는 등록기관에서 관리하는 네임 서버이다.
해당 서브도메인에 대한 IP 주소, DNS 레코드 정보를 보유하고 있다.
최종적으로 요청된 ip 주소를 반환한다.
즉, Root Name Server는 TLD에 대한 서버 정보(ip)를 알고 있고,
TLD Name Server는 SLD에 대한 서버 정보(ip)를 알고 있고,
SLD Name Server는 Sub domain에 대한 서버 정보(ip)를 알고 있는 것이다.
DNS 레코드
nslookup
nslookup(name server lookup)은 dns 레코드를 조회하는 명령어다.
ex. nslookup http://www.naver.com
해당 명령어를 통해 IP주소가 정상적으로 반환되면, IP주소와 도메인 간 제대로 매핑되어 있다는 것을 의미한다.
dns 레코드는 도메인 명과 IP주소 간 매핑된 내용을 의미한다.
즉, DNS 서버가 DNS패킷을 받았을 때, 어떻게 처리할 지에 대한 내용이다.
아래는 DNS 레코드에 대한 종류이다.
예를 들어, A 레코드는 도메인 명을 IPv4 주소로 매핑하는 레코드를 의미한다.
1대1 매핑이거나 1대다 매핑일 수 있다.
1대다는 하나의 도메인 명에 여러 IP주소가 연결되는 구조(부하 분산, 고가용성 목적)
nslookup 쳤을 때, http://www.google.com 은 1대1, http://www.naver.com 은 1대다 로 나온다.
https://cl8d.tistory.com/64
https://inpa.tistory.com/entry/WEB-%F0%9F%8C%90-DNS-%EA%B0%9C%EB%85%90-%EB%8F%99%EC%9E%91-%EC%99%84%EB%B2%BD-%EC%9D%B4%ED%95%B4-%E2%98%85-%EC%95%8C%EA%B8%B0-%EC%89%BD%EA%B2%8C-%EC%A0%95%EB%A6%AC