詳細はわかりませんが、ブラウザがタブごとに異なるポートを使用していることを知っているので興味があります Webブラウザはタブごとに異なる送信ポートを使用しますか?
はい、ネットワークスタックなどとサーバー内部は、要求に応答して応答を送り返す方法を知っている必要があります。
ただし、それは、サーバーソフトウェアが、サイトが使用しているプログラミング言語/ツール/ライブラリに(簡単にまたは直接)公開すること、またはサイトが存在する場合はそのいずれかにアクセスして使用できることを意味するわけではありません(プレーンと考えてください静的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
)
返信を送り返すためにこの情報が必要なためです。
たとえば、SuperUser Webサーバーに接続すると、IPアドレス1.1.1.1から2.2.2.2、TCPポート34567から443、およびその)にパケットを送信していることがわかります。あなたへの応答は反対のパラメータを持ちます(つまり、TCPポート443から34567に到着します)。