dns協議及幀格式

DNS(Domain Name System,域名系統),因特網上作爲域名和IP地址相互映射的一個分佈式數據庫,能夠使用戶更方便的訪問互聯網,而不用去記住能夠被機器直接讀取的IP數串。
DNS協議運行在UDP/TCP協議之上,使用端口號53。
RFC1035 : https://tools.ietf.org/html/rfc1035

協議格式:
這裏寫圖片描述

ID(2字節):response 報文和request報文 ID一致
Flags(2字節)這裏寫圖片描述
QR(1bit):查詢/響應的標誌位,1爲響應,0爲查詢
opcode(4bit):定義查詢或響應的類型(0爲標準的,1爲反向的,2爲服務器狀態請求,3-15保留值)
AA(1bit):授權回答的標誌位。該位在響應報文中有效,1表示域名服務器是權限服務器
TC(1bit):截斷標誌位。1表示響應已超過512字節並已被截斷
RD(1bit):被請求報文設置,該位爲1表示客戶端希望得到遞歸回答,應答時使用相同的值返回。
RA(1bit):支持遞歸, 這個比特位在應答中設置或取消,用來代表服務器是否支持遞歸查詢。
zero(3bit):保留字段。
rcode(4bit):返回碼,表示響應的差錯狀態,通常爲0和3,各取值含義如下:
0 無差錯
1 報文格式差錯(Format error)服務器不能理解的請求報文
2 服務器失敗(Server failure)因爲服務器的原因導致沒辦法處理的請求
3 名字錯誤(Name error) 只有對授權域名解析服務器有意義,指出解析的域名不存在
4 沒有實現(Not Implemented)域名服務器不支持的查詢類型
5 拒絕(Refused)服務器由於設置的策略據局給出應答
6 - 15 保留值
問題數(2字節):無符號16位整數表示報文請求段中的問題記錄數。
應答數(2字節):無符號16位整數表示報文回答段中的回答記錄數。
授權資源記錄數: 無符號16位整數表示報文授權段中的授權記錄數。
附加資源記錄數:無符號16位整數表示報文附加段中的附加記錄數。

查詢問題區域
這裏寫圖片描述

查詢名長度不定,舉個例子來說明更直觀些,查詢名爲gemini.tuc.noao.edu的話,查詢名字段如下:
這裏寫圖片描述
查詢類型(2字節):一般爲A,具體取值參考如下

  • A (1) 期望獲得查詢名的IP地址。
    CNAME (5) 規範名稱。
    PTR (12) 指針記錄。
    HINFO (13) 主機信息。
    MX (15) 郵件交換記錄。
    AXFR (252) 對區域轉換的請求。
    ANY (255) 對所有記錄的請求。

查詢類(2字節):表示查詢的協議類,

  • IN (1) 指互聯網地址。

回答區域
這裏寫圖片描述

如果回答區域有多條記錄(如一個域名查詢,返回多個ip),每條記錄均爲以上格式,貼一個wireshark 抓包的圖片:
這裏寫圖片描述

Answer區域,有兩條記錄,點開第一條記錄,分別記錄了
Name(域名)、Type(類型)、Class(類)、Time to live(生存時間)、Data length(資源數據長度), Address(資源數據)

本文參考鏈接:http://blog.chinaunix.net/uid-24875436-id-3088461.html

其他參考資料:
因特網的域名結構可參考:http://blog.csdn.net/yipiankongbai/article/details/25031461
dns 負載均衡可參考:http://blog.csdn.net/cywosp/article/details/38017027
dns基於TCP協議可參考:http://benbenxiongyuan.iteye.com/blog/1088085
EDNS可參考:http://blog.sina.com.cn/s/blog_5610604c0100p1qb.html
https://wenku.baidu.com/view/2184c6f465ce050877321344.html

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