도메인과 DNS

Jang990·2023년 2월 22일
0
post-thumbnail

DNS란?

DNS(Domain Name System)는 범국제적 단위로 웹사이트의 IP 주소와 도메인 주소를 이어주는 환경/시스템입니다. 다음 이미지는 DNS를 간소화 시킨 이미지입니다. 즉 DNS는 도메인 주소를 IP주소로 변환시켜 컴퓨터간에 통신이 가능하도록 만들어줍니다.

도메인(Domain)?

도메인은 인터넷에 연결된 컴퓨터를 사람이 쉽게 기억하고 입력할 수 있도록 문자(영문, 한글 등)로 만든 인터넷주소입니다. 다음 이미지를 통해 도메인과 IP주소의 차이를 알 수 있습니다.

IP주소로 검색을 하든 도메인 주소로 검색을 하든 같은 페이지를 확인할 수 있습니다.

도메인과 IP 주소 확인하는 법

이 부분에서 구글의 IP 주소를 확인하고 IP 주소로 서버에 요청을 보내보겠습니다.

IP 주소를 확인하는 방법은 여러 방법이 있지만 여기선 nslookup 명령어를 사용해서 확인해 보겠습니다. nslookup 명령어는 DNS 서버에 질의하여, 도메인의 정보를 조회 하는 명령어입니다.

실제로 "www.google.com"와 "142.250.207.100"를 각각 브라우저 입력해서 요청을 보내면 구글 페이지를 확인할 수 있습니다.

DNS 서버 종류 구분

  1. 브라우저에 "www.google.com" 입력
  2. 브라우저가 DNS 서버에 해당 도메인에 매핑되는 IP 주소 요청
  3. DNS 서버에게 받은 IP 주소인 "142.250.207.100"로 웹서버에 접속


    해당 글에서 서버와 연결하는 부분은 다루지 않고 DNS를 중심으로 다루고 있습니다.

앞서 위와 같이 간략한 흐름처럼 DNS 서버 1개가 모든 것을 처리하는 것은 상당히 비효율적입니다. 그렇기 때문에 DNS 서버 종류를 계층화해서 단계적으로 처리합니다.

여기서는 계층화한 서버의 종류를 살펴보도록 하겠습니다.

  • Root DNS Server: ICANN이 직접 관리하는 서버로, TLD DNS 서버 IP들을 저장해두고 안내하는 역할.

  • TLD(Top Level Domain=최상위 도메인) DNS Server: 도메인 등록 기관(Registry)이 관리하는 서버로, Authoritative DNS Server 주소를 저장해두고 안내하는 역할.

  • Authoritative DNS Server: 실제 개인 도메인과 IP 주소의 관계가 기록/저장/변경되는 서버. 일반적으로 도메인/호스팅 업체의 ‘네임서버’를 말하지만, 개인 DNS 서버 구축을 한 경우에도 여기에 해당.

  • Recursive DNS Server: 인터넷 사용자가 가장 먼저 접근하는 DNS 서버임. 위 3개의 DNS 서버를 매번 거친다면 효율이 좋지 않으니, 한 번 거친 후 얻은 데이터를 일정 기간(TTL/Time to Live) 동안 캐시라는 형태로 저장해 두는 서버. 캐시만을 보관하기 때문에, Authoritative와 비교되는 의미로 반복의 Recursive가 붙는다. 대표적인것이 KT/LG/SK와 같은 ISP(통신사) DNS 서버.

브라우저는 캐시가 저장된 Recursive 서버를 사용하고, 실제 네임서버를 설정하는 곳은 Authoritative 서버라는 점만 주의해서 이해하면 가장 좋을 듯합니다. 나머지 두 서버는 컨트롤할 수 있는 영역도 아니고 언급되는 경우도 적으니 전반적인 이해를 위해서 이런게 있구나 정도로만 생각하면 되겠습니다.

DNS 흐름 파악

이제 본격적으로 세부 흐름을 파악해보겠습니다. 이번 세부 흐름에서는 'www.google.com'이 아닌 'Nesite.com'을 예시 사이트로 사용하고 KT 통신사를 쓰고 있다고 가정합니다.

  1. 브라우저에 "Nesite.com"입력. 사용하고 있는 통신사인 KT DNS 서버에게 도메인 주소에 해당하는 IP 주소를 요청함

    이미지에는 있지 않은 내용이지만 DNS 서버로 가기 전에 OS에서 캐싱되어 있는 DNS에서 "Nesite.com"에 대한 IP 주소가 있는지 확인합니다. cmd에서 'ipconfig /displaydns' 명령어를 통해 현재 OS에 캐싱되어 있는 DNS 직접 확인 가능합니다.

  2. (ISP -> Root)ISP 서버에선 캐시 데이터가 없다는 걸 확인하고 루트 DNS 서버에게 어디로 가야 하는지 요청(캐시가 있다면 8번 단계로 건너 뜀)
  3. (Root -> ISP)루트 서버는 TLD DNS 서버 주소만 관리하기 때문에, ***.com 도메인을 보고는 COM 최상위 도메인을 관리하는 TLD DNS 서버 주소를 안내
  4. (ISP -> TLD)ISP 서버는 COM 서버에게 어디로 가야 하는지 다시 요청.
  5. (TLD -> ISP)COM 서버는 가비아 DNS 서버에서 해당 도메인이 관리되고 있는 걸 확인하고 안내.
  6. (ISP -> 가비아)ISP 서버는 가비아 서버에게 또 다시 요청함.
  7. (가비아 -> ISP)가비아 서버는 “Nesite.com = 12.123.123.123”이라는 정보를 확인하고 이 IP를 알림. 동시에 ISP 서버는 해당 정보를 캐시로 기록.
  8. (ISP -> 브라우저)ISP 서버는 브라우저에게 힘들게 알아 낸 9.123.123.123 주소를 안내.
  9. (브라우저 -> 웹 서버)브라우저는 12.123.123.123 IP 주소를 갖고 있는 호스팅 서버에게 웹사이트를 출력하라고 요청.
  10. 서버로 부터 응답을 받음.

출처

https://gentlysallim.com/dns%EB%9E%80-%EB%AD%90%EA%B3%A0-%EB%84%A4%EC%9E%84%EC%84%9C%EB%B2%84%EB%9E%80-%EB%AD%94%EC%A7%80-%EA%B0%9C%EB%85%90%EC%A0%95%EB%A6%AC/

https://xn--3e0bx5euxnjje69i70af08bea817g.xn--3e0b707e/jsp/resources/domainInfo/domainInfo.jsp

https://velog.io/@tnehd1998/%EC%A3%BC%EC%86%8C%EC%B0%BD%EC%97%90-www.google.com%EC%9D%84-%EC%9E%85%EB%A0%A5%ED%96%88%EC%9D%84-%EB%95%8C-%EC%9D%BC%EC%96%B4%EB%82%98%EB%8A%94-%EA%B3%BC%EC%A0%95

profile
공부한 내용을 적지 말고 이해한 내용을 설명하자

0개의 댓글