1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

DNSはTCPとUDPをうまく使い分ける

Last updated at Posted at 2025-09-28

前提

DNSでは、UDPTCPの2つのプロトコルを使い分けています。

  • UDP: 通常のDNSクエリ(512バイト以下)
  • TCP: 応答データサイズが512バイトを超える場合、またはゾーン転送などの複雑なタスクで信頼性・同期が重視される場合

参考: この512バイト制限はRFC 1035で定められた標準仕様です。

image.png


TCPが使われる場合

ゾーン転送(Zone Transfer)

DNSサーバはIPアドレスとドメイン名を対応付けたデータベースを持っています。このデータベースは通常、特定のネットワーク内に2台以上用意されています。

片方が更新された場合、もう一方のデータベースも整合性が取れるように更新する必要があります。このようなDNSサーバ間のデータ同期がゾーン転送です。

  • 実際の環境では、もっと多くのサーバが存在する場合があります
  • 更新するデータが多くなると、同期の整合性確認がより重要になります
  • このような場合はスピードよりも安全性が重視されるため、TCPが利用されます

512バイトを超える応答

DNS応答が512バイトを超える場合、UDPでは送信できないため、自動的にTCPに切り替わります。


UDPが使われる場合

通常の名前解決

Webブラウザからのリクエストがあるような通信の場合、名前解決が行われます。

  • 名前解決はIPアドレスを求める処理で、ユーザが求める本筋の処理ではありません
  • このような場合は高速性が重視されます
  • 名前解決の通信は通常小規模(512バイト以下)です
  • 万が一クライアントがレスポンスを受信できなかった場合は、クライアント側からクエリが再送信されます

これらの理由から、通常の名前解決ではUDPが使われます。


参考資料

公式仕様

  • RFC 1035 - DNSの基本仕様
  • RFC 1123 - インターネットホストの要件
  • RFC 5966 - DNSにおけるTCPの実装要件

参考記事

技術書

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?