- 论坛徽章:
- 1
|
反向解析域是怎么授权的
skylove 兄別介意~其實重點只是學習的態度而以...
netman 兄的問題:
看來 sendmail 的確從 app 這層定議了 retry 的內容.
至於 /usr/include/resolv.h 裡關於 RES_DFLRETRY 的預設值, 似乎是
#define RES_DFLRETRY 2 /* Default #/tries. */
不過, 我尚不確定的是: 在定義了 2 次 retry 的情況下,
resolver 是用 round robin 方式呢?
是定義了二次 Retry ,一般系統都預設兩次 (有的系統較早一點的版本沒有
這個功能)
我們得先想想, 什麼狀況會 Retry , 通常是 Bad Query/Timeout
像 Server Fail,Format Error ...這種錯誤(mis-configuration,錯誤的設定)
是不會 Retry 的,這點需要先區分清楚
(也就是他巳經查到了,只是這個 "答案" 可能對 AP 沒有實質意義,查不到
要 Retry 是在前述的狀況,不是DNS設定錯誤要重查)
所以 AP->;Resolver->;DNS->;DNS Query Flow ...
AP 會呼叫 Resolver 去查 DNS,
DNS Server (指在 /etc/resolv.conf 中設定的 nameserver )
個人認為,這個 Retry 指的是 這一段動作(AP->;DNS),
而不是 DNS->;DNS Query, 這可能是要區分清楚的
您可能會再想...若在 resolv.conf 這裏面定義了
nameserver IP1
nameserver IP2
何時取用 IP1 或 IP2 這個問題 ,或如何取用
resolv.conf 的說明檔中其實並沒有講得很清楚(MAXNS 最大為3,系統巳定義)
就我查看resolver程式的部份:
- /*
- * Send request, RETRY times, or until successful.
- */
- for (try = 0; try < statp->;retry; try++) {
- for (ns = 0; ns < statp->;nscount; ns++) {
复制代码
可以發現, nameserver IP 當 retry N 次後 (這個 N 就是您提的那個#define .... 2) ,
會換下一個 nameserver,下一個再試 N 次,最大失敗數就是 N x Nameserver 數了.
能夠成功將查詢送到 nameserver 即完成了 Resolver 的行為,再下來就是 DNS
的行為了,重點即在要查的目標 DNS 設定是否正確了.
不知如此解釋您可否看的懂!? 若不了解或疑義我們可再討論 ..
您指出來的 Point 也是觸發我 Study 的動機 , 受益良多 |
|