4.3.2. Algorithm
4.3.2. 알고리즘
The actual algorithm used by the name server will depend on the local OS and data structures used to store RRs.
네임 서버에서 사용되는 실제 알고리즘은 RR을 저장하는 데 사용되는 로컬 OS 및 데이터 구조에 따라 달라집니다.
The following algorithm assumes that the RRs are organized in several tree structures, one for each zone, and another for the cache:
다음 알고리즘은 RR이 각 영역에 하나씩, 캐시에 대해 하나씩 여러 트리 구조로 구성되어 있다고 가정합니다.
1. Set or clear the value of recursion available in the response depending on whether the name server is willing to provide recursive service.
1. 네임 서버가 재귀 서비스를 제공할 의향이 있는지 여부에 따라 응답에서 사용 가능한 재귀 값을 설정하거나 지웁니다.
If recursive service is available and requested via the RD bit in the query, go to step 5, otherwise step 2.
재귀 서비스가 가능하고 쿼리의 RD 비트를 통해 요청된 경우 5단계로 이동하고, 그렇지 않으면 2단계로 이동합니다.
2. Search the available zones for the zone which is the nearest ancestor to QNAME. If such a zone is found, go to step 3, otherwise step 4.
2. QNAME에 가장 가까운 조상인 영역에 대해 사용 가능한 영역을 검색합니다. 해당 영역이 발견되면 3단계로 이동하고, 그렇지 않으면 4단계로 이동합니다.
3. Start matching down, label by label, in the zone. The matching process can terminate several ways:
3. 영역에서 레이블별로 일치를 시작합니다. 일치 프로세스는 여러 가지 방법으로 종료될 수 있습니다.
a. If the whole of QNAME is matched, we have found the node.
a. QNAME 전체가 일치하면 노드를 찾은 것입니다.
If the data at the node is a CNAME, and QTYPE doesn't match CNAME, copy the CNAME RR into the answer section of the response, change QNAME to the canonical name in the CNAME RR, and go back to step 1.
노드의 데이터가 CNAME이고, QTYPE이 CNAME과 일치하지 않는 경우, CNAME RR을 응답의 답변 섹션에 복사하고 QNAME을 CNAME RR의 정식 이름으로 변경한 후 1단계로 돌아갑니다.
Otherwise, copy all RRs which match QTYPE into the answer section and go to step 6.
그렇지 않으면, QTYPE과 일치하는 모든 RR을 답변 섹션에 복사하고 6단계로 이동합니다.
b. If a match would take us out of the authoritative data, we have a referral.
b. 일치로 인해 신뢰할 수 있는 데이터에서 제외될 경우 추천을 받습니다.
This happens when we encounter a node with NS RRs marking cuts along the bottom of a zone.
이는 영역 하단을 따라 절단된 NS RR 표시가 있는 노드를 만날 때 발생합니다.
Copy the NS RRs for the subzone into the authority section of the reply.
하위 영역에 대한 NS RR을 응답의 권한 섹션에 복사합니다.
Put whatever addresses are available into the additional section, using glue RRs if the addresses are not available from authoritative data or the cache. Go to step 4.
신뢰할 수 있는 데이터나 캐시에서 주소를 사용할 수 없는 경우 글루 RR을 사용하여 사용 가능한 모든 주소를 추가 섹션에 넣습니다. 4단계로 이동합니다.
c. If at some label, a match is impossible (i.e., the corresponding label does not exist), look to see if a the "*" label exists.
c. 일부 레이블에서, 일치가 불가능한 경우 (즉, 해당 레이블이 존재하지 않는 경우) "*" 레이블이 있는지 확인하세요.
If the "*" label does not exist, check whether the name we are looking for is the original QNAME in the query or a name we have followed due to a CNAME.
"*" 레이블이 존재하지 않는 경우 찾고 있는 이름이 쿼리의 원래 QNAME인지 아니면 CNAME으로 인해 따라온 이름인지 확인하세요.
If the name is original, set an authoritative name error in the response and exit. Otherwise just exit.
이름이 원본인 경우 응답에 신뢰할 수 있는 이름 오류를 설정하고 종료합니다. 그렇지 않으면 그냥 종료하세요.
If the "*" label does exist, match RRs at that node against QTYPE.
"*" 레이블이 존재하는 경우 해당 노드의 RR을 TYPE과 일치시킵니다.
If any match, copy them into the answer section, but set the owner of the RR to be QNAME, and not the node with the "*" label. Go to step 6.
일치하는 항목이 있으면, 답변 섹션에 복사하세요. 단, RR의 소유자는 "*" 라벨이 있는 노드가 아닌 QNAME으로 설정하세요. 6단계로 이동하세요.
4. Start matching down in the cache.
4. 캐시에서 매칭을 시작합니다.
If QNAME is found in the cache, copy all RRs attached to it that match QTYPE into the answer section.
QNAME이 캐시에서 발견되면 QTYPE과 일치하는 연결된 모든 RR을 답변 섹션에 복사합니다.
If there was no delegation from authoritative data, look for the best one from the cache, and put it in the authority section. Go to step 6.
권한 있는 데이터의 위임이 없다면 캐시에서 가장 좋은 것을 찾아 권한 섹션에 넣습니다. 6단계로 이동합니다.
5. Using the local resolver or a copy of its algorithm (see resolver section of this memo) to answer the query.
5. 쿼리에 응답하기 위해 로컬 해석기 또는 해당 알고리즘 사본(이 메모의 리졸버 섹션 참조)을 사용합니다.
Store the results, including any intermediate CNAMEs, in the answer section of the response.
중간 CNAME을 포함한 결과를 응답의 답변 섹션에 저장합니다.
6. Using local data only, attempt to add other RRs which may be useful to the additional section of the query. Exit.
6. 로컬 데이터만 사용하여, 쿼리의 추가 섹션에 유용할 수 있는 다른 RR을 추가해 보십시오. 종료합니다.