rfc 1035 domain std section 7 (RESOLVER IMPLEMENTATION) 에 보면
the resolver should have a global per-request
counter to limit work on a single request. The counter should
be set to some initial value and decremented whenever the
resolver performs any action (retransmission timeout,
retransmission, etc.) If the counter passes zero, the request
is terminated with a temporary error.
이런 말이 나오죠. 즉 resolver 의 timeout 과 restrans 는 시스템에 따라
다르다는 결론입니다.
리눅스의 경우는 glibc 의 resolv 에 관련된 라이브러리 소스를 보시면
resolv.h 에 (/usr/include/resolv.h)
#define RES_TIMEOUT 5 /* min. seconds between retries */
이렇게 정의 되어 있고요.
실제 구현 부분인 res_init.c 와 res_send.c 를 보시면 query를 dns에 날
리고 난 후 5초 동안 기다리고 (poll) response 가 없으면 다음 dns로 넘
어갑니다. 이 들은 범용의 gethostbyname 같은 것들을 실질적으로 동작하
게 하죠.
만약 시스템 전체의 설정을 바꾸시고 싶다면, glibc 를 다시 컴파일 하셔
서 설치하셔야 겠네요.
다음은 1 차 dns 가 죽었을 때의 ping 컴맨드를 strace 로 잡은 건데요.
그 중 다음 부분을 보시면.
socket(PF_INET, SOCK_DGRAM, IPPROTO_IP) = 4 <-- 첫번째 쿼리를 위해 socket 생성
connect(4, {sin_family=AF_INET, sin_port=htons(53), sin_addr=inet_addr("210.180.242.156")}}, 16) = 0
send(4, "2073411 1 3www5hello3com 1 1"..., 31, 0) = 31 <-- 만들어진 socket 으로 send
time(NULL)
= 992493358 <-- 이때 current time
poll([{fd=4, events=POLLIN}], 1, 5000) = 0 <--
poll 로 기다렸으나 event 없음 (5000ms)
close(4) = 0
socket(PF_IN
ET, SOCK_DGRAM, IPPROTO_IP) = 4 <-- 두번째 쿼리를 위해 socket 생성
sendto(4, "2073411 1 3www5hello3com
1 1"..., 31, 0, {sin_family=AF_INET, sin_port=htons(53), sin_addr=inet_addr("203.229.24.63")}}, 16) = 31 <-- 두번째
쿼리 (네밍 서버가 바뀌었죠. 203.229.24.63)
time(NULL) = 992493363
poll([{fd=4, events=POLLIN, revents=POLLIN}], 1, 5000) = 1
recvfrom(4, "207341201200 1 1 3 23www5hello3com 1"..., 1024
,0, {sin_family=AF_INET, sin_port=htons(53), sin_addr=inet_addr("203.229.24.63")}}, [16]) = 141 <-- 두번째 서버에
서 답을 얻음
close(4)
원하시는 답이 되었는지 모르겠네요.
: 로컬 컴퓨터에서 TCP/IP 설
정부분에 1차, 2차 네임서버가
: 세팅돼있습니다.
:
: 그럼 브라우져를 통해 YAHOO.CO.KR 을 들
어간다고 했을때
: 만약 1차 네임서버가 다운돼있다면 2차네임서버로 찾아들어가기 시작
하는
: 시간이 얼마나 걸립니까?...이시간을 설정할수도 있는지요?...
:
: 쉽게 애기해서 1차
가 죽어있을때 클라이언트들이 1차네임서버말고
: 2차네임서버를 통해 찾기 시작하는 시간
이 얼마나 걸리냐..이겁니다.
:
: 제 생각에는 이건 시스템에서 알아서 하는거 같은데 혹시
나 이걸
: 설정하는 부분이 있나해서요...
: 좋은 말씀부탁드립니다.
:
: ps. TTL 값하고는 상
관 짓지마세요
: 이거하고는 상관없는 거니까요....
:
: --
: ^^
--
껌을 씹을 때는 조용
히...