可能重复:
名称服务器是否必须通过TCP回答查询?
我知道DNS使用UDP的大部分查询,但在什么情况下,它会使用TCP代替?
当请求或响应的大小大于单个数据包(例如具有多个logging或多个IPv6响应或大多数DNSSEC响应的响应)时,DNS经过TCP。
最大大小最初是512字节,但有一个DNS协议的扩展,允许客户端指出他们可以处理高达4096字节的UDP响应。
DNSSEC响应通常大于最大UDP大小。
传输请求通常大于最大UDP大小,因此也将通过TCP完成。
传输控制协议(TCP)在响应数据大小超过512字节时使用,或者用于区域传输等任务。
http://en.wikipedia.org/wiki/Domain_Name_System#Protocol_transport