title_parttitle_parttitle_part
静岡県浜松市であれこれソフトを開発している A.K.I Software のブログです。日々の開発日記やサーバー・セキュリティ関連の話題なども掲載。
<< 2024/04 >>123456789101112131415161718192021222324252627282930
《《《 ネットワーク機器の購入は Amazon で! 》》》
Powered by BLOM DNS Over TCP
小さくも大きくも閉じたりもしません
07/10/13 07:57 / 開発メモ

まず、前知識として

UDP は性質上、連続した複数のパケットを正しく送ることができません。正確には「送信は出来ますが、受信が保証されていません。」

TCP は輻輳制御と呼ばれる機能があり、回線が切断されたりアプリケーションレベルでエラーが発生しない限り正しく相手に送信(相手が受信)することが保証されています。

一般的には、DNS への通信は UDP/53 によって行われますが、UDPでの通信はパケットサイズに制限(512Byte前後)がある為、DNS サーバの設定上(*1) UDP/53 でデータを送信することが出来ない場合があります。

*1 DNS の情報は圧縮が行われ極力この 512byte に収まるように元から設計がされています。ただし設定上の問題で圧縮を行っても 512byte に収まらないことは当然あります。

このような場合に、DNS 通信を UDP/53 では無く TCP/53 で送受信を行う必要があります。これを DNS Over TCP と言います。(RFCにもあるはずですが番号がわかりません)

データの受信が保証される TCP で最初から通信をすればいいのでは?と思われますが、UDP と TCP の一番大きな違いとして、通信コストがあげられます。

TCP は、3ハンドシェイクと呼ばれる方法を使って回線を接続します。相手と3回やりとりをして通信を確立するのでこのように呼ばれています。

UDP は、TCP のようにきちんとしたハンドシェイクを行いません。受信側はポートを開けて待っており、送信側は「相手側のポートが開いている」前提で、いきなりパケットを送信することができます。

手間を掛けない分、UDP の方が通信コストが低い訳です。

さて、DNS に戻りますが、DNS は1秒間に数百、数千のアクセスを捌く必要があります。

例えば、akisoftware.jp にアクセスした場合、ブラウザはakisoftware.jp の情報を DNS へ問い合わせします。
akisoftware.jp の中に amazon.co.jp を取り込んだ部分があります、ブラウザはこの amazon.co.jp の情報も DNS へ問い合わせを行います。なにげなく Web サイトへアクセスしていますが、DNS への問い合わせは非常に頻繁に行われています。
もちろん、Web サイトだけでは無く、SMTP/POP3/FTP などドメイン名が関わるサービスは全て DNS に問い合わせを行っています。PMail Server で言えば、SMTPの中の機能のフィルタや、DNSBL、逆引き等全て DNS へ問い合わせを行うことにより確認をすることが出来ています。

DNS はこれほどアクセスが大量に発生するサービスですので、毎回 TCP で接続をして3ハンドで接続を確立して・・・を繰り返すとすぐにサーバーのリソースを食いつぶしてしまいます。
その為に普段は UDP を使って素早く処理を行っているのです。

以上の事から DNS Over TCP は UDP で処理ができない例外的なサイズ(*2)のデータを TCP に切り替えることで DNS から大きな情報を取得する為の仕組みになります。

*2 例外的と言うのは、本来 UDP だけで事足りるように設定を行うことが「推奨」されています。頻繁に問い合わせが必要なDNS情報を UDP では無く TCP で通信をしますと、問い合わせ元、問い合わせ先双方に負担をかけることになります。

また、DNS Over TCP は TCP で送受信する為に余分なデータを付けて送信する必要がある為、より負担が大きくなります。

[更新日付:2007/10/13 07:57:01]
トラックバックを見る(0)
Log Link [https://akisoftware.com/cgi-bin/blom.exe?akisoft+sl+9564f0f5a3c09a48d07e69cacdf7e04c8f86f358]
TB Link [https://akisoftware.com/cgi-bin/blom.exe?akisoft+tb+9564f0f5a3c09a48d07e69cacdf7e04c8f86f358]

記事へのコメント

コメントはありません

名前
コメントキー
 
コメントする時はキーを正確に入力して下さい
コメント
アドレスを含んだコメントはできません
© 2008-10 A.K.I Software all rights reserved.