TCP/IP 協議之 DNS

1、DNS協議的公用端口是53,常用UDP封裝(也可以用TCP封裝的)。

DNS(域名系統)是一種分佈式數據庫(IP -- 名字)

2、一些概念:

(1)、DNS的域名的域名最多有63個字符,不分大小寫,比如:sun.tuc.noao.edu 最右邊的是頂級(一級)域名,往左依次是二級域名,三級域名...。最多可以有128級域名(0-127;其中0級域名爲空)

(2)、頂級域有三個組成部分,一是組織域(普通域),常用的有7com,edu,org,int,net,gov,mil(其中gov,mil爲美國專用),二是國家域(比如:cn等),三是反向域名:arpa,它底下只有一個二級域名in-addr(用來做從名字到IP的轉換)

(3)、以點‘.’結尾的域名稱爲FQDN(絕對域名)。(一般說,不完整的域名有兩段(以上),默認爲完整的)

(4)、主從服務器,主服務器負責維護映射,而從服務器不創建更新文件,只是定期的把另一臺服務器(可主可從)中信息拷過來備份而已(這個拷貝過程叫做區域傳輸),目的是爲了創建數據的備份,如果某部服務器壞了,還有另外的嘛。

3、報文格式:首部12字節加上可變數據部分

(1)、首部,注意的是標示字段(2B),應用程序的詢問和應答通過這個來匹配;標誌字段(2B)中的QR位,0表示查詢,1表示應答;AA位,由應答服務器設置,當爲1時表示該服務器是該域名的授權服務器;TC位,當DNS使用UDP封裝,而數據超過512B時,就截斷後面的部分,並將該位置1;RD位,當置1時,客戶希望得到遞歸應答;RA位,當DNS應答包回來,名字服務器置1時,表示遞歸可用;0

(2)、查詢報文中的問題部分:每個問題格式如下:查詢名(4B),查詢類型(2B),查詢類(2B)。問題的總數記在首部的問題數字段。

其中,查詢名的格式如下:(以
tuc.noao.edu爲例):3tuc4noao3edu0

查詢類型常用的如下:A(查IP),PTR(查指針記錄),NS(表示該域名服務器是要求名字的授權服務器)

查詢類通常是:IN(0x01 表示互聯網地址)

(3)、應答部分格式如下:域名(4B),類型名(2B),類(2B),生存時間(4B),數據長度(2B),數據(由長度值給定)

其中,域名,類型名和類字段照查詢報文填充;
生存時間以秒爲單位,表示客戶程序記住該記錄的時間(這段時間可以放在高速緩存內)。
數據:(分3類)
a、IP地址(類型爲A時)
b、域名(用在PTR類型中返回結果)
c、偏移指針(長度爲2B,頭2bit爲11),表示數據放在DNS數據的頭部的距離(一般爲12,因爲DNS的首部佔12字節,再下來就是DNS域名),這個叫做壓縮

4、遞歸解析和迭代解析

遞歸解析就是:服務器A如果知道該域名對應的IP地址,則返回結果;如果不知道,就向別的服務器B發送請求,如此類推到結果出來爲止。

迭代解析就是:如A知道,返回結果;如果不知道,則返回別的域名服務器B的地址給客戶,讓客戶去訪問B,如此類推。


5、指針查詢(已知IP查域名)

已知IP,在問題部分的域名字段要這樣做(以220.181.6.19爲例),域名是 19.6.181.220.in-addr.arpa (就是頂級域arpa的用途)。發送類型爲PTR的查詢,返回的結果的數據部分就是所求。

6、linux下,DNS服務器的地址在這個文件中:/etc/resolv.conf 文件中。應用程序通過本地的名字解釋器進行IP與域名的呼喚,而名字解釋器進程則通過名字服務器打交道。(用host程序可以運行域名解析器進程);windows下,用nslookup程序運行域名解析器進程

7、注意的一些東西:

高速緩存,當服務器收到另外一個服務器的應答時,在將應答發回給客戶的同時,拷貝一份到高速緩存,同時標記爲未授權的;生存時間字段就是針對這個來用的,就是有效期只是生存時間裏面的秒數;

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章