DNS(Domain Name System)?
우리가 일반적으로 보는 www.naver.com과 같이 우리가 사용하는 주소가 도메인이다. 도메인 네임 시스템은 이 주소를 사용자가 입력하면 IP 주소로 변환해주는 역할을 한다. 그 반대의 역할도 수행한다.
IP 주소
우리의 컴퓨터는 네트워크 상에서 숫자를 사용하여 통신하게 된다.
192.xx.x.x 이렇게 흔히들 본 적이 있을 것이다. 이를 IP주소라고 한다.
하지만 이러한 숫자를 입력하게 되면 우리는 그 숫자들을 다 기억해야 한다. 그렇기 때문에 도메인이 나온 것이고,
그 도메인을 IP주소로 변환하는 DNS(Domain Name System)이 탄생하게 된 것이다.
DNS의 동작 방식
DNS는 다음과 같은 동작 방식으로 동작한다.
동작 방식을 보기 이전에 다음과 같은 내용을 알아야 한다.
www.naver.com 이라는 주소가 있으면
www.naver.com 주소전체는 HostName 이라 부른다
.com : Top-level Domain Name 이라고 부른다. (co.kr 등이 이에 속한다.)
.naver.com : 이것은 Second-level Domain 이다.
1. 사용자가 웹/모바일 브라우저 주소창에 www.naver.com 을 입력하고 Enter를 누른다.
2. 로컬 DNS 서버에 "www.naver.com" 이라는 hostname의 ip 주소를 요청한다.
로컬 DNS 서버는 우리가 사용하는 집에 인터넷 지역 케이블인터넷이면 지역케이블 DNS , KT면 KT DNS가 된다.
(로컬 DNS는 이전에 접속했던 내역이 있으면 캐싱이 되어 있어 바로 IP주소를 전달하고, 없다면 다음단계로 넘어간다)
3. 로컬 DNS 는 IP주소를 찾지 못하였기 때문에 다른 DNS 서버와의 통신을 시작한다.
우선 루트 DNS 서버에게 "www.naver.com"을 요청한다.
루트 DNS는 인터넷의 도메인 네임 시스템의 루트 존이다.
TopLevel Domain DNS 서버 IP를 저장해두고 연결해준다.
4. 만약 루트 DNS도 찾을수 없다면
루트 DNS 서버는 "www.naver.com"의 주소를 찾을 수 없다고 로컬 DNS에게 다른 주소로 찾아보라고 응답해준다.
5. 로컬 DNS서버는 TopLevel Domain Server 에게 "www.naver.com"에 대한 IP 주소를 요청한다.
6. 만약 Top-Level Domain Server도 찾을 수 없다면 다시 로컬 DNS 에게 다른 주소로 찾으라 응답해준다.
7. 로컬 DNS 서버는 "naver.com" DNS 서버(Authoritative DNS 서버) 에게 IP주소를 다시 요청한다.
Authoritative DNS 서버
도메인 및 IP 주소의 관계가 저장되는 서버
일반 도메인 호스팅 업체및, 개인이나 회사 DNS 서버 구축의 경우에도 여기에 해당하게됨
8. "naver.com" DNS 서버에는 IP주소가 있다면, 로컬 DNS 서버에게 IP주소를 응답해준다.
로컬 DNS 서버는 해당 IP주소를 캐싱하고, 단말 PC에 저장한다.
정리해보자면
로컬 DNS는 이전에 검색한 이력이 있다면 캐시에서 바로 받아오고 아니라면
루트 DNS -> TopLevelDomain -> Authoritative DNS 서버를 차례대로 찾는다.
재귀적 쿼리(Recursive Query)
ROOT DNS , TopLevelDomain(.com), Authoritative DNS 서버로 요청하여 찾는 과정을 재귀적 쿼리 라고 부른다
DNS 캐시
cmd 창에서 아래와 같이 입력하게되면
ipconfig /displaydns
이러한 캐시정보를 PC는 저장하여 바로 IP를 찾을 수 있게 된다.
TTL(Time To Live)의 값은 시간이 점점 감소하게 되어 0이되면 캐시에서 사라지게된다.
도움이 된 글
- https://aws.amazon.com/route53/what-is-dns/?nc1=h_ls
'개발 > 네트워크' 카테고리의 다른 글
[NetWork] DNS Recode type (0) | 2022.10.21 |
---|---|
[Network] HTTP 메소드 (GET, POST) (0) | 2022.10.11 |
[NetWork] CORS(Cross-Origin Resource Sharing) (0) | 2022.10.08 |
REST API는 무엇일까? (1) | 2022.10.07 |
HTTP 상태 코드 (status code) (1) | 2022.09.30 |
댓글