SHOEISHA iD

※旧SEメンバーシップ会員の方は、同じ登録情報(メールアドレス&パスワード)でログインいただけます

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

仮想ネットワークの実装で学ぶTCP/IP

仮想ネットワーク実装でTCP/IPを学ぼう(5)
― アプリケーション層の勘所

仮想ネットワーク実装でTCP/IPを学ぼう(5)


  • X ポスト
  • このエントリーをはてなブックマークに追加

DNSで使用するトランスポート層のプロトコル

 DNSはトランスポート層のプロトコルであるTCPとUDPの内どちらでも使用できますが、問い合わせはオーバーヘッドが少ないことが好まれますので、一般的にはUDPが使用されています。

 ただし、UDPだけが使用されているのではありません。他の項で少し触れましたが、ネームサーバは障害時にそなえて、複数用意できます。その時、セカンダリサーバにプライマリサーバが管理している情報を転送しなくてはなりません。これを「ゾーン転送」と呼びます。ゾーン転送時には、信頼性が求められますので、信頼性が高いTCPが使用されます。また、問い合わせ結果として512バイトを超える応答データ返された場合、リゾルバは一般的にはTCPを使用して要求を再発行します。

 これから、DNSのデータ通信を解説するに先だってUDPを使用した通信を、サンプルプロジェクト「UdpTest」を用いて解説します。記事に添付されているサンプルコードをダウンロードして、実行してみてください(C#版とVB.NET版を用意しています)。

 前回紹介したサンプルプロジェクトTcpTestの実行結果と見比べると、UDPがオーバーヘッドがほとんどないプロトコルであることが分かります。 ただし、信頼性を確保しようとすれば、プログラマ自身が処理をしなくてはなりません。DNSの問い合わせはUDPを使用しているので、パフォーマンスは高いものの信頼性が低く、パケットがロストする危険があることを頭の隅に置いてください。

 これで、DNSでの通信方法を理解する下地ができましたので、次項でDNSの問い合わせ処理について解説します。

DNSの問い合わせ処理

 DNSでホスト名のIPアドレスを問い合わせる様をプログラムで表現しましたので、まずはサンプルプロジェクトの「QueryTest」を実行してみてください。

 DNSのIPアドレス問い合わせの様子が窺えます。ただし、これはあくまでも解説のための例であり、実際とは異なる点に注意してください。これから、このプログラムを基にDNSのIPアドレス問い合わせについて解説していきます。

次のページ
おわり

この記事は参考になりましたか?

  • X ポスト
  • このエントリーをはてなブックマークに追加
仮想ネットワークの実装で学ぶTCP/IP連載記事一覧

もっと読む

この記事の著者

インドリ(インドリ)

分析・設計・実装なんでもありのフリーエンジニア。ブログ「無差別に技術をついばむ鳥(http://indori.blog32.fc2.com/)」の作者です。アドバイザーをしたり、システム開発したり、情報処理技術を研究したりと色々しています。座右の銘は温故知新で、新旧関係なく必要だと考えたものは全て学...

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

この記事は参考になりましたか?

この記事をシェア

  • X ポスト
  • このエントリーをはてなブックマークに追加
CodeZine(コードジン)
https://codezine.jp/article/detail/5034 2010/04/27 12:07

おすすめ

アクセスランキング

アクセスランキング

イベント

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

新規会員登録無料のご案内

  • ・全ての過去記事が閲覧できます
  • ・会員限定メルマガを受信できます

メールバックナンバー

アクセスランキング

アクセスランキング