一、什么是域名系統(tǒng)
DNS 計算機(jī)域名系統(tǒng) (DNS) 是由解析器以及域名服務(wù)器組成的。當(dāng)我們在上網(wǎng)的時候,通常輸入的是網(wǎng)址,其實這就是一個域名,而我們計算機(jī)網(wǎng)絡(luò)上的計算機(jī)彼此之間只能用IP地址才能相互識別。再如,我們?nèi)ヒ籛EB服務(wù)器中請求一WEB頁面,我們可以在瀏覽器中輸入網(wǎng)址或者是相應(yīng)的IP地址,例如我們要上新浪網(wǎng),我們可以在IE的地址欄中輸入網(wǎng)址,也可輸入IP地址,但是這樣子的IP地址我們記不住或說是很難記住,所以有了域名的說法,這樣的域名會讓我們?nèi)菀椎挠涀 ?br>
名稱 | 含義 | 特性 |
域名服務(wù)器 | 保存有該網(wǎng)絡(luò)中所有主機(jī)的域名和對應(yīng)IP地址,并具有將域名轉(zhuǎn)換為IP地址功能的服務(wù)器。 | 域名必須對應(yīng)一個IP地址,而IP地址不一定只對應(yīng)一個域名,采用類似目錄樹的等級結(jié)構(gòu)。 |
域名解析服務(wù)器 | 域名與IP地址之間的轉(zhuǎn)換工作 | 域名解析過程中的查詢順序為:本地緩存記錄、區(qū)域記錄、轉(zhuǎn)發(fā)域名服務(wù)器、根域名服務(wù)器。 |
二、訪問DNS的方法一:使用socket模塊
1、DNS查詢
以查詢www.external.example.com為例。首先,程序會和操作系統(tǒng)配置文件指定的本地名稱服務(wù)器通信。這個服務(wù)器是一個遞歸的名稱服務(wù)器,它收到請求并以適當(dāng)?shù)姆绞絺鬟f下去。遞歸服務(wù)器做的第一件事情是詢問.com域,回答是以一種指向另外一外名稱服務(wù)器的提名形式給出的。這個名稱服務(wù)器可以提供名稱中包含.com的信息。查詢發(fā)送到該服務(wù)器后,該服務(wù)器將以另一個提名回答進(jìn)行回應(yīng),指向另外一臺服務(wù)器,而這個服務(wù)器可以提供example.com的名稱信息。這個循環(huán)重復(fù)多次,直到查詢到external.example.com服務(wù)的名稱服務(wù)器。
2、正向查詢
最基本的查詢是正向查詢,即根據(jù)一個主機(jī)名來查找ip地址。Socket庫可以實現(xiàn)這種查詢,主要用函數(shù)socket.getaddrinfo()。注意,該函數(shù)和ipv6不兼容。
Getaddrinfo(host,port[,family[,sockettype[,proto[,flags]]]])
參數(shù)host為域名,以字符串形式給出代表一個IPV4/IPV6地址或者None.
參數(shù)port如果字符串形式就代表一個服務(wù)名,比如“http”"ftp""email"等,或者為數(shù)字,或者為None
參數(shù)family為地主族,可以為AF_INET ,AF_INET6 ,AF_UNIX.
參數(shù)socketype可以為SOCK_STREAM(TCP)或者SOCK_DGRAM(UDP)
新聞熱點
疑難解答
圖片精選