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时。
 
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章