ping域名和ping IP時速度不一樣的緣由

不知道你們在ping的時候有沒有遇到過這樣的問題:
當你ping一個域名的時候,ping結果返回得很慢,可是若是直接ping這個域名的ip,結果卻快不少。php

直接ping ip的時候,每兩次發包之間沒有明顯的能感知出來的延遲:html

PING www.example.com (xxx.xxx.xxx.xxx) 56(84) bytes of data.

64 bytes from xxx.xxx.xxx.xxx: icmp_req=1 ttl=50 time=3.71 ms

64 bytes from xxx.xxx.xxx.xxx: icmp_req=2 ttl=50 time=5.61 ms

64 bytes from xxx.xxx.xxx.xxx: icmp_req=3 ttl=50 time=3.78 ms

64 bytes from xxx.xxx.xxx.xxx: icmp_req=4 ttl=50 time=4.11 ms

64 bytes from xxx.xxx.xxx.xxx: icmp_req=5 ttl=50 time=3.74 ms

64 bytes from xxx.xxx.xxx.xxx: icmp_req=6 ttl=50 time=3.64 ms


— www.example.com ping statistics —

6 packets transmitted, 6 received, 0% packet loss, time 25073ms

rtt min/avg/max/mdev = 3.647/4.103/5.618/0.697 mslinux

ping域名的時候,每兩次發包間有明顯的延遲:shell

PING www.example.com (xxx.xxx.xxx.xxx) 56(84) bytes of data.

(10s…)

64 bytes from xxx.xxx.xxx.xxx: icmp_req=1 ttl=50 time=3.71 ms

(3s…)

64 bytes from xxx.xxx.xxx.xxx: icmp_req=2 ttl=50 time=5.61 ms

(4s…)

64 bytes from xxx.xxx.xxx.xxx: icmp_req=3 ttl=50 time=3.78 ms

(6s…)

64 bytes from xxx.xxx.xxx.xxx: icmp_req=4 ttl=50 time=4.11 ms

(3s…)

64 bytes from xxx.xxx.xxx.xxx: icmp_req=5 ttl=50 time=3.74 ms

(5s…)

64 bytes from xxx.xxx.xxx.xxx: icmp_req=6 ttl=50 time=3.64 ms


— www.example.com ping statistics —

6 packets transmitted, 6 received, 0% packet loss, time 25073ms

rtt min/avg/max/mdev = 3.647/4.103/5.618/0.697 mswindows

google相關資料後發現,當每次ping完獲得響應以後,ping程序會嘗試一次反向dns查詢(reverse dns lookup)來獲取「64 bytes from」後面的域名,若是查詢速度很慢的話,就會給人彷佛延遲很大的感受,其實這也是ping感受慢,可是每次ping的響應時間卻並不慢的緣由。服務器

其實,ping指令有一個 -n 選項,加上以後能夠阻止ping程序去進行反向dns查詢,這樣ping起來就「快」了!網絡

閱讀原文dom

===============================================================jsp

                                        Linux下的dig 命令詳解

# dig 最基本的用法
dig @server qianlong.com
# 用 dig 查看 zone 數據傳輸
 
dig @server qianlong.com AXFR
# 用 dig 查看 zone 數據的增量傳輸
dig @server qianlong.com IXFR=N
# 用 dig 查看反向解析
dig -x 124.42.102.203 @server
# 查找一個域的受權 dns 服務器
dig   qianlong.com +nssearch
# 從根服務器開始追蹤一個域名的解析過程
dig   qianlong.com +trace
# 查看您使用的是哪一個 F root dns server
dig +norec @F.ROOT-SERVERS.NET HOSTNAME.BIND CHAOS TXT
# 查看 bind 的版本號
dig @bind_dns_server CHAOS TXT version.bind
********************************
您可以到 www.isc.org 去下載一個 bind for windows 的版本安裝,安裝後就可以在 windows 上使用 dig 命令了。^O^
ftp://ftp.isc.org/isc/bind/contrib/ntbind-9.3.0/BIND9.3.0.zip
*********************************
用途
DNS 查詢實用程式。
語法
dig [@server] [-b address] [-c class] [-f filename] [-k filename] [ -n ][-p port#] [-t type] [-x addr] [-y name:key] [name] [type] [class] [queryopt...]
dig [-h]
dig [global-queryopt...] [query...]
描述
標誌
-b address 配置所要詢問地址的源 IP 地址。這必須是主機網絡接口上的某一合法的地址。
-c class 缺省查詢類(IN for internet)由選項 -c 重設。class 可以是任何合法類,好比查詢 Hesiod 記錄的 HS 類或查詢 CHAOSNET 記錄的 CH 類。
-h 當使用選項 -h 時,顯示一個簡短的命令行參數和選項摘要。
-k filename 要簽署由 dig 發送的 DNS 查詢連同對他們使用事務簽名(TSIG)的響應,用選項 -k 指定 TSIG 密鑰文檔。
-n 缺省狀況下,使用 IP6.ARPA 域和 RFC2874 定義的二進制標號搜索 IPv6 地址。爲了使用更早的、使用 IP6.INT 域和 nibble 標籤的 RFC1886 方法,指定選項 -n(nibble)。
-p port# 假如須要查詢一個非標準的端口號,則使用選項 -p。port# 是 dig 將發送其查詢的端口號,而不是標準的 DNS 端口號 53。該選項可用於測試已在非標準端口號上配置成偵聽查詢的域名服務器。
-t type 配置查詢類型爲 type。可以是 BIND9 支持的任意有效查詢類型。缺省查詢類型是 A,除非提供 -x 選項來指示一個逆向查詢。經過指定 AXFR 的 type 可以請求一個區域傳輸。當須要增量區域傳輸(IXFR)時,type 配置爲 ixfr=N。增量區域傳輸將包含自從區域的 SOA 記錄中的序列號改成 N 以後對區域所作的更改。
-x addr 逆向查詢(將地址映射到名稱)可以經過 -x 選項加以簡化。addr 是個以小數點爲界的 IPv4 地址或冒號爲界的 IPv6 地址。當使用這個選項時,無需提供 name、class 和 type 參數。dig 自動運行相似 11.12.13.10.in-addr.arpa 的域名查詢,並分別配置查詢類型和類爲 PTR 和 IN。
-y name:key 您可以經過命令行上的 -y 選項指定 TSIG 密鑰;name 是 TSIG 密碼的名稱,key 是實際的密碼。密碼是 64 位加密字符串,一般由 dnssec-keygen(8)生成。當在多用戶系統上使用選項 -y 時應該謹慎,由於密碼在 ps(1)的輸出或 shell 的歷史文檔中多是可見的。當同時使用 dig 和 TSCG 認證時,被查詢的名稱服務器須要知道密碼和解碼規則。在 BIND 中,經過提供正確的密碼和 named.conf 中的服務器聲明實現。
參數
global-queryopt... 全局查詢選項(請參閱多個查詢)。
查詢 查詢選項(請參閱查詢選項)。
查詢選項
dig 提供查詢選項號,他影響搜索方式和結果顯示。一些在查詢請求報頭配置或復位標誌位,一部分決定顯示哪些回覆信息,其餘的肯定超時和重試戰略。每一個查詢選項 被帶前綴(+)的關鍵字標識。一些關鍵字配置或復位一個選項。一般前綴是求反關鍵字含義的字符串 no。其餘關鍵字分配各選項的值,好比超時時間間隔。他們的格式形如 +keyword=value。查詢選項是:
+[no]tcp
查詢域名服務器時使用 [不使用] TCP。缺省行爲是使用 UDP,除非是 AXFR 或 IXFR 請求,才使用 TCP 鏈接。
+[no]vc
查詢名稱服務器時使用 [不使用] TCP。+[no]tcp 的備用語法提供了向下兼容。 vc 表明虛電路。
+[no]ignore
忽略 UDP 響應的中斷,而不是用 TCP 重試。缺省狀況運行 TCP 重試。
+domain=somename
設定包含單個域 somename 的搜索列表,彷佛被 /etc/resolv.conf 中的域僞指令指定,而且啓用搜索列表處理,彷佛給定了 +search 選項。
+[no]search
使用 [不使用] 搜索列表或 resolv.conf 中的域僞指令(假若有的話)定義的搜索列表。缺省狀況不使用搜索列表。
+[no]defname
不建議看做 +[no]search 的同義詞。
+[no]aaonly
該選項不作任何事。他用來提供對配置成未實現解析器標誌的 dig 的舊版本的兼容性。
+[no]adflag
在查詢中配置 [不配置] AD(真實數據)位。如今 AD 位只在響應中有標準含義,而查詢中沒有,可是出於完整性考慮在查詢中這種性能可以配置。
+[no]cdflag
在查詢中配置 [不配置] CD(檢查禁用)位。他請求服務器不運行響應信息的 DNSSEC 合法性。
+[no]recursive
轉換查詢中的 RD(須要遞歸)位配置。在缺省狀況下配置該位,也就是說 dig 正常情形下發送遞歸查詢。當使用查詢選項 +nssearch 或 +trace 時,遞歸自動禁用。
+[no]nssearch
這個選項被配置時,dig 試圖尋找包含待搜名稱的網段的權威域名服務器,並顯示網段中每臺域名服務器的 SOA 記錄。
+[no]trace
轉換爲待查詢名稱從根名稱服務器開始的代理路徑跟蹤。缺省狀況不使用跟蹤。一旦啓用跟蹤,dig 使用迭代查詢解析待查詢名稱。他將按照從根服務器的參照,顯示來自每臺使用解析查詢的服務器的應答。
+[no]cmd
設定在輸出中顯示指出 dig 版本及其所用的查詢選項的初始註釋。缺省狀況下顯示註釋。
+[no]short
提供簡要答覆。缺省值是以冗長格式顯示答覆信息。
+[no]identify
當啓用 +short 選項時,顯示 [或不顯示] 提供給答的 IP 地址和端口號。假如請求簡短格式應答,缺省狀況不顯示提供給答的服務器的源地址和端口號。
+[no]comments
轉換輸出中的註釋行顯示。缺省值是顯示註釋。
+[no]stats
該查詢選項設定顯示統計信息:查詢進行時,應答的大小等等。缺省顯示查詢統計信息。
+[no]qr
顯示 [不顯示] 發送的查詢請求。缺省不顯示。
+[no]question
當返回應答時,顯示 [不顯示] 查詢請求的問題部分。缺省做爲註釋顯示問題部分。
+[no]answer
顯示 [不顯示] 應答的回答部分。缺省顯示。
+[no]authority
顯示 [不顯示] 應答的權限部分。缺省顯示。
+[no]additional
顯示 [不顯示] 應答的附加部分。缺省顯示。
+[no]all
配置或清除任何顯示標誌。
+time=T
爲查詢配置超時時間爲 T 秒。缺省是5秒。假如將 T 配置爲小於1的數,則以1秒做爲查詢超時時間。
+tries=A
配置向服務器發送 UDP 查詢請求的重試次數爲 A,代替缺省的 3 次。假如把 A 小於或等於 0,則採用 1 爲重試次數。
+ndots=D
出於徹底考慮,配置必須出如今名稱 D 的點數。缺省值是使用在 /etc/resolv.conf 中的 ndots 語句定義的,或是 1,假如沒有 ndots 語句的話。帶更少點數的名稱被解釋爲相對名稱,並經過搜索列表中的域或文檔 /etc/resolv.conf 中的域僞指令進行搜索。
+bufsize=B
配置使用 EDNS0 的 UDP 消息緩衝區大小爲 B 字節。緩衝區的最大值和最小值分別爲 65535 和 0。超出這個範圍的值自動舍入到最近的有效值。
+[no]multiline
以周詳的多行格式顯示相似 SOA 的記錄,並附帶可讀註釋。缺省值是每單個行上顯示一條記錄,以便於電腦解析 dig 的輸出。
多條查詢
dig 的 BIND9 支持在命令行上指定多個查詢(支持 -f 批處理文檔選項的附加功能)。每條查詢可以使用本身的標誌位、選項和查詢選項。
在這種狀況下,在上面描述的命令行語法中,每條查詢自變量表明一個個別查詢。每一條由任意標準選項和標誌、待查詢名稱、可選查詢類型和類連同任何適用於該查詢的查詢選項。
也可以使用對任何查詢均有效的查詢選項全局集合。全局查詢選項必須位於命令行上第一個名稱、類、類型、選項、標誌和查詢選項的元組以前。任何全局查詢選項(除了 +[no]cmd 選項)可以被下面的查詢特別選項重設。例如:
dig +qr www.isc.org any -x 127.0.0.1 isc.org ns +noqr顯示 dig 如何從命令行出發進行三個查詢:一個針對 www.isc.org的任意查詢、一個 127.0.0.1 的逆向查詢,連同一個 isc.org 的 NS 記錄查詢。應用了 +qr 的全局查詢選項,以便 dig 顯示進行每條查詢的初始查詢。最後那個查詢有一個本地查詢選項 +noqr,表示 dig 在搜索 isc.org 的 NS 記錄時不顯示初始查詢。
示例
一個典型的 dig 調用相似:
dig @server name type其中:
server
待查詢名稱服務器的名稱或 IP 地址。可以是用點分隔的 IPv4 地址或用冒號分隔的 IPv6 地址。當由主機提供服務器參數時,dig 在查詢域名服務器前先解析那個名稱。假如沒有服務器參數可以提供,dig 參考 /etc/resolv.conf,而後查詢列舉在那裏的域名服務器。顯示來自域名服務器的應答。
name
將要查詢的資源記錄的名稱。
type
顯示所需的查詢類型 - ANY、A、MX、SIG,連同任何有效查詢類型等。假如不提供任何類型參數,dig 將對紀錄 A 執行查詢。
相關文章
相關標籤/搜索