다른 게시글에서 DNS에 대해 학습 했었는데, 추가적으로 정리 해보려고 한다.
https://hwanii96.tistory.com/524
1. DNS (Domain Name System) == 도메인 네임 시스템
DNS는 도메인명 예) www.naver.com ) 을 IP Address ( 예) 223.130.200.104 ) 로 변환 해주는 시스템 이다.
즉, URL에 등록된 도메인명을 입력 하면, 그 도메인 명에 매핑 되는 IP 주소를 찾아 주는 시스템을 의미 한다.
인터넷에서 클라이언트가 서버로 접속 하기 위해서는 URL에 IP 주소를 입력 해야 한다.
하지만, IP 주소는 복잡 하다. 기억 하기도 힘들고, 숫자 1개만 틀리더라도 전혀 다른 결과값이 나오게 되기 때문이다.
그래서 클라이언트는 URL에 DNS 서버에 등록된 도메인을 입력 한다.
그러면, DNS Server (서버) 에 등록된 도메인과 매핑된 IP 주소를 DNS (도메인 네임 시스템) 가 찾게 하는 원리 이다.
2. DNS를 사용 해야 하는 이유
1) 기억 하기 어려운 IP 주소를 상대적으로 훨씬 기억 하기 쉬운 도메인으로 관리할 수 있다.
DNS를 사용 해야 하는 가장 큰 이유는 사용자 편의성 이다.
사용자가 서비스를 이용 하기 위해서 특정 서버에 접근 하려고 IP 주소를 입력 하는 것은 접근성이 떨어 지기 때문 이다.
cmd 명령 프롬프트를 통해 확인해보자.
nslookup (도메인명)
nslookup 명령어 뒤에 naver.com 도메인명을 입력 하면, 위의 이미지와 같이 IP 주소가 출력 되는 것을 볼 수 있다.
* 네이버 : 223.130.195.200 (223.139.195.95 / 223.130.200.104 / 223.130.200.107)
* 구글 : 142.250.199.78
223.130.195.200 을 URL에 입력 하면 네이버 서버에 접속할 수 있다.
하지만, 위에서 말했듯이 IP를 직접 입력 하는 것은 외우기 어렵기 때문에 IP로 특정 서버에 접속 하는 것은 쉽지 않다.
그리고, 또 다른 측면에서도 IP를 직접 입력 해서 서버에 접근 하는 것은 비효율적 이라는 것을 생각해 볼 수 있다.
바로, IP 주소가 변경 되는 상황이 발생했을 때 일 것 이다.
2) IP 주소가 변경되더라도 변경된 IP를 다시 알아야 할 필요가 사라진다.
IP 주소는 사실 고정 값이 아니다.
네트워크 환경에 따라서 언제든지 주소가 변경될 수 있다.
네이버 같은 대형 회사의 서비스도 장비 교체 등의 이유로 인해 언제든지 IP 주소가 변경될 수 있다.
그럴일은 없겠지만, 실제로 네이버의 IP 주소가 변경 되면 기존에 알고 있는 IP 주소로는 더 이상 접근할 수 없게 될 것이다.
이 때, DNS라는 개념이 없었으면, 네이버 회사는 IP가 변경될 때 마다 사용자에게 매번 번거롭게 공지를 할 것이다.
사용자가 공지를 바로 바로 본다면 당장 접속하는데는 문제가 없겠지만,
공지를 바로 본다고 하더라도 결국 변경된 IP 주소를 또 외워야 하기 때문에 상당히 번거로운 상황이 될 것이다.
하지만 우리는 DNS Server (서버) 가 있기 때문에 위와 같은 걱정을 전혀 하지 않아도 된다 !
그냥 URL에 naver.com 이라는 도메인을 입력 하면, DNS 서버에서 해당 도메인에 매핑된 IP 주소를 간단히 찾게 된다.
3. DNS 서버의 동작 순서
사용자가 구글에 접속한다고 가정하고, DNS 서버가 어떻게 동작 하는지 순서를 확인해보자.
1) 도메인 주소 입력
사용자가 웹 브라우저에 접속 하기 위해서 도메인 명을 입력 한다.
구글에 접속 해야 하므로, www.google.com을 URL에 입력 해야 한다.
2) 로컬 DNS 검색
운영 체제 (OS) 에는 기본적으로 로컬 DNS 캐시 라는 개념이 존재 한다.
이 로컬 DNS 캐시에는 최근에 방문한 도메인 IP 주소가 저장 되어 있다.
참고로 내가 자주 사용 하는 어떤 프로그램에서 이 로컬 DNS 캐시 개념을 확인할 수 있다.
그래서 OS에 저장 되어 있는 로컬 DNS 캐시를 먼저 확인 해서, 만약 로컬 DNS 캐시에 구글 도메인이 있으면,
구글 도메인에 매핑 되는 IP 주소를 반환 하고 끝나게 된다.
3) 로컬 호스트 파일 검색
만약에 로컬 DNS 캐시에 구글 도메인이 존재 하지 않으면 운영 체제는 로컬 호스트 파일을 확인 한다.
호스트 파일은 사용자의 컴퓨터에 저장된 IP 주소와 도메인 이름의 매핑 정보를 담고 있다.
window + r 을 눌러서 호스트 파일을 확인할 수 있다.
이런식으로 확인이 가능 하다.
4) 루트 DNS 서버 조회
그런데 만약 로컬 호스트 파일에도 사용자가 URL에 입력한 도메인 또는 도메인에 매핑 되어 있는 IP 주소가 없으면 ?
그러면 이제 로컬을 벗어 나서 찾게 된다.
이제, 인터넷 망에 존재 하는 DNS 서버에 요청을 보내게 된다.
사용자 인터넷에 연결 되어 있는 DNS 서버에 구글 (www.google.com) 의 IP 주소를 요청 하는 요청 쿼리를 보낸다.
그러면 .com 정보를 등록 하고 있는 탑 레벨 도메인 (TLD) 에 문의 해보라고 TLD의 IP 주소를 알려 준다.
5) TLD (Top Level Domain) (탑 레벨 도메인) DNS 서버 조회
루트 DNS 서버는 탑 레벨 도메인 (TLD) DNS 서버의 IP 주소를 제공 해서 접속할 수 있게 한다 했다.
탑 레벨 도메인은 도메인 이름의 가장 오른쪽에 위치하는 부분을 뜻 한다.
예)
.com
.net
.kr
..
등이 해당 된다.
이 탑 레벨 도메인 (TLD) DNS 서버에서 구글 도메인이 등록 되어 있는 다른 DNS 서버의 IP 주소를 획득 하게 된다.
6) DNS 서버에서 IP 주소 받기
결국 탑 레벨 도메인 DNS 서버에서 구글 도메인이 등록 되어 있는 다른 DNS 서버의 IP 주소를 던져줬기 때문에,
구글 도메인이 등록 되어 있는 DNS 서버에 접속 하게 된다.
결국 이 DNS 서버에서 최종적으로 구글 도메인에 대한 IP 주소를 얻고, 사용자의 컴퓨터로 반환 하게 된다.
사용자는 최종적으로 이 IP 주소로 구글 사이트에 접속 하게 된다.
7) 로컬 DNS 캐시 업데이트
최종적으로 번환 받은 구글 IP 주소는 로컬 DNS 캐시에 저장 된다.
이후, 사용자가 동일한 구글 도메인을 URL에 입력 했을 경우,
OS에 저장 되어 있는 로컬 DNS 캐시를 확인 하고, 일치하는 도메인이 존재 하면 더 빠르게 응답할 수 있도록 한다.
'개념 > Web' 카테고리의 다른 글
네트워크 액세스 계층 - 이더넷 (0) | 2023.12.20 |
---|---|
TCP와 UDP (0) | 2023.12.20 |
네트워크 포트 (Port) 번호 (0) | 2023.12.19 |
쿠키와 세션 (0) | 2023.10.25 |
HTTPS (0) | 2023.10.25 |