호스트 이름을 해당 IP 주소로 확인하려면 쿼리할 수 있는 여러 DNS 서버가 있습니다. 캐싱이 발생하지 않는다고 가정하면 요청한 사람(클라이언트), 재귀 DNS, 루트 DNS, TLD DNS 및 마지막으로 권한 있는 이름 서버에서 캐싱이 전달됩니다.
내가 주문한 게 맞나요? 요청이 전달됩니까, 아니면 서버가 클라이언트가 접속해야 하는 다음 수준의 서버 IP 주소로 응답합니까? 예를 들어 재귀 이름 서버는 루트 서버에서 실제로 쿼리를 수행합니까, 아니면 루트 서버의 IP 주소만 전달합니까? 캐싱 목적으로는 처음인 것 같아요. 또한 캐싱은 어떤 단계에서 발생할 수 있습니까? 예를 들어 루트 서버가 TLD 서버로부터 캐시된 응답을 갖게 됩니까? 고유 루트 서버가 13개밖에 없는데 TLD 서버로 직접 이동하는 대신 해당 레벨을 갖는 것이 무슨 의미가 있습니까?
답변1
따라서 이것은 깊은 주제이므로 표면에 불과하지만 쿼리에 응답할 수 있는 몇 가지 방법이 있다는 것을 고려하십시오.
일반적으로 사용 가능한 쿼리 유형에 따라 클라이언트가 a.b.c.com
.
재귀적 확인의 경우 클라이언트는 서버에 한 번 쿼리하여 전체 이름을 찾습니다. 서버는 루트 서버에 대한 쿼리를 처리한 다음 C
및 에 대한 네임서버를 확인 하고 호스트 이름에 대해 B
쿼리합니다 . 그런 다음 로컬 서버는B
A
하나의클라이언트에 대한 응답.
비재귀적 확인의 경우 클라이언트는 에 대한 이름 서버를 요청하는 요청을 보낸 C.com
다음 해당 서버에 에 대한 이름 서버를 쿼리 B.C.com
하고 해당 서버에 호스트를 쿼리합니다 A
. 이것이 우리가 계속 원했던 실제 답변입니다. 하지만 이 경우에는클라이언트는 3개의 별도 쿼리를 작성해야 했습니다.그것을 얻기 위해.
로컬 확인자가 확인을 위해 알 수 없는(로컬이 아닌) 쿼리를 다른 서버로 전달할 수 있는 "전달자"라는 관련 개념이 있습니다. 로컬 서버와 업스트림 확인자 간의 상호 작용은 재귀적일 수도 있고 그렇지 않을 수도 있지만 결과는 단일 응답으로 클라이언트에 다시 전송되므로 클라이언트 관점에서는 재귀적입니다.
이제 캐싱 주제를 살펴보면, 캐시는 클라이언트에 가까울수록 네트워크 성능 관점에서 가장 가치가 있습니다. 하지만 캐시가 너무 가깝고 캐시된 답변의 다양성이 부족하면 캐시가 많이 사용되지 않을 수 있다는 것이 단점입니다. 캐시를 한두 계층의 업스트림에 배치하여 캐시가 더 많은 사용자의 결합된 결과를 나타내고 답변을 얻을 가능성이 더 높도록 하는 것이 가치가 있을 수 있습니다.
답변2
내가 주문한 게 맞나요?
일반적인 순서는 그렇습니다. 그러나 이는 직선이 아닙니다. 루트 서버는 쿼리를 다른 곳으로 전달하지 않고 참조 응답과 함께 확인자에게 다시 반송됩니다(확인자에게 다른 곳에서 쿼리하라고 지시함). TLD 서버와 도메인 서버도 마찬가지입니다.
요청이 전달됩니까, 아니면 서버가 클라이언트가 접속해야 하는 다음 수준의 서버 IP 주소로 응답합니까?
두 가지 행동 모두 발생하지만 위치는 다릅니다.
예를 들어 재귀 이름 서버는 루트 서버에서 실제로 쿼리를 수행합니까, 아니면 루트 서버의 IP 주소만 전달합니까?
재귀 서버는 실제 쿼리를 수행합니다. 이것이 문자 그대로 재귀 서버를 만드는 이유입니다. 클라이언트의 쿼리를 수락한 후 최종 결과를 반환할 수 있을 때까지 자체적으로 추가 쿼리를 수행합니다. (그 이유는 OS에서 실행되는 클라이언트가 필요한 모든 기능을 갖추고 있지 않은 스텁 확인자일 뿐이기 때문입니다.)
그러나 루트/TLD/도메인 서버는 재귀적이지 않습니다. 즉, 권한이 있는 도메인에 대해서만 응답하고 나머지에 대해서는 리디렉션(추천)만 제공합니다. 그들은 스스로 더 이상 질문을 하지 않습니다.
또한 캐싱은 어떤 단계에서 발생할 수 있습니까? 예를 들어 루트 서버가 TLD 서버로부터 캐시된 응답을 갖게 됩니까?
캐싱은 쿼리를 보내고 응답을 받는 시스템에서 발생합니다. 이는 재귀 확인자만이 다른 사람으로부터 캐시 가능한 정보를 받기 때문에 캐싱을 수행한다는 것을 의미합니다.
반면 루트/TLD/도메인 서버는 재귀 쿼리를 처리하지 않습니다. 다른 어떤 것도 쿼리하지 않으므로 캐시할 필요가 없습니다. (그들은 자신이 속한 도메인에 대해서만 응답합니다.권위 있는에 대한.)
고유한 루트 서버가 13개밖에 없는데 TLD 서버로 직접 이동하는 대신 해당 레벨을 갖는 것이 무슨 의미가 있습니까?
모든 사람의 확인자는 TLD 서버가 어디에 있는지 어떻게 알 수 있습니까?
"the" TLD 서버는 없다는 점을 명심하십시오. 각 TLD에는 TLD 서버가 있습니다. 예를 들어 com
TLD에는 한 세트의 서버가 있고 eu
TLD에는 다른 서버 세트가 있습니다. 말 그대로 수백 개의 TLD가 있으므로 정적 목록은 작동하지 않습니다.
DNS 루트는 이 문제를 단순화합니다. 모든 TLD 및 해당 서버 목록 대신 서버에 루트 도메인이 하나만 있으므로 초기 목록이 훨씬 작아지고 변경되는 목록도 있습니다.매우드물기 때문에 리졸버 소프트웨어에 실제로 복사본이 포함될 수도 있습니다. 대부분의 재귀 해결 프로그램에는 "루트 힌트" 복사본이 포함되어 있습니다.
(또한 초창기에는 하나의 주소가 정확히 하나의 호스트를 의미했기 때문에 13개의 루트 서버 주소가 있다는 점에 유의하십시오. 그러나 더 이상은 그렇지 않습니다. 인터넷은 애니캐스트 라우팅을 지원하므로 거의 각 주소는 실제로 수백 개의 고유 인스턴스에 해당합니다. 실제로는.)