DNS/RFC/RFC5966について、ここに記述してください。

http://tools.ietf.org/html/rfc5966

http://tools.ietf.org/html/rfc1123

1. 参考

http://jprs.jp/tech/notice/2011-03-03-inappropriate-handling-for-long-dns-packet.html

JPRSでの解釈:

そのうち、TCPの使用は従来からあるDNSの基本機能の一つであり、
インターネットに接続するホストが満たすべき要件を定めたRFC 1123では、
DNSにおけるTCPの使用を「サポートすべき(SHOULD support)」と定めています (*1)。
そして、TCPを使用することでDNSでは65,535バイトまでのDNS応答を取り扱うことができ、
これがDNSの仕様においてサポートされるDNS応答の最大サイズとなります。

(*1)RFC 1123の内容を一部更新するRFC 5966で「サポートしなければならない(MUST support)」に変更されています。

続いて、以下のように書いてあるが、5966ではどうなのか。

ただし、DNSの仕様では負荷軽減の観点から、通信時にはUDPを最初に使用し、
  TCPの使用は応答の大きさが512バイトを超え、応答パケットの切り詰めが発
  生した場合のみとすることを定めています。そのため、DNS応答の大きさが
  512バイトを超えない場合、ゾーン転送以外の通常のDNS運用でTCPが使用さ
  れることはありません。

必須とされたTCP/DNSを使うなというように読める解釈は変だ。

RFC 1123 6.1.3.2 Transport Protocols

            DNS resolvers and recursive servers MUST support UDP, and
            SHOULD support TCP, for sending (non-zone-transfer) queries.
            Specifically, a DNS resolver or server that is sending a
            non-zone-transfer query MUST send a UDP query first.  If the
            Answer section of the response is truncated and if the
            requester supports TCP, it SHOULD try the query again using
            TCP.

512バイトを越えた返事が来なければ、TCPを使う必要はないが、使うなとは書かれていない。

2. 毒盛対策が重要

DNSSECを提案するほど重要な毒盛対策なのに、なぜTCPをつかえと言わないのだろうか。