DNS resolver이란?
Dns의 원리를 사용해 IP를 찾아내는 역할을 하는 클라이언트로 볼 수 있다.
hosts.conf 파일이란?
특정 도메인에 대한 IP를 찾을 때, 주소 값을 어디에서 찾을지 결정하는 파일이다.
resolve.conf 파일이란?
OS에서 DNS resolver를 구성할 때 사용하는 파일이다. 사용하고자 하는 네임서버를 기록해둔다.
resolv 파일이 다음과 같이 구성되어있다고 상상해보자.
$cat /etc/resolv.conf
search americano.com cafelatte.com cappuccino.com
여기서 search는 순차적으로 조회해볼 name server를 말한다. name server는 도메인에 맞는 ip 주소를 찾을 때 사용하는 서버를 말한다.
resolv 파일이 실제로 어떻게 동작해보는지 순서를 이해해보자.
front라고 지어진 도메인을 호출한다고 가정하면 이해가 수월하다.
front를 호출하면, DNS resolver는 search에 기록된 name server에 순서대로 질의한다.
- front.americano.com
- front.cafelatte.com
- front.cappuccino.com
- ...
이렇게 호스트 이름과 name server를 붙여서, fqdn을 만든다. 그리고 순차적으로 질의해서, ip 주소를 찾아낸다.
나는 non-fqdn으로 엔드포인트를 사용할 때, ip 주소를 찾아내는 방법으로 이해했다.
FQDN vs Non-FQDN
FQDN (Fully Qualified Domain Name)이란, 호스트 이름과 도메인 이름을 합한 전체 도메인을 말한다. 주소의 마지막에 . (점)이 붙은 경우도 FQDN으로 볼 수 있다. 그러나 . (점)은 생략이 가능하다.
Non-FQDN은 FQDN의 반대되는 개념이다. PQDN(Partially Qualified Domain Name)이라고도 부른다. FQDN의 가장 왼쪽에 위치한 레이블을 말한다.
예를 들어, item.americano.com이라는 주소가 있다고 생각해보자.
item.americano.com은 FQDN이다.
item은 Non-FQDN, PQDN이다.
그래서 애플리케이션에서 Non-FQDN인 item이라는 엔드포인트만으로 통신을 하려면, DNS resolver가 이 주소를 item.americano.com으로 바꿔서, IP를 찾아내는 작업이 필요하다.
그 역할을 resolve.conf 파일이 돕는다.
reverse DNS
일반적으로 DNS를 조회한다는 것은, 도메인으로 ip를 찾아내는 과정을 말한다. reverse DNS은 그 반대이다.
IP 주소로 DNS를 찾아내는 것을 말한다.
주로 이메일이 스팸 메일인지 판단하는 기능에로 사용된다.
DNS의 동작 순서
americano.com이라는 주소를 찾아가는 여정을 대략.. 다음과 같이 이해해보자.
-> 브라우저는 도메인을 입력 받으면 캐시에 저장되어있는지 확인하고
-> 없으면 OS의 resolver에게 물어보고
-> OS 캐시에도 없으면 resolver는 IP를 찾기위해 여정을 떠난다.
-> 일단, root 서버에게 주소를 물어보고, 주소의 마지막에 붙은 TLD 서버 주소를 응답받는다. (ex. com)
-> 그다음 resolver는 TLD 서버한테 주소를 다시 물어본다. 그러면 TLD 서버는 authoritative name server IP 주소를 알려준다. (ex. americano)
-> resolver는 이렇게 americano.com이라는 도메인 주소의 IP를 알아낸다.
<끝>
참고
https://www.baeldung.com/linux/etc-resolv-conf-file
https://www.lifewire.com/what-does-fqdn-mean-2625883
'소프트웨어-이야기 > 프로그래밍 언어와 프레임워크' 카테고리의 다른 글
[Spring] 유틸리티 클래스에 빈 생성자를 만들어야하는 이유 (0) | 2024.03.10 |
---|---|
12월의 추천 서적: 마이크로서비스 아키텍처 구축 가이드 (0) | 2023.12.03 |
개발자를 위한 최소한의 JVM 메모리 트러블 슈팅 사전 지식 (0) | 2023.08.02 |
[ChatGPT] Function calling (0) | 2023.07.25 |
ChatGPT에게 IfNecessary, IfNeeded 함수명의 차이를 물어보다. (0) | 2023.03.04 |