HTTPはTCPを使用したアプリケーション層プロトコルなので、ここでHTTP経由で大きなファイルをダウンロードするように要求すると、何が起こるのですか。HTTP応答のTCPハンドシェイク?
HTTP要求がTCPパケットに断片化され、TCPが3ウェイハンドシェイクと私の要求パケットをサーバーに送信します。私の質問は、古いTCP接続を通過するサーバー(ファイル)からの応答か、サーバーは私のファイルを送信するためにブラウザと別の3方向ハンドシェイクと別のトランスポート層接続を開始しますか?
HTTPはTCPを使用したアプリケーション層プロトコルなので、ここでHTTP経由で大きなファイルをダウンロードするように要求すると、何が起こるのですか。HTTP応答のTCPハンドシェイク?
HTTP要求がTCPパケットに断片化され、TCPが3ウェイハンドシェイクと私の要求パケットをサーバーに送信します。私の質問は、古いTCP接続を通過するサーバー(ファイル)からの応答か、サーバーは私のファイルを送信するためにブラウザと別の3方向ハンドシェイクと別のトランスポート層接続を開始しますか?
ファイル転送は既存の接続を使用します。ただし、ファイルが転送されるまで接続をビジーにします。
したがって、ファイルのダウンロード中にユーザーがリンクをクリックすると、接続がビジー状態になります。したがって、クリックされたURLを要求できるようにするには、Webブラウザが追加の接続を開く必要があります。
HTTP/1.1では、既存の接続がアイドル状態で使用されます(一定時間が経過するとアイドル状態の接続が閉じられます)。
'ftp'のようなプロトコルとは異なり、' http'と 'https'プロトコルはファイル転送のために追加のソケット/接続をオープンしません。実際には、ファイル転送はこれらのプロトコルでは何も特別なものではなく、httpサーバから返される他の応答と同様に動作します。ヘッダ、空白行、ペイロードです。 – arkascha
@arkascha簡単なHTTPレスポンスはリクエストソケットに沿って起こるでしょうか?それは応答のための追加の握手を意味しない?? – shidsun
これはロケット科学ではありません.wiresharkのようなネットワークスニファを起動し、httpサーバに1つのファイルのダウンロード要求を行います。返信をキャプチャすると、先頭にヘッダー(ファイルの種類、転送のエンコーディング、サイズなど)が表示され、この場合はペイロードが表示されます。実際には、ネットワークトポロジは通常、単にNAT側のソリューションがクライアント側で使用されるため、第2ソケットを開く手段がありません。 – arkascha