所查詢的網址為 login.live.com 。
首先是對查詢報文的分析
以太網幀頭部、IP報頭頭部和UDP頭部略去,從ID字段開始。
ID字段:ID字段就是對報文的一個編號,沒有太多的含義。
標識字段:格式如下,下方數字表示bit個數,
對於本報文來說就是0x0100,即 0 0000 0 0 1 0 000 0000 .
QR:0表示查詢報文,1表示響應報文
Opcode:通常值為0(標准查詢),其他值為1(反向查詢)和2(服務器狀態請求)
AA:表示授權回答(authoritative answer)
TC:表示可截斷的(truncated)
RD:表示期望遞歸
RA:表示可用遞歸
隨后3bit為保留字段, 必須為0
Rcode:返回碼,通常為0(沒有差錯)和3(名字差錯)
問題數:此例中為1
回復數:此例中為0,因為是查詢報文,自然沒有回復。
權威記錄個數:域名DNS分兩種,一種是權威域名服務器,域名注冊商的服務器都為權威域名服務器;另一種就是緩存DNS服務器,比如各地ISP上網設置的DNS服務器,它的作用主要是把域名解析結果緩存到本地,方便你查詢。還是因為是查詢報文,本例中也為0.
額外記錄個數:一些額外的記錄,具體是什么,我也不太清楚。本例為0,原因同上。
QNAME 地址字段:要查詢的網址。地址是變長的字符串,格式為第一個字節為長度,后跟字符,以0結尾。
查詢類型:此外為0001,表示為A類查詢。
協議組類型:0001表示網絡類型為Internet。
然后是對回復報文的分析
ID字段、標識字段、問題數、回復數、權威記錄個數、額外記錄個數等同上。
回復記錄:此處共回復了9個記錄,由回復數記錄可以看出來。地址字段 0xC0 開頭表示下一個字節表示在本報文中的偏移量。這也是為了消除冗余,減小報文長度。第一個回復中類型為 0x0005 ,表示類型為CNAME,相當於用子域名來代替ip地址。這樣做的優點是如果ip地址變化,只需要改動子域名的解析,而不需要逐一改變ip地址解析。回復的域名為 login.live.com.nsatc.net ,后面8個記錄都是這個域名的IP地址(一個域名對應幾個IP地址對這樣的大網站來說很平常)。
網絡類型同查詢報文中的一樣都是Internet。
TTL:Time To Live,生存時間,域名DNS的TTL值表示各地的DNS緩存服務器多久去你的權威域名解析服務器(NS)獲取一次你域名的解析IP。單位是分鍾。
Data Length:數據長度,表示本記錄從下個字節起還有多少字節。
返回數據:這就是我們想要的。一般為IP地址,但本記錄類型為CNAME,所以返回了一個域名,下面8個都是IP地址。
權威記錄:權威記錄、查詢、回答的格式都是一樣的。4條記錄的類型都是 0x0002 (表示類型為NS,對應於查詢中的A類型)。NS表示 Name Server,權威記錄回復的應該是本區域的權威域名服務器的域名(我也不是很確定)。
額外記錄:本例中回復的是權威域名服務器的IP地址。