DNSにおける名前解決がTCPではなくUDPで行うように設計されている理由を解説する。
DNSにおける名前解決では、やりとりされるデータが小さいことから原則として問い合わせ・応答ともに1パケットのUDPで行えるように設計されている。これは、TCPに比べてUDPはプロトコルオーバーヘッド(注1)が小さいという利点があるためである。
TCPでは、実際にデータを送信するまでに、セッション確立のための処理を行い、送信したデータが受信されたかどうかのチェック、受信されなかった場合は再送要求を出すなど、通信の信頼性を確保するためにさまざまな処理を行っている。そのため、クライアントおよびサーバー上での処理に掛かるプロトコルオーバヘッドがUDPに比べて大きくなる。また、小さなデータをやりとりするときでも、TCPはこれらの一連の処理をしなければならず、非効率的であると言える。
これに対しUDPは、TCPのような通信の信頼性確保のための処理がなく、その分クライアントおよびサーバー上でのプロトコルオーバーヘッドが小さくなる。
このことから、DNSのような小さなデータをやりとりする場合はUDPを使用する方が効率的、かつ高速に動作する。なお、UDPにおける通信では、アプリケーション側(DNSでは、権威DNSサーバー、およびリゾルバー)で、状況に応じて再送要求を出すなどの処理が必要になる。
注1:プロトコルオーバーヘッドとは、通信におけるさまざまな処理を行うために費やすコストや時間のことを指す。
Copyright © ITmedia, Inc. All Rights Reserved.