1.DNS查詢過程:
以查詢 www.baidu.com為例
(1)電腦向本地域名服務器發送解析www.baidu.com的請求
(2)本地域名服務器收到請求后,先查詢本地的緩存,如果找到直接返回查詢結果,如果沒有該記錄,本地域名服務器把www.baidu.com的請求發送給根域名服務器
(3)根域名服務器收到請求后,把.com域的服務器IP地址返回給本地域名服務器
(4)本地域名服務器連接.com服務器,向其請求解析域名www.baidu.com, .com服務器把baidu.com服務器的IP地址返回給本地DNS服務器
(5)本地DNS服務器向baidu.com服務器發送解析域名請求,baidu.com服務器將www.baidu.com的IP地址返回給本地DNS服務器
(6)本地DNS服務器把www.baidu.com的IP地址返回給電腦。
2.域名和IP地址的對應關系:
一個域名可以對應多個IP地址,但在同一時刻,一個域名只能有一個IP地址,一個IP地址可以對應多個域名。
3.查詢DNS
Python可以實現DNS的正向和反向查詢。下面是正向查詢的代碼:
代碼如下:
#!/usr/bin/env python
import sys,socket
result=socket.getaddrinfo(sys,argv[1],None)
print result[0][4]
因為一個域名可以有多個IP地址,所以上述程序兩次運行的結果可能會不同。
運行程序 :
代碼如下:./test.py www.baidu.com
結果為 :
代碼如下:(‘111.13.100.91',80)
反向查詢:
代碼如下:
#!/usr/bin/env python
import sys,socket
try:
result=socket.gethostbyaddr(sys.argv[1])
print "hostname is "+result[0]
except socket.herror,e:
print "can't look up"
運行程序
代碼如下:./test2 127.0.0.1
結果為:
代碼如下:hostname is localhost
新聞熱點
疑難解答