●環境変数を見てみよう | 詳しい説明 | こちらが得ることのできるあなたの情報を表示します。 |
●ソースを表示してみよう | 詳しい説明 | ソースを表示します。 |
●expnしてみよう | 詳しい説明 | 入力したメールアドレスが実在するかわかる…かも。 |
●ASCII アートしてみよう | 詳しい説明 | 画像を文字だけで表示します。 |
●nslookup してみよう | 詳しい説明 | FQDN と IP アドレスの相互変換を行います。 |
●traceroute してみよう | 詳しい説明 | ネットワークのつながりを調べます。 |
●whois してみよう | 詳しい説明 | NIC のデータベースから検索します。 |
⇒ 詳しい説明へ
こちらが得られるあなたに関する情報はくらいです。また、Proxyサーバを経由している場合でも、多くのProxyサーバは アクセス元がわかるように情報を追加しますので、本当のアクセス元が隠せるとは 思わない方がいいでしょう。
- IPアドレスとホスト名 (REMOTE_ADDR、REMOTE_HOST)
- User-Agent(OS、ブラウザなどの情報) (USER_AGENT)
- 直前にみていたページ (HTTP_REFERER)
それ以外の情報は、CGIを作る人が参考にしてください。perlなら 「$ENV{環境変数名}」でこれらの情報を取得できます。
ちなみにこれらの環境変数は大別して
があります。これらの環境変数を *実際に* セットしているのはWWWサーバです。
- ブラウザが勝手に送信するもの (USER_AGENT、HTTP_PRAGMA)
- WWWサーバが設定するもの (SERVER_ADMIN、HTTP_HOST、SCRIPT_NAME など)
- HTTPの原理的に、相手に必ず知られるもの(REMOTE_HOST、REMOTE_ADDR、REQUEST_METHOD)
先日、とあるリンクをクリックすると、Netscapeが新たなウィンドウを次々と 開き始めてしまい、一度Netscapeを終了させなければなりませんでした。 ダウンローダでそのURLの中身を見てみると<HTML> <BODY Onload="var i=0;while(1){(一部削除)++);}"> </BODY> </HTML>とだけ書いてありました。むかついたので、こういう腐ったページの対策として このCGIを作りました。怪しいURLがあったら、これを使って事前にチェックすると いいでしょう。
メールアドレスは「j5306050@educ.cs.gunma-u.ac.jp」のように、 「ユーザ名@ホスト名」という構成をしています。この「ホスト名」で指定されたホストには、 SMTP(Simple Mail Transfer Protocol)サーバが動いています。 このSMTPサーバは、そのホストに属する全ユーザのメールの 処理を行っています。
SMTPというのはSMTPサーバとやりとりするためのプロトコルです。 SMTPはRFCで定められているのですが、SMTPの中に 「EXPN」というコマンドがあります。 これは「EXPN ユーザ名」という書き方をすると、 SMTPサーバが指定されたユーザは存在するかどうかを 知らせてくれます。
しかし常に正しい答えが返ってくるとは限りません。
- SMTPサーバに接続できない。
- これはどうしようもないです。ホストが存在しないか、 特定のホスト以外からのコネクションを拒否する設定になっているか、 そのホストでSMTPサーバが動いていないのでしょう。 expn.cgiは適切なメッセージを表示して、接続できない理由を説明します。
- SMTPサーバがEXPNを許さない設定になっている。
- これはよく見かけます。SMTPサーバが「うちではEXPNできないよ」 と言ってくるので、expn.cgiはその旨表示します。
- 存在しないユーザ名を問い合わせても常に「存在する」と嘘をつく
- 例えばedu.cc.gunma-u.ac.jpがそうです。 もし本気で調べたいなら、いろんなメールアドレスをチェックして みましょう。例えば「user@foo.com」を調べた結果、「存在する」 という答えが返ってきたら、「Auser@foo.com」や「u1s2e3r4@foo.com」 などの、おそらく存在しないと思われるメールアドレスも調べてみてください。 それら全てに「存在する」という答えが返ってきたら、 おそらくそのSMTPサーバは「嘘つき」なのでしょう。
- 存在するユーザ名を問い合わせても常に「存在しない」と嘘をつく
- これは見たことはありませんが、こういうホストもあるのかもしれません。 ほとんどのホストに存在すると思われる、 「root@foo.com」「webmaster@foo.com」「postmaster@foo.com」 などを試してみてください。これら全てについて「存在しない」という 答えが返ってきたら、そのSMTPサーバは「嘘つき」である可能性があります。
上に、メールアドレスとは「ユーザ名@ホスト名」である、と書きましたが、 pingやnslookupで調べることができないホスト名があります。 「matsu@kiryu.co.jp」を例にあげましょう。と、kiryu.co.jpにアクセスすることはできません。 しかし、このメールアドレスは実在しますし、 実際にメールを送信することもできます。% ping piryu.co.jp ping: unknown host kiryu.co.jp % nslookup kiryu.co.jp *** No address (A) records available for kiryu.co.jpこれはMXレコードという仕組みを使っているのです。 MXはMail eXchangerの略で、MXレコードを使うと メールアドレスを短く記述したり、複数のホストに属するユーザの メールを一元管理することができます。
MXレコードの調べ方はnslookupを使います。
この「mail exchanger = ns.kiryu.co.jp」というのが MXレコードです。ns.kiryu.co.jpではSMTPサーバが 動いていますので、あとはns.kiryu.co.jpのSMTPサーバに 「expn matsu」を送るだけ、というわけです。% nslookup > set type=mx > kiryu.co.jp kiryu.co.jp preference = 10, mail exchanger = ns.kiryu.co.jpなお、似たような用途のものとして、
があります。
例えば を ASCII文字だけで構成するとo"o"o"ooo "oM"o"o"oo M M M"oM"oM " M M"oM"o"MoMo "ooo"oM"o"oM M"MoM"M "oo"M M"oMo"M"MoMMM" "o"oM Mo"oMM"MoMMM "M Mo"MoM"MMM"" """"MoMM""となります。やっていることはそして最終的にASCII形式のテキストを出力しています。 これらのプログラム群は、netpbmというUNIX用の画像コンバータに含まれています。
- giftopnmというプログラムでGIF形式の画像をPPM形式にコンバート
- ppmtopgmというプログラムでPPM形式の画像をPGM形式にコンバート
- pgmtopbmというプログラムでPGM形式の画像をPBM形式にコンバート
- pbmtoasciiというプログラムでPBM形式の画像をASCII形式にコンバート
あまり細かい画像だとうまくいきません。 また、明暗のはっきりしたものの方がうまく変換できます。
123.124.125.126 などという数字の列をIPアドレスといいます。 インターネットには多くのコンピュータが接続されていますが、 その中からコンピュータを特定するのにIPアドレスを使います。 例えば 133.8.2.34 というのはあなたが今アクセスしている群馬大の WWW サーバの IP アドレスです。IP アドレスがわかれば、世界中でただ1台のコンピュータを特定できます。(本当は、コンピュータと IP アドレスが 1対1に対応しているのではなく、インタフェースと IP アドレスが 1対1に対応しているのですが、それは置いときましょう)一方、www.cs.gunma-u.ac.jp のようなホスト名の書き方を、 ドメインネームといいます。 www.cs.gunma-u.ac.jp と 133.8.2.34 は同じコンピュータを指します。 群馬大学情報工学科のページは http://www.cs.gunma-u.ac.jp/ですが、 http://133.8.2.34/を見ても同じページが表示されるはずです。 つまり同じコンピュータを表すのに IP アドレス (133.8.2.34) とドメインネーム (www.cs.gunma-u.ac.jp) という 2つの方法があるわけです。
IP アドレスとドメインネームの相互変換をしてくれるのが、 nslookup というコマンドです。
IP アドレスとドメインネームの変換は、 DNS サーバにアクセスすることによって行われています。 上の nslookup に www.cs.gunma-u.ac.jp を指定するとServer: papa.cs.gunma-u.ac.jp Address: 133.8.2.3 Name: www.cs.gunma-u.ac.jp Address: 133.8.2.34と表示されます。上の Server: papa.cs.gunma-u.ac.jp というのは、 DNS サーバとして papa.cs.gunma-u.ac.jp を指定した、ということです。 つまり「papa.cs.gunma-u.ac.jp に問い合わせた結果、 www.cs.gunma-u.ac.jp と133.8.2.34 は等価である」ということを 表しています。同じコンピュータを特定するのに、IP アドレスとドメインネームという 2つの方法があるのには理由があります。コンピュータ側からすれば IP アドレスだけでも全く問題はありません。むしろ4バイトという固定長の データなので、IP アドレスの方が扱いやすいのです。
しかし人間からすれば IP アドレスはただの数字の羅列にしか見えません。 www.cs.gunma-u.ac.jp は覚えようと思えば覚えられるでしょうが、 133.8.2.34 はどうでしょう。覚えられますか? つまりドメインネームは人間様の都合によって存在しているのです。
「ならば、人間が我慢してIPアドレスを覚えれば、ドメインネームなしで インターネットは成り立つのではないか」それはそのとおりで、IPアドレスは存在するがドメインネームは付けられていない、 というコンピュータもたくさんあります。 例えば133.8.20.174というIPアドレスは存在しますが、ドメインネームはありません。 こういうIPアドレスがどこに属するのかはwhoisを使って調べてください。 しかしその逆の、ドメインネームはつけられているがIPアドレスはない、 というホストは存在しません。ネットワークに接続されている全ての ホストにはIPアドレスが付けられています。
IP アドレスについてもう少し詳しい説明をします。 IP アドレスは aaa.bbb.ccc.ddd という形式の 32ビット(=4バイト) の数字で表されます。 つまり aaa、bbb などの部分はそれぞれ 8ビット(=1バイト) で、0〜255 までの 256 種類の 数字を表すことができます。 ですから IP アドレスは 0.0.0.0 から 255.255.255.255 までの42億9496万7296個存在します。 しかし 0 や 255 は特殊な意味を持ちますし、 プライベートアドレスという登録せずに自由に使っていい IP アドレスもありますので、 実際に使用可能な IP アドレスはもっと少なくなります。IP アドレスはネットワークアドレスとホストアドレスという2つのアドレスの情報をまとめた 形になっています。 例えば 133.8.2.34 という IP アドレスのネットワークアドレス部分は 133.8、 ホストアドレス部分は 2.34 です。 また 15.255.152.4 という IP アドレスのネットワークアドレス部分は15、 ホストアドレス部分は255.152.4です。
この違いを見ていただけるとわかりますが、IP アドレスといってもいろいろと種類があります。
クラスA aaa.bbb.ccc.dddのうち、aaaがネットワークアドレス。bbb.ccc.dddがホストアドレス クラスB aaa.bbb.ccc.dddのうち、aaa.bbbがネットワークアドレス。ccc.dddがホストアドレス クラスC aaa.bbb.ccc.dddのうち、aaa.bbb.cccがネットワークアドレス。dddがホストアドレス クラス A の例が hp.com (ヒューレットパッカード) です。HP に割り当てられた IP アドレスは 15.0.0.0。ホストアドレスの数は 256*256*256=16,777,216。 つまり HP は自社のコンピュータを1677万台のコンピュータを インターネットに接続できるわけです (これまた本当に使用可能な IP アドレスはもっと少ないです。具体的には、 ホストアドレスが全て 0 の IP アドレスと、ホストアドレスが全て 255 の IP アドレスは特別です。例えば 15.0.0.0 はゲートウェイアドレス、 15.255.255.255 はブロードキャストアドレスです)。
一方 gunma-u.ac.jp はクラス B です。ネットワークアドレスは 133.8 で、 ホストアドレスの数は 256*256=65536。
クラス C はホストアドレス 256。
つまりネットワークの規模に応じてクラス分けをしているのです。 大企業は数千台、数万台をつなげられるようなクラス B を、 中小企業は数十台規模でいいのでクラス C を…という構想だったのですが、 ちょっと困ったことがおきました。IP アドレスが足りなくなったのです。
はっきりいっていくら HP といえども 1677 万の IP アドレスは必要ありませんし、 gunma-u.ac.jp も 65536 より少なくても運用できます。だからといって gunma-u.ac.jp をクラス C にすると 256 個の IP アドレスしか使えませんが、 これは少なすぎます。つまりクラス A、B、C の分け方がおおざっぱすぎて 多くの IP アドレスが無駄になってしまうのです。
そこで CIDR というシステムが導入されました。クラスという分け方をせずに、 「aaa.bbb.ccc.dddという IP アドレスのここからここまでがネットワークアドレス、 残りがホストアドレス」というふうにすることで、 効率よく IP アドレスを使おうとしたのです。
クラス A である hp.com を CIDR で表記すると 15.0.0.0/8 となります。 上位8ビット (=1バイト) はネットワークアドレスであり、残りの 24 ビットは ホストアドレスである、ということです。 クラス B は aaa.bbb.ccc.ddd/16 です。
インターネットとはたくさんのコンピュータをつなげたものです。 例えば群馬大は直接的にはSINETにしかつながっていませんが、 全世界との通信路が確保されています。 つまり蜘蛛の巣のように近くのホスト同士がつながっているので、 その蜘蛛の糸をたどっていけば目的地にたどり着くことができるのです。tracerouteはどういうルートを通って目的地にたどり着いたかを 調べるツールです。Windowsではtracertという同機能のコマンドがあります。
このページのtracerouteは任意の2地点間のルートを調べることはできません。 「www.cs.gunma-u.ac.jpと任意の地点間のルート」を調べるためのものです。
ネットワークでデータのやりとりをするにはパケットを送信しますが、 パケットには送信内容と共に宛先などの各種ヘッダが付いています。tracerouteは、ヘッダの中のTTLフィールドを利用して実現されています。 TTLとはTime To Liveの略で、そのパケットが 「ネットワークで生存できる時間」を表しています。 TTLは始めにパケットを生成したホストが決定します。
ゲートウェイ(ホスト)を1つ通過するたびに1引かれていき、TTLが 0になったら、その時点でパケットを破棄し、生成元のホストに 「うちでパケットを破棄しました」と知らせてくるわけです。
ということは、TTLが1のパケット、TTLが2のパケット、TTLが3のパケット、 TTLが4のパケット…と順に送っていくと、通過したゲートウェイから、 破棄した旨の連絡が届き、結果としてパケットが通過したルートがわかるわけです。
TTLは規格上は文字通り「生存可能時間」を表すことになっています。 1つのゲートウェイの通過に3秒かかったら、そのゲートウェイでは TTLを-3しなければなりません。しかし現実には秒数に関係なく TTLは-1されます。 規格通りに実装するとオーバーヘッドが大きくなるからでしょうか。
jpドメインの管理はJPNICが 行っています。主な管理内容はIPアドレスの割り当てです。 JPNICが管理している情報は誰でも見ることができます。 それがwhoisというシステムです。例えば gunma-u.ac.jp については このような情報が登録されています。
jpドメインに関しては、ほとんどの場合〜.〜.jpとなるようにすれば 大抵はうまくいきます。 例えばfoo.bar.co.jpというドメインネームなら、bar.co.jpを指定します。 abc.def.efg.ac.jpならefg.ac.jpを指定します。 例外はntt.jp、nttdata.jp、kek.jp、地域型ドメインです。地域型ドメインとは nagoya.jp、hokkaido.jpなどの「県名(地域名).jp」という形をしています。
例えばgunma-u.ac.jpはうまくいきますが、cs.gunma-u.ac.jpや www.cc.gunma-u.ac.jpはうまくいきません。これはJPNICは IPアドレスの割り当てのみを決めるからです。gunma-u.ac.jpの例を みると、
となっています。これは「133.8.〜.〜という IP アドレスは群馬大学のみに 貸し与える。さらにgunma-u.ac.jpの管理も群馬大学が行う」ということです。 つまり「133.8.以下の2バイトについては 群馬大学が管理する。また〜.gunma-u.ac.jpについても どんなサブドメインを付けるかは群馬大学が決める。 これらに JPNIC は関与しない」という意味でもあるのです。 ですから JPNIC のデータベースでわかるのは gunma-u.ac.jp までです。 cs.gunma-u.ac.jp も cc.gunma-u.ac.jp も si.gunma-u.ac.jp も tech.gunma-u.ac.jp も JPNIC が管理しているわけではありませんので whois で問い合わせても うまくいかないのです。s. [使用IPネットワーク] 133.8.0.0whoisでドメインネームを元に検索する方法は上に書いた通りです。 次にIPアドレスを元に検索する方法を説明します。
133.8.2.34 という IP アドレスはどの組織に属するかを調べてみましょう。 何も考えずに下の 2バイトを 0にしてください。つまり 133.8.0.0 を whois に かけてみてください。群馬大学についての情報が出てきました。
では次に203.183.23.1を調べてみます。同じように203.183.0.0で調べてみると 何も出てきません。そういう場合は一番下のバイトのみ0、つまり203.183.23.0 で調べてください。するとbig.or.jpのIPアドレスであることがわかります。
a.b.c.dというIPアドレスならまずはa.b.0.0、それがダメならa.b.c.0で 調べてみると大抵の場合わかります。しかし202.248.142.132のような場合もあります。 202.248.0.0とするとinfowebだとわかりますが、202.248.142.0で調べると inforyoma.or.jpとなっています。これはinfowebがIPの一部をinforyomaに 貸しているのかもしれません(よくわからない)。
どうしてもわからなかったら次の資料を参考にしてみてください(サイズが非常に大きいので注意)。
全IPのリスト(JPNIC)(1.8MB)
全ドメインのリスト(JPNIC)(2MB)
JPNICは日本のIPアドレスとドメインを管理しますが、 インターネットは全世界につながっているので、各国のNICを統括する組織が必要です。 それがINTERNICです。 INTERNICは「日本が使っていいIPアドレスはこれとこれ、ドメインはjpだよ」と決めます。 同じように「イギリスは…、フランスは…」と全ての国に関してのIPアドレス・ドメイン についての割り当てを決めます。ですからnetscape.comの情報についてはJPNICに問い合わせてもダメです。 JPドメインではないのですから当然ですね。この場合はサーバをINTERNICとして whoisしてください。ちなみにcom、org、net、eduなどは 米国のトップドメインではありません(米国はusというトップドメインを持っています)。 これらはインターナショナルなトップドメイン、 つまり国という概念とは関係ない性格のドメイン(world-wide generic domain)ということです。
もう少し細かく言えば、INTERNICがIPアドレスの一部をAPNIC(アジア地域を管理)に 割り当て、APNICがその一部をJPNICに割り当て、JPNICがその一部を各企業や学校に 割り当てている、ということになります。
最後に注意ですが、whoisは本来はネットワーク運用者のみが使うものです。 だから使ってはダメとまではいいませんが(自分も使ってるから)、 乱用しすぎてネットワークに負荷をかけるようなことだけは絶対に避けましょう。
$Id: index.html,v 1.13 2017/03/20 16:06:06 68user Exp $