私はすべてのローカルアプリケーションプログラミング(C++アプリケーションなど)に携わってきました。でも、今はウェブの世界に足を踏み入れようとしています。私はEclipse(Mars)とApache Tomcat 8.0.23を使用して、サーバー側プログラミング(JSP、PHPなど)を実験および学習できる環境をセットアップしてみました。入力したときにすべてが設定されるようにしました
localhost:8080
私のブラウザーでは、正しいTomcatページにリダイレクトされます。これはおそらく非常に単純なことですが、ここで私の心を吹き飛ばしているようなものです。
Localhostと入力すると、正確にはどうなりますか?
インターネットでない場合、Tomcatページはどこから来ますか?データは、Tomcatのおかげで私のPCにあるサーバーから送られてくると確信していますが、ブラウザーはlocalhost:8080からのみ情報を見つける場所をどのようにして知りましたか?
私は8080がポートか何かだと思いますが、それも本当にわかりません。それがポートである場合、それが何を意味するのかよくわかりません。
基本的に、サーバー側のWeb開発について私が知っている(私が思うに...)は、純粋なhtml/css Web開発では、すべてがダウンロードされるとすべての作業がローカルで行われますが、サーバーでは、一部の作業(一部の区切り文字の内側)がサーバーは、HTMLに別の形式で注入され(C++の関数にデータを送信したり、別のデータが返されたりするのと同じように)、ページにローカルで再度描画されます。
Webブラウザにオペレーティングシステムにホスト名localhost
の解決を要求させる。オペレーティングシステムは通常、ホスト名localhost
をループバックインターフェイスである127.0.0.1
に解決します。
ホスト名またはIPアドレスの後に:
と:8080
のようなポート番号が続くと、ブラウザはデフォルトのWebサーバーポート80ではなく、TCPポートに接続するように指示されます。 。
http://localhost:80/
、http://localhost/
、http://127.0.0.1/:80
、http://127.0.0.1/
がそれぞれ同じサーバーとポートに接続するのと同じように、http://localhost:8080/
とhttp://127.0.0.1:8080/
も接続します同じIPアドレスにTCPポート8080
追加注:HTTP/1.1では、Webブラウザーが同じIPアドレスとポートに接続している場合でも、多くのWebサーバーにlocalhostと127.0.0.1の違い。アドレスバーの内容に応じて、ブラウザはHost: localhost
またはHost: 127.0.0.1
が含まれたリクエストヘッダーフィールドを送信します。 Webサーバーが適切に構成されている場合、ブラウザーのホストヘッダーフィールドにより、単一のWebサーバーが単一のIPアドレスポートでリッスンし、同じIPアドレスに解決される多くの異なるドメインに対して異なるWebページを提供できます。
Unixシステム、またはLinuxやFreebsdなどのUnixのようなOSでは、ファイルは/ etc/hostsであり、次のような行が含まれている可能性があります。
127.0.0.1 localhost
::1 localhost ip6-localhost ip6-loopback
Windowsでは、ファイルはc:\windows\system32\drivers\etc\hosts
であり、通常は次のような行になります。
127.0.0.1 localhost
その他の注意:必要に応じて、次のようにホストファイルに行を追加できます。
127.0.0.1 localhost
127.0.0.1 developer.yourdomain.com
# Deny Browser Request For These Sites
127.0.0.2 www.spam.advertisements.com
127.0.0.2 super.ads.com
# Block These Sites
127.0.0.3 www.dont.go.here.com
127.0.0.3 nsfw.stuff.com
ブラウザのアドレスバーにあるUniform Resource Locator(URL)http://developer.yourdomain.com:8080/
は、ローカルループバックアドレス127.0.0.1のポート8080にTCP接続するようにWebブラウザに指示します。
さらに、 rfc1700 page 4 によると、127.0.0.0/8の範囲内の任意のアドレスもループバックアドレスです。したがって、コンピュータで適切に構成されたWebサーバーは、ポート127.0.0.2ですべての要求を拒否する一方で、127.0.0.3での接続に対して一般的な「ここにアクセスしてはいけません。サイトはブロックされています」というメッセージを表示します。
Apache Tomcatは、ポートをリッスンし、ブラウザに送信するコンテンツを生成するJavaプログラムを実行するサーバーです。
Webブラウザーにwww.google.comと入力すると、デフォルトのポート80でGoogleサーバーへの接続が開かれ(DNSルックアップを介してwww.google.comのIPアドレスを確認)、Webページが要求されます。 Googleサーバーは、ブラウザが画面に描画するWebページで応答します(通常、画像、CSS、JavaScriptをさらに呼び出すことにより)。
Localhost:8080にアクセスしても、まったく同じです。 Localhostサーバー名は常に、実行中のマシンに解決され、127.0.0.1の偽のIPアドレスを使用します(コンピューターには2つのIPアドレスがあります-このコンピューターはすべてのコンピューターが持っている偽のIPアドレスと実際のIPアドレスです)。したがって、ポート8080で接続をリッスンするローカルで実行されているTomcatインスタンスが必要です。
デフォルトのhttpポート80ではなく、なぜポート8080なのですか?まあそれはあなたがすでに所定の場所にウェブサーバーを持っている場合のためです。
通常、Webサーバーとアプリサーバーがあります。
Webサーバー(Apache httpdなど)は静的ページを提供します。実質的には、一方向の豪華なFTPサーバーのようなものです。 TCP接続を開き、HTTPコマンド(通常はGET)を使用してファイルを要求します。ウェブサーバーはHTMLファイルを返し、ブラウザはそれをダウンロードして解析し、他の画像が必要であることを確認して要求します。 Webサーバーは非常に高速ですが、基本的にはファイルをローカルディスクから取り出して返します。
アプリケーションサーバー(TomcatやJBossなど)は、ディスクから直接持ち上げるのではなく、通常、要求するページを「作成」するコードを実行することを除いて、似ています。そのページを作成するために何をするかはあなたのアプリケーション次第です。データベースに接続したり、プログラムを実行したり、ランダムにページを提供したりすることができます。たとえば、オンラインバンキングにログオンすると、アプリサーバーがセッションを設定し、そのセッションIDをCookieに返します。ブラウザは、ログアウトするまで、リクエストを行うたびに再送信します。したがって、「マイバランス」ページを要求すると、銀行はセッションIDに基づいてユーザーを検索し、データベースにアクセスして名前と銀行残高を取得し、「こんにちはジョンスミス、残高100ユーロです。」アプリサーバーは通常、低速ですが、Webサーバーよりも用途が広いです。
多くの場所では、デフォルトのポート80で実行されているWebServerと、セカンダリポート(8080など)で実行されているAppServerがあります。そのため、静的ページは高速で提供され、ユーザーが動的ページに移動するリンクをクリックすると、リンクが8080(アプリサーバーが応答する)に移動するか、特定のリクエストをアプリサーバー(その場合、デフォルトのポート80のように見えるため、ユーザーには少し見栄えがします。
もちろん、これは非常に高レベルの概要であり、白黒というものは何もありません。ほとんどのWebサーバーは、スクリプト(通常はPerlまたはPHPを使用するスクリプトを介したCGI)を実行することで動的コンテンツを作成でき、ほとんどのアプリサーバーはWebサーバーのようなプレーンファイルも提供できます。実際、アプリサーバーを実行して、Tomcatのポート番号を8080から80に変更することも可能です。
最後に、多くのアプリケーションは、アプリケーションサーバーへのリクエストごとに完全なHTMLページを提供するのをやめ(低速で非効率的と見なされます)、代わりにAJAXを使用してデータスニペットのみで応答し、JSONまたはXMLを送信します。検索クエリの入力に使用した元のwww.google.comに戻り、[検索]をクリックして結果のページを取得します。代わりに、入力すると、ブラウザは継続的にAJAXリクエストをGoogleに送信し、Googleはこれまでに入力した内容に基づいて最新の検索結果で応答し、ブラウザはページを更新します。これは、ユーザーがページを送信するのを待つ必要がないため、ユーザーにとってはより速く、より動的です(古い学校のデスクトップアプリのように)。
このシナリオでは、127.0.0.1(ループバックインターフェイス)であるlocalhostを解決する要求を送信し、ポート8080でlocalhostにアクセスすると、ApacheはデフォルトのVirtualHostを返します。
シンプルにするために、ローカルホストをウェブアドレスとしてローカルマシンに接続します。この場合、Apacheをウェブサーバーとしてインストールします。
2番目の部分:8080は、そのWebアドレスのポート8080に接続することを意味します。これを指定しない場合、WebブラウザーはデフォルトのWebサーバーポートであるポート80に接続します。
まだIPアドレスを使用している場合、localhostは127.0.0.1への固定DNSリンクです。
そこに着くはずです...