DNSがUDPを使うのはなぜですか?DNS Tips

DNSにおける名前解決がTCPではなくUDPで行うように設計されている理由を解説する。

» 2015年08月27日 05時00分 公開

 DNSにおける名前解決では、やりとりされるデータが小さいことから原則として問い合わせ・応答ともに1パケットのUDPで行えるように設計されている。これは、TCPに比べてUDPはプロトコルオーバーヘッド(注1)が小さいという利点があるためである。

 TCPでは、実際にデータを送信するまでに、セッション確立のための処理を行い、送信したデータが受信されたかどうかのチェック、受信されなかった場合は再送要求を出すなど、通信の信頼性を確保するためにさまざまな処理を行っている。そのため、クライアントおよびサーバー上での処理に掛かるプロトコルオーバヘッドがUDPに比べて大きくなる。また、小さなデータをやりとりするときでも、TCPはこれらの一連の処理をしなければならず、非効率的であると言える。

 これに対しUDPは、TCPのような通信の信頼性確保のための処理がなく、その分クライアントおよびサーバー上でのプロトコルオーバーヘッドが小さくなる。

 このことから、DNSのような小さなデータをやりとりする場合はUDPを使用する方が効率的、かつ高速に動作する。なお、UDPにおける通信では、アプリケーション側(DNSでは、権威DNSサーバー、およびリゾルバー)で、状況に応じて再送要求を出すなどの処理が必要になる。

注1:プロトコルオーバーヘッドとは、通信におけるさまざまな処理を行うために費やすコストや時間のことを指す。


松浦 孝康(まつうら たかやす)

所属:株式会社日本レジストリサービス(JPRS) システム部

2000年 JPNIC入社、2001年JPRS転籍。レジストリシステムの開発、JP DNSの運用、Anycastの導入に従事。DNSOPS.JP事務局、新gTLD大量導入に伴うリスク検討・対策提言専門家チーム。


Copyright © ITmedia, Inc. All Rights Reserved.

RSSについて

アイティメディアIDについて

メールマガジン登録

@ITのメールマガジンは、 もちろん、すべて無料です。ぜひメールマガジンをご購読ください。