我們通常使用域名來訪問目標(biāo)機(jī)器,而不是直接使用其IP地址,那么域名與IP地址之間存在什么樣子的轉(zhuǎn)化關(guān)系呢?想要了解他們之間的轉(zhuǎn)化關(guān)系,我們不得不提域名查詢服務(wù)。域名查詢服務(wù)具有很多種實(shí)現(xiàn)方式,例如:NIS(Network Information Service,網(wǎng)絡(luò)信息服務(wù))、DNS和本地靜態(tài)文件等。本次主要講解DNS。
成都創(chuàng)新互聯(lián)是一家專業(yè)提供清徐企業(yè)網(wǎng)站建設(shè),專注與成都做網(wǎng)站、成都網(wǎng)站制作、H5技術(shù)、小程序制作等業(yè)務(wù)。10年已為清徐眾多企業(yè)、政府機(jī)構(gòu)等服務(wù)。創(chuàng)新互聯(lián)專業(yè)網(wǎng)站設(shè)計(jì)公司優(yōu)惠進(jìn)行中。DNS請求/應(yīng)答報(bào)文詳解
DNS是一套分布式的域名服務(wù)系統(tǒng)。每個(gè)DNS服務(wù)器中都存放著大量的域名與IP地址之間的映射,并且是動(dòng)態(tài)更新的。眾多網(wǎng)絡(luò)客戶端程序是通過DNS協(xié)議去域名服務(wù)器中查詢目標(biāo)IP地址的。DNS查詢與應(yīng)答報(bào)文格式如下圖所示:
0 15 16 31
16位標(biāo)識位(ID) | 16位標(biāo)志位 |
16位請求記錄數(shù)目 | 16位應(yīng)答記錄數(shù)目 |
16位授權(quán)記錄數(shù)目 | 16位額外記錄數(shù)目 |
32位查詢記錄信息 | |
應(yīng)答記錄信息(長度可變) | |
授權(quán)記錄信息(長度可變) | |
額外記錄信息(長度可變) |
16位標(biāo)識字段是用來標(biāo)記一對查詢/應(yīng)答報(bào)文的,通過查詢該字段來確定返回的應(yīng)答報(bào)文是由哪一個(gè)查詢報(bào)文發(fā)出的。
16位標(biāo)志字段是用來協(xié)商通信方式和返回通信狀態(tài)的,DNS頭部報(bào)文標(biāo)識字段的具體細(xì)節(jié)如下圖所示:
QR | opcode | AA | TC | RD | RA | zero | rcode |
1位 | 4位 | 1位 | 1位 | 1位 | 1位 | 3位 | 4位 |
各個(gè)標(biāo)識符的含義分別是:
QR:查詢/應(yīng)答標(biāo)識,0標(biāo)識查詢,1標(biāo)識應(yīng)答。
opcode:定義查詢和應(yīng)答的類型。0標(biāo)識標(biāo)準(zhǔn)查詢,1標(biāo)識反向查詢(根據(jù)IP地址查詢域名),2標(biāo)識請求服務(wù)器狀態(tài)。
AA:授權(quán)服務(wù)器應(yīng)答標(biāo)識。1標(biāo)識域名服務(wù)器是授權(quán)服務(wù)器。
TC:截?cái)鄻?biāo)識,僅當(dāng)DNS報(bào)文使用UDP服務(wù)時(shí)使用。因?yàn)閁DP數(shù)據(jù)包有長度限制,當(dāng)長度過長時(shí)會(huì)被截?cái)唷?標(biāo)識DNS報(bào)文長度超過512字節(jié),并被截?cái)唷?/p>
RD:遞歸查詢標(biāo)識。1標(biāo)識執(zhí)行遞歸查詢,即DNS服務(wù)器無法解析某一個(gè)主機(jī)名,則它向其它DNS服務(wù)器繼續(xù)查詢,如此反復(fù),直到它解析到目標(biāo)主機(jī)名并返回給客戶端。0標(biāo)識迭代查詢,即DNS服務(wù)器無法解析目標(biāo)主機(jī)時(shí),它將查詢到的其它DNS服務(wù)器的IP地址返回給客戶端,供客戶端進(jìn)行參考。
RA:允許遞歸標(biāo)識。此字段在應(yīng)答字段中使用,1標(biāo)識DNS服務(wù)器支持遞歸查詢。
zero:默認(rèn)為0,屬于保留字段。
rcode:4位返回碼,標(biāo)識應(yīng)答狀態(tài)。常用值有0(無錯(cuò)誤)和3(域名不存在)
接下來的四個(gè)字段分別指出了DNS報(bào)文最后四個(gè)字段的資源記錄數(shù)目。對查詢報(bào)文而言,它一般包含一個(gè)查詢問題,而應(yīng)答記錄數(shù)目、授權(quán)記錄數(shù)目、額外記錄數(shù)目為0.對于應(yīng)答報(bào)文而言,應(yīng)答記錄數(shù)目至少是1,而授權(quán)記錄數(shù)目和額外記錄數(shù)目可為0或非0.
查詢問題格式如下:
0 15 16 31
查詢名 | |
16位查詢類型 | 16位查詢類 |
類型A:值是1,表示獲取目標(biāo)主機(jī)的IP地址。
類型CNAME:值是5,表示獲取目標(biāo)主機(jī)的別名。
類型PTR:值是12,表示反向查詢。
16位查詢類通常是1,表示獲取因特網(wǎng)地址(IP地址)
應(yīng)答字段、授權(quán)字段、額外字段都采用了資源記錄格式。資源記錄格式如下所示:
0 15 16 31
32位域名 | |
16位類型 | 16位類 |
32位生存時(shí)間 | |
16位資源記錄數(shù)據(jù)長度 | 資源數(shù)據(jù) |
資源數(shù)據(jù) |
表中的32位域名是該記錄中與資源對應(yīng)的名字,其格式與查詢記錄中的查詢域名所對應(yīng)的格式一樣。16位類型和16位類與DNS中查詢記錄中對應(yīng)的字段格式一樣。
32位生存時(shí)間表示該查詢記錄結(jié)果可被客戶端緩存多久,單位:秒。
16位資源記錄數(shù)據(jù)長度和資源數(shù)據(jù)字段的內(nèi)容取決于類型字段。對于A類型而言,資源數(shù)據(jù)是32位IPV4地址,而資源記錄長度為4(單位:字節(jié))。
至此,我們簡要地介紹了DNS協(xié)議,接下來我們以具體例子來看DNS協(xié)議。
2. Linux下訪問DNS服務(wù)
我們要訪問DNS服務(wù),就必須要先知道DNS服務(wù)器的IP地址。Linux使用/etc/resolv.conf文件來存放DNS服務(wù)器的IP地址。在Ubuntu上,該文件的內(nèi)容如下:
第一個(gè)IP地址代表DNS服務(wù)器地址。
Linux下一個(gè)常用的訪問DNS服務(wù)器的客戶端程序是host,比如下面的命令是向著DNS服務(wù)器127.0.0.1查詢機(jī)器www.baidu.com的IP地址:
host命令的輸出告訴我們,機(jī)器名www.baidu.com是www.a.shifen.com的別名,并且該別名對應(yīng)著兩個(gè)IP地址。host命令使用DNS協(xié)議和DNS服務(wù)器通信,其-t選項(xiàng)告訴DNS協(xié)議使用哪種查詢類型。我們這里使用的是A類型,即通過機(jī)器的域名獲取其IP地址(但實(shí)際返回資源中還包含著機(jī)器的別名)。關(guān)于host命令的詳細(xì)使用方法,請參考man手冊。
3.使用TCPDUMP觀察DNS通信過程
為了看清楚DNS通信過程,下面我們將從Ubuntu上面運(yùn)行host命令一查詢主機(jī)www.baidu.com對應(yīng)的IP地址,并使用tcpdump抓取這一過程中LAN上傳輸?shù)囊蕴W(wǎng)幀的數(shù)據(jù)包,具體操作如下:
這一次執(zhí)行tcpdump抓包時(shí),我們使用“port domain”來過濾數(shù)據(jù)包,表示只抓取domain域名服務(wù)的數(shù)據(jù)包,即DNS查詢和應(yīng)答報(bào)文,tcpdump的輸出如下:
這兩個(gè)數(shù)據(jù)包開始的“IP”指出,他們后面描述的內(nèi)容是IP數(shù)據(jù)報(bào)。tcpdump以“IP地址:端口號”的形式來描述通信的某一端:以“>”表示數(shù)據(jù)傳輸方向,“>”前面是源端,后面是目的端。第一個(gè)數(shù)據(jù)包是測試機(jī)器Ubuntu(IP地址是192.168.48.2.53)發(fā)送的DNS查詢報(bào)文(目標(biāo)端口53是DNS服務(wù)器使用的端口,這一點(diǎn)我們在前面介紹過),第二個(gè)數(shù)據(jù)包是服務(wù)器反饋的DNS應(yīng)答報(bào)文。
另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)scvps.cn,海內(nèi)外云服務(wù)器15元起步,三天無理由+7*72小時(shí)售后在線,公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、高防服務(wù)器、香港服務(wù)器、美國服務(wù)器、虛擬主機(jī)、免備案服務(wù)器”等云主機(jī)租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡單易用、服務(wù)可用性高、性價(jià)比高”等特點(diǎn)與優(yōu)勢,專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應(yīng)用場景需求。