DNS 레코드 중 CNAME Record를 통해 URL이 호스트 될 때 발생하는 일

DNS 레코드에 대해서 조사하고 있는데, CNAME Record에 호스트되는 URL을 입력하게 되었을 때 발생하는 일에 대해서 알려줘

CNAME (Canonical Name) 레코드는 DNS(Domain Name System)에서 도메인 이름을 다른 도메인 이름으로 매핑하는 데 사용됩니다. 쉽게 말해, CNAME 레코드를 설정하면 하나의 도메인 이름이 다른 도메인 이름을 가리키도록 할 수 있습니다. 예를 들어, www.example.comexample.com에 매핑하거나 blog.example.com을 외부 서비스의 도메인(hostedblog.com)에 매핑할 수 있습니다.

CNAME 레코드를 통해 URL이 호스트될 때 발생하는 일은 다음과 같습니다:

1. CNAME 레코드 조회

사용자가 브라우저에 CNAME 레코드가 설정된 도메인 이름(예: www.example.com)을 입력하면, DNS 서버는 해당 도메인 이름에 대해 CNAME 레코드를 조회합니다.

2. 실제 호스트로 변환

DNS 서버는 CNAME 레코드에 따라 도메인 이름을 다른 도메인 이름으로 변환합니다. 예를 들어, www.example.comexample.com에 대한 CNAME 레코드로 설정되어 있으면, DNS 서버는 www.example.comexample.com으로 변환합니다.

3. A 레코드 조회

변환된 도메인 이름(예: example.com)에 대해 다시 DNS 쿼리가 수행됩니다. 이때 example.com의 A 레코드(또는 AAAA 레코드)가 조회되어 실제 IP 주소가 반환됩니다. IP 주소는 클라이언트에게 반환되어, 클라이언트는 해당 IP 주소로 요청을 보냅니다.

4. 클라이언트의 연결

클라이언트는 최종적으로 반환된 IP 주소로 연결을 시도합니다. 여기서 중요한 점은 클라이언트는 CNAME 레코드를 통해 변환된 최종 도메인 이름이 아닌, 최초로 입력된 도메인 이름(예: www.example.com)을 여전히 사용한다는 점입니다.

CNAME 레코드 사용 시 고려 사항

따라서 CNAME 레코드를 사용하면 도메인 간의 매핑을 유연하게 관리할 수 있지만, 불필요한 체인을 만들지 않도록 주의해야 합니다.

CNAME 레코드를 사용하여 조회를 시도할때 Recursive Resolver가 이 작업을 수행하는거야?

네, 맞습니다. CNAME 레코드를 사용한 조회 작업은 Recursive Resolver가 수행합니다. 이 과정을 조금 더 상세히 설명하자면:

Recursive Resolver의 역할

Recursive Resolver는 사용자가 도메인 이름을 입력하면, 해당 도메인의 IP 주소를 찾기 위해 여러 DNS 서버를 순차적으로 조회하는 역할을 합니다. 이 과정에서 Recursive Resolver는 CNAME 레코드를 처리하는 것도 포함됩니다.

CNAME 조회 시 Recursive Resolver의 동작 과정

  1. 도메인 이름 조회 요청: 사용자가 www.example.com과 같은 도메인 이름을 입력하면, 이 요청은 Recursive Resolver에게 전달됩니다.

  2. DNS 서버로부터의 정보 조회: Recursive Resolver는 해당 도메인에 대한 정보(예: A 레코드 또는 CNAME 레코드)를 찾기 위해 DNS 서버(일반적으로 권한 있는 네임서버, 즉 Authoritative Name Server)에 쿼리를 보냅니다.

  3. CNAME 레코드 확인: Authoritative Name Server는 www.example.com에 대한 CNAME 레코드를 가지고 있다고 가정해봅시다. 이 경우, 해당 서버는 www.example.comexample.com을 가리킨다는 정보를 Recursive Resolver에게 반환합니다.

  4. 새로운 쿼리 수행: Recursive Resolver는 이제 example.com에 대해 다시 쿼리를 수행합니다. 이 때, example.com에 대한 A 레코드(또는 AAAA 레코드)를 조회하게 되고, 최종적으로 이 도메인 이름에 연결된 IP 주소를 획득하게 됩니다.

  5. 최종 IP 주소 반환: Recursive Resolver는 이 IP 주소를 클라이언트(즉, 웹 브라우저나 애플리케이션)에게 반환합니다. 클라이언트는 이 IP 주소를 사용해 실제로 해당 서버에 연결을 시도하게 됩니다.

요약

따라서, CNAME 레코드와 관련된 모든 처리 과정에서 Recursive Resolver가 중요한 역할을 합니다.