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)文章
Python使用requirements.txt和pip打包批量安裝的實現(xiàn)
本文主要介紹了Python使用requirements.txt和pip打包批量安裝的實現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2023-02-02
Pycharm關(guān)于遠(yuǎn)程JupyterLab以及JupyterHub登錄問題
這篇文章主要介紹了Pycharm關(guān)于遠(yuǎn)程JupyterLab以及JupyterHub登錄問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教2024-06-06
淺析Python中壓縮zipfile與解壓縮tarfile模塊的使用
Python?提供了兩個標(biāo)準(zhǔn)庫模塊來處理文件的壓縮和解壓縮操作:zipfile和tarfile,本文將分享?這兩個模塊的使用方法,感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下2023-10-10
Python基于list的append和pop方法實現(xiàn)堆棧與隊列功能示例
這篇文章主要介紹了Python基于list的append和pop方法實現(xiàn)堆棧與隊列功能,結(jié)合實例形式分析了Python使用list定義及使用隊列的相關(guān)操作技巧,需要的朋友可以參考下2017-07-07

