web-dev-qa-db-ja.com

Webブラウザーでlocalhost:8080にアクセスすると、正確にはどうなりますか? (Apache Tomcat)

私はすべてのローカルアプリケーションプログラミング(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++の関数にデータを送信したり、別のデータが返されたりするのと同じように)、ページにローカルで再度描画されます。

11
softeng

Webブラウザーにlocalhost:8080に移動するように指示すると、正確にはどうなりますか?

  1. Webブラウザにオペレーティングシステムにホスト名localhostの解決を要求させる。オペレーティングシステムは通常、ホスト名localhostをループバックインターフェイスである127.0.0.1に解決します。

  2. ホスト名またはIPアドレスの後に::8080のようなポート番号が続くと、ブラウザはデフォルトのWebサーバーポート80ではなく、TCPポートに接続するように指示されます。 。

    http://localhost:80/http://localhost/http://127.0.0.1/:80http://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ページを提供できます。

オペレーティングシステムは通常、localhostなどのホスト名をどのように解決しますか?

  1. Unixシステム、またはLinuxやFreebsdなどのUnixのようなOSでは、ファイルは/ etc/hostsであり、次のような行が含まれている可能性があります。

    127.0.0.1   localhost
    ::1     localhost ip6-localhost ip6-loopback
    
  2. 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での接続に対して一般的な「ここにアクセスしてはいけません。サイトはブロックされています」というメッセージを表示します。

Tomcatページはどこから来ていますか?

Apache Tomcatは、ポートをリッスンし、ブラウザに送信するコンテンツを生成するJavaプログラムを実行するサーバーです。

9
Keith Reynolds

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サーバーとアプリサーバーがあります。

  1. Webサーバー(Apache httpdなど)は静的ページを提供します。実質的には、一方向の豪華なFTPサーバーのようなものです。 TCP接続を開き、HTTPコマンド(通常はGET)を使用してファイルを要求します。ウェブサーバーはHTMLファイルを返し、ブラウザはそれをダウンロードして解析し、他の画像が必要であることを確認して要求します。 Webサーバーは非常に高速ですが、基本的にはファイルをローカルディスクから取り出して返します。

  2. アプリケーションサーバー(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はこれまでに入力した内容に基づいて最新の検索結果で応答し、ブラウザはページを更新します。これは、ユーザーがページを送信するのを待つ必要がないため、ユーザーにとってはより速く、より動的です(古い学校のデスクトップアプリのように)。

1
Barry Pollard

このシナリオでは、127.0.0.1(ループバックインターフェイス)であるlocalhostを解決する要求を送信し、ポート8080でlocalhostにアクセスすると、ApacheはデフォルトのVirtualHostを返します。

1
Ali Pandidan

シンプルにするために、ローカルホストをウェブアドレスとしてローカルマシンに接続します。この場合、Apacheをウェブサーバーとしてインストールします。

2番目の部分:8080は、そのWebアドレスのポート8080に接続することを意味します。これを指定しない場合、WebブラウザーはデフォルトのWebサーバーポートであるポート80に接続します。

まだIPアドレスを使用している場合、localhostは127.0.0.1への固定DNSリンクです。

そこに着くはずです...

0
narrsf