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


11

私はすべてのローカルアプリケーションプログラミング(C ++アプリケーションなど)でキャリアを過ごしてきました。ただし、今はWebの世界に足を踏み入れようとしています。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 ++の関数にデータを送信し、異なるデータが返されるように)、再びローカルにページに描画されます。


2
RFC 7230をお読みください。
マイケルハンプトン

長い夜のように見えます;)
softeng

回答:


9

Webブラウザにlocalhost:8080にアクセスするように指示すると、正確にはどうなりますか

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

  2. ホスト名または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ページを提供できます。

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

  1. UnixシステムまたはLinuxやFreebsdなどのOSのようなUnixでは、ファイルは/ 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
    

追加のメモ:必要に応じて、hostsファイルに次のような行を追加できます。

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 
  • http://developer.yourdomain.com:8080/ブラウザのアドレスバーにあるURL(Uniform Resource Locator) は、ローカルループバックアドレス127.0.0.1のポート8080にTCP接続を行うようにWebブラウザに指示します。

  • さらに、rfc1700 4ページよると、127.0.0.0 / 8の範囲内のアドレスもループバックアドレスです。したがって、コンピューターで実行されている適切に構成されたWebサーバーは、ポート127.0.0.2でのすべての要求を拒否する一方で、127.0.0.3での接続に関する一般的な「ここに行くべきではありません。

Tomcatページはどこから来たのですか?

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


何も説明しません。非常に浅い
グリーン

@Green具体的に何を探していましたか?アドレスに解決するローカルホスト名、およびTCPポート番号について説明しました。さまざまなサーバーがポートへのリストを処理する方法、サーバープールが複数の接続を処理する方法、Webサーバーの構成方法、TCP通信の内部動作、完全なHTTPヘッダーの説明、またはホストに見つからないドメインの名前解決の仕組みについては説明しませんでしたファイルでは、それぞれが質問の範囲をはるかに超えています。
キースレイノルズ

1

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アドレスがあります-この偽のアドレスはすべてのコンピューターと実際のアドレスです)。そのため、ポート8080で接続をリッスンしてローカルで実行するTomcatインスタンスが必要です。

デフォルトのhttpポート80ではなくポート8080を使用する理由 まあ、それはあなたがすでにウェブサーバーを設置している場合です。

通常、Webサーバーとアプリサーバーがあります。

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

  2. アプリケーションサーバー(TomcatやJBossなど)も似ていますが、通常は、コードを実行して、ディスクから直接持ち上げるのではなく、要求しているページを「作成」します。そのページを作成するために行うことは、アプリケーション次第です。データベースに接続し、プログラムを実行し、ランダムにページを提供します...など。たとえば、オンラインバンキングにログオンすると、アプリサーバーはセッションをセットアップし、そのセッションIDをCookieで返します。ログアウトするまで、リクエストを行うたびにブラウザが再送信されます。したがって、「my balances」ページを要求すると、銀行はセッションIDに基づいて自分を確認し、データベースにアクセスして名前と銀行残高を取得し、「Hi John Smith、your balance」というページを作成します。 100ユーロです。」通常、アプリサーバーは低速ですが、Webサーバーよりも汎用性があります。

多くの場所では、デフォルトのポート80で実行されているWebServerがあり、次にセカンダリポート(8080など)で実行されているAppServerがあります。したがって、静的ページは高速で提供され、ユーザーが動的ページに移動するリンクをクリックすると、リンクは8080(アプリサーバーが応答する)に移動するか、Webサーバーが特定の要求をアプリサーバーに転送するようにセットアップされます(その場合、それはまだデフォルトのポート80のように見えるため、ユーザーにとっては少し見栄えがよくなります)。

もちろん、これは非常に高いレベルの概要であり、その白黒は何もありません。ほとんどのWebサーバーは、スクリプト(通常、perlまたはPHPを使用してスクリプトを実行するCGI)を実行することで動的コンテンツを作成でき、ほとんどのアプリサーバーはWebサーバーのようなプレーンファイルを提供できます。実際、アプリサーバーを実行して、Tomcatポート番号を8080から80に変更するだけです。

最後に、多くのアプリケーションは、アプリケーションサーバーへの各リクエストに対して完全なHTMLページを提供することから遠ざかり(低速で非効率的と見なされます)、代わりにAJAXを使用してJSONまたはXMLを送信するデータスニペットのみで応答します。検索クエリの入力に使用した元のwww.google.comに戻り、[検索]をクリックして結果のページを取得します。代わりに、入力中にブラウザがAJAXリクエストをGoogleに継続的に送信し、これまでに入力した内容に基づいて最新の検索結果が返され、ブラウザがページを更新します。これは、ユーザーがページを送信するのを待つ必要がないことを意味します(古い学校のデスクトップアプリがそうであるように)。


1

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


0

簡単にするために、Webアドレスとしてのlocalhostはローカルマシンに接続します。この場合、ApacheはWebサーバーとしてインストールされています。

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

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

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

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.