DNS通常是基于UDP的,但當數據長度大于512字節的時候,為了保證傳輸質量,就會使用基于TCP的實現方式
從數據包的數量以及占有網絡資源的層面
使用基于UDP的DNS協議只要一個請求、一個應答就好了; 而使用基于TCP的DNS協議要三次握手、發送數據以及應答、四次揮手; 明顯基于TCP協議的DNS更浪費網絡資源!
從數據一致性層面
DNS數據包不是那種大數據包,所以使用UDP不需要考慮分包,如果丟包那么就是全部丟包,如果收到了數據,那就是收到了全部數據!所以只需要考慮丟包的情況,那就算是丟包了,重新請求一次就好了。而且DNS的報文允許填入序號字段,對于請求報文和其對應的應答報文,這個字段是相同的,通過它可以區分DNS應答是對應的哪個請求