一次DNS的遞歸查詢,首先會查詢根域名服務器(.),然后是com.,edu.,等頂級域,根域名服務器承載了全球ipv4的域名解析,他的數量肯定是越多越好,為什么一次查詢根域名服務器器只返回13個IP地 址呢?我們先看看DNS包結構,再分析DNS包傳輸的?一些限制;
1、DNS包傳輸限制
以太?的最?傳輸單元(MTU)是1500,就是說一次鏈路上傳輸的最?長度是1500,結合下圖,IP?部20字節,UDP?部8字節,DNS包的?度是否是1500減去28呢?
DNS主要使?用UDP協議,由于UDP協議是不不可靠的傳輸,沒有TCP協議的超時和重傳機制,所以UDP服務為了了避免分?片,都會對應?用做?個包長度的限制;


先來直觀的看?一下TCP協議傳輸?長度的協商機制:


TCP協議在三次握手的時候,SYN包?里面的MSS字段代表TCP協議的最?報文段?度,通常情況下,MSS=MTU-20(IP?部長度)-20(TCP首部長度),通信的兩端都通告?己能接收的最?大MSS,TCP協 議會選擇兩邊較小的MSS作為這條連接的MSS,TCP協議設計的這種機制可以避免鏈路發生分片;
DNS限制?度是512字節,那么為什么是512呢?查閱相關資料料得知,IP協議實現規定,要求主機最少能 夠收發576個字節的數據報。UDP的應用程序的限制?這個?度要小,?多應用限制在512字節。
2、DNS之UDP和TCP傳輸
DNS協議有UDP,TCP兩種,通常wireshark抓包看到的DNS請求通常都是UDP協議的,例如以下包:


看?一下DNS 響應包中的字段:


其中,Truncated:字段代表響應是否被截斷,當時Truncated:被置為1時,就意味著響應超過了了512字節,當前響應只返回了前512字節,這時DNS server會使?用TCP重發原來的請求,這樣顯然增加了了域 名解析時間。
當查詢根域的NS記錄時,為了了在?一個報?文中傳完響應,512字節只夠返回包含13個根域名服務器器的NS記錄和A記錄;所以雖然從?絡覆蓋角度考慮根域名服務器器的地址越多越好,實際上一次查詢根域名服 務器器只返回到13個IP地址。
版權聲明:本文內容由互聯網用戶自發貢獻,該文觀點僅代表作者本人。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。如發現本站有涉嫌抄襲侵權/違法違規的內容, 請發送郵件至 舉報,一經查實,本站將立刻刪除。