- - PR -
ブラウザ+名前解決=OK、コマンドプロンプト+名前解決=NG??
投稿者 | 投稿内容 | ||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
|
投稿日時: 2003-08-06 22:14
pingの応答がないだけなのか、それとも名前解決が失敗しているのかは、メッセージから判断することができます。
無応答の場合はこんな感じ: C:\>ping -n 1 www.microsoft.com Pinging www.microsoft.akadns.net [207.46.134.190] with 32 bytes of data: Request timed out. 名前解決が失敗している場合はこんな感じ: C:\>ping -n 1 www.maccrosoft.com Ping request could not find host www.maccrosoft.com. Please check the name and try again. これはWindowXPですが、Windows 2000だとこんな感じ: C:\>ping -n 1 www.maccrosoft.com Unknown host www.maccrosoft.com. 参考TIPS: http://www.atmarkit.co.jp/fwin2k/win2ktips/101pingcommand/101pingcommand.html | ||||||||||||
|
投稿日時: 2003-08-06 23:51
なぜ、メッセージから判断できるのでしょうか? ご教示いただきました資料の「pingの引数におけるIPアドレスとホスト名」の 節に以下の内容があります。
# 歌うたい様のご質問からは、ブラウザでのネットサーフィンは問題なくできていたと # 判断しましたので、名前解決そのものは恐らく問題ないのでは?と考えました。 ![]() [ メッセージ編集済み 編集者: Ken-Lab 編集日時 2003-08-07 00:12 ] | ||||||||||||
|
投稿日時: 2003-08-07 00:47
ええーっと、pingはだいたい次のようにして動作するプログラムです。 1.引数として与えられた名前文字列から、名前解決をして、IPを求めます。 2.そのIPアドレスにパケットを送ります。 3.応答を受け取って表示します。 1.で失敗すると、すぐに「Unknown ....」と表示して終了します。 成功すれば、「pinging ...[IPアドレス]...」と表示します。 2.で失敗すると、パケットが送れません、という類のエラーメッセージを出力します。 3.で失敗すると、「Request timed out.」と表示します。 成功すれば、「Reply from ...」と表示します。 ですので、「Unknown ...」となるなら、それは最初の「名前解決の失敗」であると判断できます。 なぜ「名前解決が失敗するのか」については、いろいろな原因が考えられますが(それがくだんのTIPS中に書いてあります)、いずれにしろ、それはすべて「名前解決の失敗」ということで一まとめにできると思います。
特定の名前やドメインについてだけ名前解決が失敗するとか、一時的に名前解決がおかしくなる、などというのはそう珍しいことではありません。 いずれにしろ、このような問題は、パケットをキャプチャして覗けば、すぐに分かるんですけど、それができないのがもどかしいです(^^;;)。 | ||||||||||||
|
投稿日時: 2003-08-07 04:09
うーん。。
ブラウザではOK。pingではダメ。 で、それは名前の解決に問題があるのではないだろうか? と思われたのなら、それをpingの応答メッセージでどうこう、 っていうのがそもそもナンセンスな気がしますが。 (名前の解決は、pingが行うのではなく、その引数がドメイン名だった場合に、リゾルバライブラリに渡されるわけですから) 純粋に名前の解決が出来るのか、をまず確認しては? www.yahoo.co.jpのような、メジャーなホストなら、そこいらの キャッシュサーバに問い合わせればすぐAレコードが引けるでしょう。 そうしたら、そのIPにpingしてみれば、それで問題がおおむね絞り込まれる と思いますが。 それと。 どなたか、pingを実行時に名前の解決が伴う場合、それもICMPを通して行うようなこと をおっしゃってますが、それは誤りです。 名前の解決は、言うまでもなく、DNSを使用します(Windowsの場合、WINS等、NETBIOS名の解決となる場合もあります) DNSサーバに問い合わせて名前が解決されるわけですから、それをICMPを通じて行うことはできません。DNSはアプリケーションプロトコルですから。 ICMPを使用した経路、相手ホストへの到達性の確認と、名前の解決の問題をキッチリ分けてお考えになるといいかと思います。 [ メッセージ編集済み 編集者: cu 編集日時 2003-08-07 04:19 ] [ メッセージ編集済み 編集者: cu 編集日時 2003-08-07 04:21 ] | ||||||||||||
|
投稿日時: 2003-08-07 08:07
判断材料の一つにはなると思いますよ。 確かにそこで全て判断するものでも無いと思いますが。
キャッシュサーバに問い合わせるのですか?DNSサーバでなく? 少なくとも"Unknown host"のメッセージが帰ってきている以上、pingを打ったときにはDNSが正常に引けなかったことは事実でしょう。 どなたかが、ブラウザのProxy設定について触れていましたがまず調べるべきはココの様に感じます。 スレッドのタイトルにある"ブラウザ+名前解決=OK "の前提が間違いないのか調べ、その上で調べない限り、スレッドタイトルにある疑問は解決しないかも知れませんから。 外部接続をProxyを介してのみ許可しているような環境である場合、DNSサーバが内部のサーバの名前解決しか行えない様になっていても不思議ではないですね。私の知っている環境でもありますよ。そういうトコ。
既に指摘されていますが、名前解決はTCP/UDPのPort:53であるDNS(Domain)が使用されますので、ICMPで名前解決は行われません。 って言うか第3層だし。 <ICMP | ||||||||||||
|
投稿日時: 2003-08-07 09:48
おはようございます。
各識者の方々よりご指摘されていますが、明確にアイタタタ!な点がありましたので、 訂正させていただきます。 ○ICMPの階層は第3層(ネットワーク層)に位置づけされ、ARP,IPと同一です。 TCPは前途の通り第4階層です。 ○DNSは最上階層でポート53を使っています。 従ってICMPそのものが名前解決するわけではないです。しかし自分はWin2KのPingの名前解決に おいてはその下層で使われているプロトコルがICMPである、と誤解しておりました。 話は若干ズレますが、ひとつ勉強させていただきたい点がありまして
このような環境下にある場合、ブラウザから外部ネットワークに対しての名前解決は どのようにして行われるのでしょうか? # この場合、Pingで名前解決しようとした場合、何か戻りそうな気がするのですが・・・? [ メッセージ編集済み 編集者: Ken-Lab 編集日時 2003-08-07 09:49 ] [ メッセージ編集済み 編集者: Ken-Lab 編集日時 2003-08-07 10:02 ] | ||||||||||||
|
投稿日時: 2003-08-07 21:16
確認はしてませんが、Proxyが名前解決からコンテンツ取得まで行っているのだと思います。 | ||||||||||||
|
投稿日時: 2003-08-07 21:32
あまり詳しいわけではないのですが。
HTTPのプロトコルにはURIというフィールドがあり、この中にURLを含む情報を入れることにより、目的の情報を得る事ができます。 バーチャルドメインが可能なのはこの為です。 さて、本題ですがBrowserにProxyサーバが設定されている場合、Proxyサーバに対し、取得したいURLの情報を含むURIを指定し取得要求を行います。この為、クライアントの端末はWebサーバと直接やり取りする必要も無く、IPアドレスを知っている必要も無い(URLを知っていれば良い)為、名前解決も行いません。 # 行うとしたら、Proxy設定で除外したサーバとProxyサーバに対してだけです;-P |