web-dev-qa-db-ja.com

Webサイトは、ブラウザが使用している(ローカル)ポートを知っていますか?

詳細はわかりませんが、ブラウザがタブごとに異なるポートを使用していることを知っているので興味があります Webブラウザはタブごとに異なる送信ポートを使用しますか?

2
Noajm IsMy Name

はい、ネットワークスタックなどとサーバー内部は、要求に応答して応答を送り返す方法を知っている必要があります。

ただし、それは、サーバーソフトウェアが、サイトが使用しているプログラミング言語/ツール/ライブラリに(簡単にまたは直接)公開すること、またはサイトが存在する場合はそのいずれかにアクセスして使用できることを意味するわけではありません(プレーンと考えてください静的HTMLサイト...それらはまだ存在しています)。

これは、ApacheインスタンスのPHPからの$_SERVER配列にあるもののサンプルです。そこにあるリモートIP、ポートなど、およびその他の興味深いものを見ることができます。 ...各サーバーソフトウェアは、異なる名前または異なる方法を使用して同じ情報を公開する場合があることに注意してください。

Array
(
    [HTTPS] => on
    [SSL_TLS_SNI] => example.com
    [HTTP_Host] => example.com
    [HTTP_CONNECTION] => keep-alive
    [HTTP_CACHE_CONTROL] => max-age=0
    [HTTP_UPGRADE_INSECURE_REQUESTS] => 1
    [HTTP_USER_AGENT] => Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/74.0.3729.131 Safari/537.36
    [HTTP_DNT] => 1
    [HTTP_ACCEPT] => text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3
    [HTTP_ACCEPT_ENCODING] => gzip, deflate, br
    [HTTP_ACCEPT_LANGUAGE] => en-US,en;q=0.9,da;q=0.8
    [PATH] => /usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
    [SERVER_SIGNATURE] => 
Apache/2.4.18 (Ubuntu) Server at example.com Port 443


    [SERVER_SOFTWARE] => Apache/2.4.18 (Ubuntu)
    [SERVER_NAME] => example.com
    [SERVER_ADDR] => 45.56.125.54
    [SERVER_PORT] => 443
    [REMOTE_ADDR] => 174.131.63.212
    [DOCUMENT_ROOT] => /var/www-example.com
    [REQUEST_SCHEME] => https
    [CONTEXT_PREFIX] => 
    [CONTEXT_DOCUMENT_ROOT] => /var/www-example.com
    [SERVER_ADMIN] => [email protected]
    [SCRIPT_FILENAME] => /var/www-example.com/req.php
    [REMOTE_PORT] => 32906
    [GATEWAY_INTERFACE] => CGI/1.1
    [SERVER_PROTOCOL] => HTTP/1.1
    [REQUEST_METHOD] => GET
    [QUERY_STRING] => 
    [REQUEST_URI] => /req.php
    [SCRIPT_NAME] => /req.php
    [PHP_SELF] => /req.php
    [REQUEST_TIME_FLOAT] => 1561248971.904
    [REQUEST_TIME] => 1561248971
)
3
ivanivan

返信を送り返すためにこの情報が必要なためです。

  • TCP接続の両方のピアは、IPパケットヘッダーに「送信元」アドレスと「宛先」アドレスの両方が含まれているため、互いのIPアドレスを認識しています。
  • 同様に、TCPヘッダーには「送信元」ポートと「宛先」ポートの両方が含まれているため、両方のピアは互いの「ローカル」ポートを認識しています。

たとえば、SuperUser Webサーバーに接続すると、IPアドレス1.1.1.1から2.2.2.2、TCPポート34567から443、およびその)にパケットを送信していることがわかります。あなたへの応答は反対のパラメータを持ちます(つまり、TCPポート443から34567に到着します)。

2
user1686