「BIND」の版間の差分

提供: Wikinote
移動: 案内検索
(UDP と TCP)
(動作・仕様)
行3: 行3:
 
=== UDP と TCP ===
 
=== UDP と TCP ===
 
DNS の通信には、通常 UDP が用いられる。
 
DNS の通信には、通常 UDP が用いられる。
ただし、UDP データグラムが 512 バイト<ref>を超えるような通信 (応答) が必要となった場合、TCP による通信が行われる。
+
ただし、UDP パケットが 512 バイト
 +
<ref>UDP にてデータ分割が行われないことが保証される最大サイズ。
 +
UDP にてデータが分割されると、TCP と違ってデータの順序が保証されていないため、問題が生じる。
 +
ただし、近年の現実のネットワークでは、もっと大きなパケットでも分割せずに送信されるため、後述の EDNS0 が提案された。</ref>
 +
を超えるような通信 (応答) が必要となった場合、TCP による通信が行われる。
  
 
# クライアントは UDP にてクエリをサーバへ送信する。
 
# クライアントは UDP にてクエリをサーバへ送信する。
行14: 行18:
 
==== EDNS0 ====
 
==== EDNS0 ====
 
BIND 8.3 以降、BIND 9 以降は [http://www.nic.ad.jp/ja/translation/rfc/2671.html EDNS0] (Extension Mechanisms for DNS version 0) に対応している。
 
BIND 8.3 以降、BIND 9 以降は [http://www.nic.ad.jp/ja/translation/rfc/2671.html EDNS0] (Extension Mechanisms for DNS version 0) に対応している。
 +
 +
== 脚注 ==
 +
<references />

2009年5月10日 (日) 14:23時点における版

動作・仕様

UDP と TCP

DNS の通信には、通常 UDP が用いられる。 ただし、UDP パケットが 512 バイト [1] を超えるような通信 (応答) が必要となった場合、TCP による通信が行われる。

  1. クライアントは UDP にてクエリをサーバへ送信する。
  2. (512 バイトを超える場合) サーバは UDP にて、ヘッダ部の TC ビットを 1 にセットした回答をクライアントへ送信する。
  3. クライアントは、TCP にてサーバへ接続し、クエリを送信する。
  4. サーバは、回答をクライアントへ送信する。

したがって、iptables などでパケットをフィルタリングしている場合、UDP/TCP ともに 53 番ポートを通す必要がある。

EDNS0

BIND 8.3 以降、BIND 9 以降は EDNS0 (Extension Mechanisms for DNS version 0) に対応している。

脚注

  1. UDP にてデータ分割が行われないことが保証される最大サイズ。 UDP にてデータが分割されると、TCP と違ってデータの順序が保証されていないため、問題が生じる。 ただし、近年の現実のネットワークでは、もっと大きなパケットでも分割せずに送信されるため、後述の EDNS0 が提案された。