DNS服務的下層協議用的是TCP or UDP?

DNS可以跑在TCP或UDP的53端口上,但一般都是在UDP上,那麼什麼時候DNS需要TCP呢?


DNS報文首部中的標誌字段如下:[QR][opcode][AA][TC][RD][RA][(zone)][rcode]

當TC(Truncation)字段爲1時,表示應答總長度超過512字節,因爲DNS在UDP模式下報文長度被限制在512個字節以下,這時只能返回前512個字節,然後DNS 客戶端會使用TCP重發原來的查詢請求。因爲TCP能將用戶的數據流分爲一些報文段,因此TCP就能用多個報文段去傳超過512字節的數據流或是任意長度的數據流。

 
那麼什麼情況下DNS的迴應報文會超過512bytes呢? 雖然不常見,但也有幾種情況,比如當返回的一個域名對應幾十條A記錄時;或者Master DNS服務器需要做outgoing的zone transfer時。
 
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章