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を使うなというように読める解釈は変だ。
- DNSSECが負荷にならないとでも言いたいのだろうか。
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をつかえと言わないのだろうか。
- TCP はすでにMUSTになっている。RFC1123のころとは状況も変わっている。