名前の解決は難しい業務です。最初から簡単に見えますが、それほど簡単ではないものがたくさんあります。したがって、実際には自分自身をロールするのではなく、既存の実装を使用することが最善のことです。そこには選択肢がたくさんあり、そのほとんどがかなり良いためです。あなたのローカルネームサーバ(ルータ)にリゾルバがある場合は、それが複雑さの面倒を見るので(キャッシュ自体を持つ)、それを使用してください。
自分で解決するつもりなら、ルートネームサーバーで要求を発するよりもはるかに多くのことを行う必要があります。あなたはランダムにリクエストを発し、レスポンスが得られなかった場合(別のものを試してください)に対処し、答えが返ってきたらそれがあなたが探している答えにならないようにする必要があります。 "www.example.com"のリクエストを送信すると、 "com"(NSレコード内)のすべてのネームサーバーを一覧表示して、次にそれらに問い合わせるよう指示します。それから、ask.comに行く必要があります。comには、example.comのネームサーバーに尋ねて、尋ねるように指示するメッセージが表示されます。一方、example.comのNSレコードは、実際には "dns1.example.net"のような別の場所にサーバー名を付けることを指しているかもしれません。つまり、例を得るためには、ルートから再起動する必要があります。ネットのネームサーバー。
とにかく、上記は実際には単純化されたものであり、信じられているとは限りません。だから、はい:ローカルルータやISPのリゾルバに尋ねるのではなく、それを自分で行う必要があります。アプリケーションに対してローカルで実行したい場合は、書き直すのではなく、主なC実装の1つを選択してください。あなたがたくさんのことを学びたいのでない限り(これはいつも良いことです)。
よろしくお願いいたします。私は多くを学びたいと思う:) –