Linuxやその他の* nixプラットフォームで/etc/hostsエントリがどのように一致するのか疑問に思います(違いがある場合)。
特に、「ゲーム時間」がアイテムの数に応じて直接拡張されることを確認することに興味があります。
最初の一致が見つかった場合、「一致」は停止しますか?それとも、一致するものが見つかった場合でもすべてのものを使用しますか?
非常にありがとう
答え1
Linuxでは、/etc/hosts一致するまで解析アイテムを解決します。これもどのように処理されますか?1983年にリリースされた4.3 BSDは、現代のUnix IPスタックの最初の汎用バージョンでした。
BSD 4.3 以降、インターネットに接続されたホスト全体のリストが中央ネットワークインフォメーションセンターに保存され、番号が付けられていることを覚えておくことが重要です。約325人に過ぎない。接続されたホストは、NIC上のインターネット上のすべてのホストのリストを検索し、数百行の線形検索で十分です。この頃、IETFはこれが拡張性が悪いことに気づきました。提案されたドメイン名システム。その後、/etc/hostsに何百行以上あれば「間違っているもの」です。
また、/ etc / hostsはlibc(ユーザースペースライブラリ)によって処理されます。カーネルは、以下を除いて何も存在しないことを知りません。sockaddr
。したがって、この回答は/ etc / hosts処理にのみ適用され、特にキャッシュ動作と時間の複雑さが大きく異なる一般的な名前解決システムを無視します。
答え2
/etc/hosts マッチングはどのように機能しますか?
情報を読むかどうかによって決まります/etc/nsswitch.conf
。/etc/host.conf
/etc/hosts
@mswが言ったように、nsswitch.confを読み込み、Tagを読み取るlibc(ユーザースペースライブラリ)によって処理されます。ホスト:filedns」、次に文書読書を意味/etc/hosts
します。ドメインネームサーバー方法/etc/resolve.conf
今クリックすると仮定しましょう。http://www.google.comFirefoxでは
- その後、Firefoxはまずローカルリゾルバ(libresolve.so)の助けを借りてgoogle.comをチェックし、
- 優先順位を最初に確認してください文書そしてドメインネームサーバー、
- デフォルトでは、「/etc/hosts」ファイルを検索します。
- google.com が一致しない場合は、「/etc/resolv.conf」を参照してください。このファイルで
nameserver
設定されていない場合は、タグを確認し、リゾルバはポート 53 の localhost に DNS クエリを送信します。 - ネームサーバーが仮定を定義すると、クエリは
nameserver 8.8.8.8
次のように送信されます。dig google.com @8.8.8.8
。もちろん、パブリックDNSからクエリへの答えを得ることができます。
編集1ユーザーは「HOSTALIASES」変数を使用して自分のホストファイルを維持することもできます。
前任者。
echo "fb www.fb.com" >> ~/my_hosts
echo "export HOSTALIASES=~/my_hosts" >> ~/.bashrc
source ~/.bashrc
答え3
必要な 2 つの機能はgethostbyname()
とgethostbyaddr()
で説明されています。http://linux.die.net/man/3/gethostbynameまだ利用可能なものがある場合は、試してnslookup
みてください。nslookup www.google.com
ある名前によって、別のIPアドレスが表示されることがあります。他の方法も正常です。同じIPアドレスが異なるホスト名を指すことがあります。これを確認するには、/etc/hostsにIPアドレスとホスト名を追加し、上記の機能を使用して確認します。