日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

什么是DNS的正向解析与反向解析?代码实现?

發(fā)布時間:2023/12/16 编程问答 29 豆豆
生活随笔 收集整理的這篇文章主要介紹了 什么是DNS的正向解析与反向解析?代码实现? 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

DNS采用C/S機制。實現(xiàn)域名與IP地址轉(zhuǎn)換。DNS服務(wù)器用于存儲資源記錄并提供名稱查詢服務(wù),DNS客戶端也稱解析程序,用來插敘服務(wù)器并獲取名稱解析信息。

正向解析與反向解析

按照DNS查詢目的,可將DNS解析分為以下兩種類型。

  • 正向解析

根據(jù)計算機的DNS名稱(即域名)解析出相應(yīng)的IP地址。

大部分DNS解析都是正向解析,即根據(jù)DNS域名查詢對應(yīng)的IP地址及其他相關(guān)信息。正向解析又稱標準查詢。正向解析記錄存儲在正向解析區(qū)域文件中。

  • 反向解析

根據(jù)計算機的IP地址解析其DNS名稱,多用來為服務(wù)器進行身份驗證。

有時我們也會用到反向解析,即通過IP地址查詢對應(yīng)的域名,最典型的就是判斷IP地址所對應(yīng)的域名是否合法。由于反向解析的特殊性,RFC 1304規(guī)定了固定格式的反向解析區(qū)域后綴格式in-addr.arpa

與DNS名稱不同,當IP地址從左到右讀時,它們是以相反的方式解釋的,所以對每個8位字節(jié)值需要使用域的反序,因此建立 in-addr-arpa

反向解析區(qū)域文件與正向解析區(qū)域文件格式相同,只是其主要內(nèi)容是用于建立IP地址到DNS域名的轉(zhuǎn)換記錄,即PTR資源指針記錄。PTR資源指針記錄和A資源記錄正好相反,它是將IP地址解析成DNS域名的資源記錄。

域名解析的具體過程

域名系統(tǒng) (DNS) 旨在將主機名解析為 IP 地址。 將名稱解析為 IP 地址的過程稱為“正向解析”。 DNS 樹被組織成一個倒置的樹結(jié)構(gòu),地址的最不具體的部分在頂部,地址的最具體的部分在底部。

我們知道DNS服務(wù)器里面有兩個區(qū)域,即“正向查找區(qū)域”和“反向查找區(qū)域”,正向查找區(qū)域就是我們通常所說的域名解析,反向查找區(qū)域即是所說的IP反向解析,我們下面來解析上圖的域名解析過程。

  • 當客戶機提出查詢請求時,首先在本地計算機的緩存中查找。如果在本地無法獲得查詢信息,則將查詢請求發(fā)給DNS服務(wù)器。
  • 首先客戶機將域名查詢請求發(fā)送到本地DNS服務(wù)器,當本地DNS服務(wù)器接到查詢后,首先在該服務(wù)器管理的區(qū)域的記錄中查找,如果找到該記錄,則利用此記錄進行解析;如果沒有區(qū)域信息可以滿足查詢要求,服務(wù)器在本地的緩存中查找。
  • 如果本地服務(wù)器不能在本地找到客戶機查詢的信息,將客戶機請求發(fā)送到根域名DNS服務(wù)器。
  • 根域名服務(wù)器負責解析客戶機請求的根域部分,它將包含下一級域名信息的DNS服務(wù)器地址返回給客戶機的DNS服務(wù)器地址。
  • 客戶機的DNS服務(wù)器利用根域名服務(wù)器解析的地址訪問下一級DNS服務(wù)器,得到再下一級域我的DNS服務(wù)器地址。
  • 按照上述遞歸方法逐級接近查詢目標,最后在有目標域名的DNS服務(wù)器上找到相應(yīng)IP地址信息。
  • 客戶機的本地DNS服務(wù)器將遞歸查詢結(jié)果返回客戶機。
  • 客戶機利用從本地DNS服務(wù)器查詢得到的IP訪問目標主機,就完成了一個解析過程。

正向解析可以通過主機名獲取其對應(yīng)的廣域網(wǎng)IP地址,使用 nslookup 命令在 Linux上輸入

nslookup 【domain】

從返回的信息中可以看到正向解析的結(jié)果。

如何做反向DNS?

我們可以通過命令來執(zhí)行反向 DNS 查找

1、使用 nslookup 命令
2、使用 dig 命令
3、使用 rDNS 查找工具

反向 DNS 查找命令

nslooup命令
nslookup最簡單的用法是查詢域名對應(yīng)的IP地址,也可以使用IP地址查找域名,例如:

nslookup [ip_address]

使用nslookup可以輸出返回指定 IP 地址的域名。

由于在域名系統(tǒng)中,一個IP地址可以對應(yīng)多個域名,因此從IP出發(fā)去找域名,理論上應(yīng)該遍歷整個域名樹,但這在Internet上是不現(xiàn)實的。為了完成逆向域名解析,系統(tǒng)提供一個特別域,該特別域稱為逆向解析域in-addr.arpa。


在 IPv6 中,PTR 記錄將 rDNS 條目存儲在 .ip6.arpa 域中,而不是 .in-addr.arpa

dig命令

Linux下解析域名除了使用nslookup之外,還可以使用dig命令來解析域名,dig命令可以得到更多的域名信息。

dig命令是一個用于詢問 DNS 域名服務(wù)器的靈活的工具。常見使用:

dig -x [ip_address]

更多關(guān)于dig命令,可以查找man手冊。

dig -x 8.8.8.8


輸出顯示指定 IP 地址的域名。

DNS反向解析實現(xiàn)

int main(int argc, char* argv[]) {int ret = 0;DNS_QUERY query;/* 只接受一個命令行參數(shù) */if (argc != 2 || (argc == 2 && argv[1][0] == '-')) {fprintf(stderr, "usage: %s [DOMAIN | IP]\n\n", argv[0]);return -1;}/* 從傳遞的域(或 IP)創(chuàng)建 DNS_QUERY */query = createQuery(argv[1]);/* DNS 查詢的十六進制轉(zhuǎn)儲 */printf("\nDNS Query (%i bytes):\n", query.len);if (query.len == 0)return -1;hexDump(query.bytes, query.len);ret = dnsLookup(&query);if (ret == -1){printf("dnsLookup fail!!!\n");return -1;}printf("\n");return 0; }

編譯運行

總結(jié)

反向 DNS 是從 IP 地址對域名的 DNS 查找。 常規(guī) DNS 請求從域名解析 IP 地址,而 rDNS 則相反,因此名稱相反。

域名是為了方便記憶而專門建立的一套地址轉(zhuǎn)換系統(tǒng),要訪問一臺互聯(lián)網(wǎng)上的服務(wù)器,最終還必須通過IP地址來實現(xiàn),域名解析就是將域名重新轉(zhuǎn)換為IP地址的過程。這一過程通過域名解析系統(tǒng)DNS來完成。

歡迎關(guān)注微信公眾號【程序猿編碼】,需要DNS反向源碼的添加本人微信號(c17865354792)

總結(jié)

以上是生活随笔為你收集整理的什么是DNS的正向解析与反向解析?代码实现?的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。