[네트워크] 한 번에 끝내는 DNS

Robert.Yang·2023년 5월 21일
1

Network

목록 보기
32/59
post-thumbnail

이 포스트는 널널한 개발자님 강의를 참조하여 작성한 포스트입니다.

한 번에 끝내는 DNS

DNS

  • 분산 구조형 데이터베이스

    • 데이터베이스 시스템(DNS 네임서버)의 분산구성
    • 데이터 영역별 구분(Domain Zone) 및 분산관리
    • 도메인의 네임서버 및 도메인 데이터는 해당 관리주체에 의해 독립적으로 관리됨
  • 트리구조의 도메인 네임(Domain Name) 체계

    • Domain: 영역, 영토를 의미
    • 도메인 네임의 자율적 생성
    • 생성된 도메인 네임은 언제나 유일하도록 네임체계 구성

OSI 7 Layer의 L1~L4는 Infra Structure로 볼 수 있다. L5~L7의 Application이 뭔가 목적화 되는 것이고 이 Application들을 위해서 Infra가 존재하는 것이다. 그래서 우리가 인터넷을 이루고 있는 각 종 서비스라는 것이 Application 계층에 존재한다. 근데 Application 계층에 존재하는 서비스중에 infra에 해당되는 것들이 있는데 그 중에 가장 대표적인게 DNS이다.

여기서 DNS는 Domain Name Service이다. 뭐 별거 없고 네이버 같은데 접속할 때 www.naver.com을 주소창에 치고 엔터키를 누른다. 그러면 네이버 웹서버까지 TCP/IP 연결을 해야한다. 그러면 네이버 IP주소를 알아야 하는데 사용자 대부분 네이버 IP주소를 모를 것이다. 그런데 어떻게 네이버 IP주소를 알 수 있을까? 누가 이 IP주소를 알려줄까? 이걸 알고있는 DB가 있다. 예를들어 번호를 궁금할때 114에 전화를 걸면 알려주는것과 유사하다. 또한 우리가 친구한테 연락을 할 때 친구 전화번호를 직접 누르지 않고 주소록을 통하여 친구 이름을 검색하여 전화를 거는 상황과 유사하다. 즉 이름으로 검색을 한다. Domain Name도 결국 이름이고 이 이름으로 IPv4 주소를 검색하여 그 결과를 알려주는 서비스를 제공해주는 것이 DNS이다. 요즘 대부분이 웹기반으로 구현되기 때문에 DNS가 잘못되면 인터넷이 모조리 스탑된다. 그래서 DNS는 매우 중요한 인터넷 자원이다.

DNS기능은 매우 간단하다. Domain Name으로 IP주소를 알려주는 기능을 한다. 그런데 DB를 자세히 들어가보면 분산구조형으로 되어 있다. 대부분의 경우 트리 구조로 되어 있는데 이런게 어떻게 되어지는지 생각해보자. 우선 Domain Name부터 생각해보자. www.naver.com이라는 주소가 있는데 분류가 어떻게 되냐면 www는 작은 개념으로 naver라는것에 속하는 녀석이다. 근데 www.naver라는 것은 com이라는 녀석에 속하는 녀석이다. 즉, com이라는 것이 더 큰 개념이다. 서양주소체계가 우리나라 주소체계랑 다른것과 유사한개념으로 이해하면 쉬울 것이다. 그래서 Domain Name이라는 것은 naver.com이다. 그리고 이 도메인에 속한 www는 host name이다. 예를들어 www.naver.com이 뭐냐면 naver.com이라는 도메인에 속한 이름이 www인 host를 찾는 것이다.

💡 참고
www.naver.com을 URL 혹은 URI라고 불러야 하는데 통상적으로 URL이라는 표현을 많이 쓸 것이고 URL 주소라고 많이들 부른다.

그래서 이 주소라는 것이 Domain Name과 Host Name으로 나눠져 있다. 보통 질의를 할때 www.naver.com을 통으로 질의를 하고 DNS가 그것을 보고 IP주소를 알려준다. 그러면 왜 이런 것들이 분산구조형이라고 하는지 이야기해보자.

우리가 인터넷을 쓰는데 KT,SKT,LGU+등 여러 ISP를 통해 인터넷을 이용할 것이다. 예를 들어 철수가 KT같은데서 인터넷 회선을 끌어다가 사용한다고 해보자. 그러면 일정 금액을 지불하고 인터넷을 사용할 것이다. 그런데 공유기를 활용해 PC, Mobile등 여러 디바이스가 인터넷을 사용할 수 있을 것이다. 근데 중요한 것은 철수가 크롬 주소창에 https://www.naver.com 이라 치고 엔터키를 누르면 어떻게 될까? 이 PC의 IP설정(DNS 주소)을 기반으로 작동이 될 것이다. OS가 윈도우라고 가정하면 윈도우 OS내부에서 KT DNS서버한테 질의를 할 것이다. '네이버에 접속하려는데 www.naver.com IP주소좀 알려줘'라고 보낼 것이다. 그럼 DNS서버가 응답으로 IP주소를 줄 것이다. 그럼 그 IP주소를 보고 접속을 하게 될 것이다. 그래서 중요한 것은 DNS주소는 보통 ISP에서 정해주는 것을 사용한다. DNS 응답이 느려지면 인터넷 전체가 느려질 수 있고 사용자 입장에서는 네이버 너무 느리다라고 판단하는 착오가 있을 것이다.

만약에 철수가 ISP 어딘가를 빼서 Google DNS(8.8.8.8)로 세팅을 했다면 네이버 접속할 때마다 Google DNS한테 물어봐야 하는데 응답시간이 매우 길어질 것이다. 왜냐하면 ISP DNS 서버보다 Google DNS 서버가 너 멀리 있기 때문이다. 그래서 보통은 ISP DNS서버를 사용한다.

이렇게 IP주소를 알아내면 알아냄과 동시에 네이버 서버에 접속할 것이다. 이때부터 HTTP 통신을 하게 되고 이런 통신을 하면서 브라우저로 네이버 화면을 볼 수 있을 것이다. 여기서 추가적으로 알아야할께 PC가 한번이라도 DNS한테 질의를 하면 예를들어 www.naver.com을 질의하면 DNS는 네이버 IP를 반환하고 이 IP를 PC의 RAM에 저장해두고 있는데 이것을 DNS 캐시라고 한다. 그래서 PC마다 이 DNS 캐시를 가지고 있다. 윈도우에서 명령프롬프트에 다음과 같은 명령어를 치면 DNS 캐시내용이 출력될 것이다.

displaydns

그런데 중요한 것은 응답이라는 것이 오면 IP주소와 같이 오는것이 있는데 바로 유효기간이다. 이 유효기간까지만 캐시가 되고 그 이후에는 다시 DNS에 물어야하고 그 유효기간 내에서는 DNS한테 질의하지 않고 바로 캐시를 보고 접속을 한다.

그러면 왜 캐시를 하는 것일까? 쉽게 생각해서 DNS한테 계속 질의를 하면 DNS서버에 부하가 심하게 생길것이기 때문이다. 그래서 한번 질의를 하면 그 이후 캐시를 통하여 접속을 한다.

여기서 중요한게 보안이다. 만약 DNS서버가 거짓말을 하면 어떨까? 내가 DNS한테 네이버 주소를 알려달라고 했는데 다음주소를 알려주면 어떻게 될까? 주소창에 www.naver.com을 입력했는데 다음 홈페이지가 나올것이다. 그래서 DNS가 해킹같은것을 당하면 매우 큰일이 남으로 DNS는 보안이 생명이다.

PC입장에서 DNS캐시가 존재한다. 또한 이것뿐만 아니라 윈도우의 hosts파일이 존재한다. 우리가 인터넷뱅킹을 할때 보안프로그램이 활성화되면서 이 프로그램의 약관을 살펴보면 hosts파일을 보호한다고 되어있다. 이 hosts가 무엇이냐면 IP주소와 url이 기입된 파일이다. 만약에 hosts가 있다면 PC는 DNS한테 질의하지 않고 이 파일에 써져있는데로 움직인다. 그래서 옛날 악성 바이러스가 이 파일을 많이 조작하고 감염시켰다.

💡 참고
공유기 IP와 DNS주소가 같을 수 있는데 공유기 자체는 DNS가 아님으로 공유기에서 DNS 포워딩 기능을 이용해서 공유기가 DNS를 대행해주는 기능이 있다.

브라우저에 www.naver.com을 치면 ISP에 DNS에 어느 누구도 www.naver.com을 요청한적이 없다면 어떻게 될까? 일단 PC가 DNS에게 네이버 IP주소를 요청할 것이다. 여기서 DNS도 일반 DNS가 아니라 Cache DNS인데 이 DNS는 캐싱을 어떻게 하는것일 까?

지구상의 DNS는 계층적 구조를 지니는데 그 정점에 있는 DNS가 Root DNS이다. 이 DNS는 한국은행처럼 DNS를 위한 DNS이다. 그럼 본론으로 Cache DNS가 Root DNS한테 누군가 www.naver.com이라는 IP주소를 묻는데 com에 관련된 애들을 알려달라고 요청을 하고 Root DNS는 도메인 이름중에 com으로 끝나는 Domain 관리 DNS 몇대를 소개해주고 이 DNS의 IP주소들을 목록화하여 보여준다. 그럼 이중 1대를 지정해서 네이버를 아냐고 물어보고 안다고 하면 Naver name Server를 알려준다. 그럼 그 서버에 host name이 www인 PC를 알려달라고 요청을 하게 되고 그때 드디어 IP주소를 반환하게 된다. 그리고 Cache DNS는 이 IP와 url을 쌍으로 저장하게 되는 구조로 작동한다.

profile
모든 것을 즐길 줄 아는 개발자, 양성빈입니다.

0개의 댓글