python實現(xiàn)DNS正向查詢、反向查詢的例子
1.DNS查詢過程:
以查詢 www.baidu.com為例
(1)電腦向本地域名服務(wù)器發(fā)送解析www.baidu.com的請求
(2)本地域名服務(wù)器收到請求后,先查詢本地的緩存,如果找到直接返回查詢結(jié)果,如果沒有該記錄,本地域名服務(wù)器把www.baidu.com的請求發(fā)送給根域名服務(wù)器
(3)根域名服務(wù)器收到請求后,把.com域的服務(wù)器IP地址返回給本地域名服務(wù)器
(4)本地域名服務(wù)器連接.com服務(wù)器,向其請求解析域名www.baidu.com, .com服務(wù)器把baidu.com服務(wù)器的IP地址返回給本地DNS服務(wù)器
(5)本地DNS服務(wù)器向baidu.com服務(wù)器發(fā)送解析域名請求,baidu.com服務(wù)器將www.baidu.com的IP地址返回給本地DNS服務(wù)器
(6)本地DNS服務(wù)器把www.baidu.com的IP地址返回給電腦。
2.域名和IP地址的對應(yīng)關(guān)系:
一個域名可以對應(yīng)多個IP地址,但在同一時刻,一個域名只能有一個IP地址,一個IP地址可以對應(yīng)多個域名。
3.查詢DNS
Python可以實現(xiàn)DNS的正向和反向查詢。下面是正向查詢的代碼:
#!/usr/bin/env python
import sys,socket
result=socket.getaddrinfo(sys,argv[1],None)
print result[0][4]
因為一個域名可以有多個IP地址,所以上述程序兩次運(yùn)行的結(jié)果可能會不同。
運(yùn)行程序 :
結(jié)果為 :
反向查詢:
#!/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"
運(yùn)行程序
結(jié)果為:
相關(guān)文章
使用matplotlib繪制并排柱狀圖的實戰(zhàn)案例
堆積柱狀圖有堆積柱狀圖的好處,比如說我們可以很方便地看到多分類總和的趨勢,下面這篇文章主要給大家介紹了關(guān)于使用matplotlib繪制并排柱狀圖的相關(guān)資料,需要的朋友可以參考下2022-07-07Python如何實現(xiàn)強(qiáng)制數(shù)據(jù)類型轉(zhuǎn)換
這篇文章主要介紹了Python如何實現(xiàn)強(qiáng)制數(shù)據(jù)類型轉(zhuǎn)換,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下2019-11-11