「コンピュータ ネットワーク - トップダウン」wireShark 実験 - 第 2 章: http

基本的な HTTP GET/応答の対話


非常に単純な HTML ファイルをダウンロードすることから、HTTP の探索を開始します。非常に短く、埋め込みオブジェクトは含まれません。次の手順を実行します。

  • ブラウザを起動します。
  • 「Wireshark の実験 - はじめに」の説明に従って、Wireshark パケット スニッファを開始します (パケット キャプチャはまだ開始していません)。
  • 後でグループ リスト ウィンドウに HTTP メッセージのみがキャプチャされるように、表示フィルター指定ウィンドウに「http」(文字のみ、引用符なし) を入力します。 (私たちは HTTP プロトコルだけに興味があり、他のすべての文字化けしたパケットを見たくないのです)。
  • しばらく待ってから (その理由はすぐにわかります)、Wireshark パケット キャプチャを開始します。
  • ブラウザに次のように入力しますhttp://gaia.cs.umass.edu/wireshark-labs/HTTP-wireshark-file1.html ブラウザには非常に単純な 1 行の HTML ファイルが表示されるはずです。
  • Wireshark パケット キャプチャを停止します。

実験中に http ページが多すぎると干渉が発生することに注意してください。実験 URL の IP を使用してフィルタリングできます。具体的な方法は次のとおりです。

  • URL を開くgaia.cs.umass.edu/wireshark-labs/HTTP-wireshark-file1.html 
  • 次の図に示すように、F12 キーを押して更新し、URL に対応する IP を見つけます
  • WireShark のフィルタ ウィンドウに「http and ip.addr==128.119.245.12」(引用符は除く)と入力します。

クライアント(ブラウザ)からサーバーに送信されるgetリクエスト

サーバーがクライアントに応答する http リクエスト 

HTTP GET および応答メッセージの情報を確認して、次の質問に答えてください。

 質問

1. ブラウザは HTTP バージョン 1.0 または 1.1 を実行していますか?サーバーはどのバージョンの HTTP を実行していますか?

ブラウザ

サーバ

2. ブラウザはどの言語をサーバーから受け入れますか?

3. あなたのコンピュータの IP アドレスは何ですか? gaia.cs.umass.edu のサーバー アドレスは何ですか?

4. サーバーからブラウザに返されるステータス コードは何ですか?

200

5. サーバー上の HTML ファイルが最後に変更されたのはいつですか?

にこのフィールドがない場合は、このページを開いたのが初めてではないためです (ページを更新したなど)。< a i=2>、初めて開いたときではない場合、ページのコンテンツはブラウザにキャッシュされ、ブラウザはキャッシュからページのコンテンツを取得します。これは条件付き get です。次に行う実験。

このフィールドを表示したい場合は、ブラウザの設定を開き、ブラウザのキャッシュをクリアする必要があります。例としてエッジ ブラウザを使用してください。

ブラウザのキャッシュ データをクリアして再度更新すると、wireShark でキャプチャされたパケットはサーバーから送信されたパケットであり、最終変更フィールドが表示されます。 

6. サーバーはブラウザに何バイトのコンテンツを返しますか?

128バイト

同様に、 にこのフィールドが表示されない場合は、ブラウザのキャッシュをクリアしてパケットを再度キャプチャします

条件付きHTTP GET/応答対話

この実験は、前述のようにブラウザのキャッシュをクリアした後に実行する必要があります。目的は、実験プロセスを明確に確認することです

実験手順:

  • 打开gaia.cs.umass.edu/wireshark-labs/HTTP-wireshark-file1.html
  • ブラウザのキャッシュをクリアする
  • WireShark のフィルタ ウィンドウに http と ip.addr==128.119.245.12 を入力します。
  • WireShark のキャプチャ ボタンを開いてページのキャプチャを開始します
  • ブラウザ ページを更新し、wireShark によるパケット キャプチャを観察します。
  • ブラウザ ページを再度更新し、wireShark によるパケット キャプチャを観察します。

質問

1. ブラウザからサーバーへの最初の HTTP GET リクエストの内容を調べます。 HTTP GET に「IF-MODIFIED-SINCE」という行が表示されますか?

見ませんでした

2. サーバー応答の内容を確認します。サーバーはファイルの内容を明示的に返しますか?どうやって知ったの?

戻ります。応答ファイルの行ベースのフィールドに Web ページのコンテンツが表示されました

3. ここで、2 番目の HTTP GET リクエストの内容を調べます。 HTTP GET に「IF-MODIFIED-SINCE:」という行がありましたか?含まれている場合、「IF-MODIFIED-SINCE:」ヘッダーの後にはどのような情報が含まれますか?

見られます

概要IF-MODIFIED-SINCE フィールドの説明

IF-MODIFIED-SINCE フィールドは HTTP リクエスト ヘッダーの条件付きフィールドで、最後にリクエストされたリソースの変更時刻を指定するために使用されますサーバーはこのフィールドを使用して、最後のリクエスト以降にリソースが変更されたかどうかを判断できます。

  1. IF-MODIFIED-SINCE フィールド: クライアントが HTTP リクエストを送信するとき、リクエスト ヘッダーに IF-MODIFIED-SINCE フィールドを含めることができます。このフィールドの値は次のとおりです。 リソースが最後に取得されたときのタイムスタンプサーバーは、変更されていない場合、このタイムスタンプに基づいてリソースが変更されたかどうかを判断します。 a>を返し、クライアントのキャッシュされたバージョンがまだ有効であり、変更する必要がないことを示します。リソースを再取得します。 ステータス コード 304 未変更、サーバーは

  2. Last-Modified フィールド: サーバーは応答に Last-Modified フィールドを含めます。このフィールドの値は最後の変更を示します。リソースの時間。クライアントが最初にリソースを取得すると、サーバーはこのフィールドを応答ヘッダーに含めます。クライアントはこのタイムスタンプを保存し、次のリクエストで IF-MODIFIED-SINCE フィールドを使用して条件付きリクエストを行うことができます。

Last-Modified フィールドは、リソースの最終変更時刻をクライアントに通知するために、サーバーによって応答で送信されます。IF-MODIFIED-SINCE フィールドは、リクエストでクライアントによって送信され、次の目的で使用されます。サーバーにリソースが変更されているかどうかを判断させ、新しいリソースを返すかステータス コード 304 Not Modified を返すかを決定させます。 これら 2 つのフィールドは通常、リソースの最終変更時刻を比較することでキャッシュの検証と制御を行うために一緒に使用されます。

したがって、IF-MODIFIED-SINCE フィールドは、クライアントがリソースをキャッシュし、不必要なダウンロードを回避できるようにすることで、ネットワーク トラフィックを最適化し、サーバーの負荷を軽減するためによく使用されます。リソースが変更されていない場合、クライアントはリソース全体を再ダウンロードすることなく、キャッシュされたコピーを直接使用できます。

4. 2 番目の HTTP GET の場合、サーバーから応答された HTTP ステータス コードとフレーズは何ですか?サーバーはファイルの内容を明示的に返しますか?説明してください。

ステータスコード: 304

フレーズ: 変更されていません

サーバーはファイルの内容を明示的に返しません。

初めてリクエストしたときにファイルのコンテンツがローカルにキャッシュされているため、再度リクエストしたときにIF-MODIFIED-SINCE フィールドの値が Last の値の前になります。 -変更済み、クライアントがブラウザに再度リクエストした時刻が、サーバーによるファイル内容の変更時刻よりも前であること、つまり、この時点でブラウザがサーバーに要求したリソースが前回と同じであることを示します。 そのため、特定のコンテンツを再度返す必要はなく、ブラウザはキャッシュからコンテンツを取得するだけで済みます。

長い文書を取得する

これまでの例では、取得されたドキュメントは短い HTML ファイルです。次に、長い HTML ファイルをダウンロードすると何が起こるかを見てみましょう。次の手順を実行します:

  • ブラウザを起動し、上記のようにブラウザのキャッシュがクリアされていることを確認します。
  • Wireshark パケット スニファーを開始する
  • ブラウザに次の URL を入力します。 http://gaia.cs.umass.edu/wireshark-labs/HTTP-wireshark-file3.html ブラウザには、かなり長い米国権利章典が表示されます。
  • Wireshark パケット キャプチャを停止し、表示フィルタ指定ウィンドウに「http」と入力して、キャプチャされた HTTP メッセージのみが表示されるようにします。

質問

1. ブラウザは HTTP GET リクエスト メッセージを何回送信しますか。米国権利章典のメッセージが含まれているパケットはどれですか?

httpGET リクエスト

応答パケットには米国権利章典のメッセージが含まれており、特定のコンテンツは行ベースのフィールドにあります

2. HTTP GET リクエストのレスポンスステータス コードとフレーズが含まれるパケットはどれですか?

オブジェクトが埋め込まれた HTML ドキュメント

Wireshark が大きな HTML ファイルのキャプチャされたパケット トラフィックをどのように表示するかを確認したので、ブラウザが埋め込みオブジェクトを使用してファイル、つまり他のオブジェクトを含むファイルをダウンロードしたときに何が起こるかを見てみましょう (以下の例は画像ファイル) サーバーです。
次の手順を実行します:

  • ブラウザを起動します。
  • Wireshark パケット スニファーを開始します。
  • ブラウザに次の URL を入力します。 http://gaia.cs.umass.edu/wireshark-labs/HTTP-wireshark-file4.html ブラウザには 2 つの画像を含む短い HTML ファイルが表示されます。これら 2 つの画像は、ベース HTML ファイルで参照されます。つまり、画像自体は HTML ファイルに含まれず、代わりに画像への URL がダウンロードされた HTML ファイルに含まれます。この本に記載されているように、ブラウザは指定された Web サイトからこれらのアイコンを取得する必要があります。発行者のアイコンは、www.aw-bc.com Web サイトから取得されました。そして、第 5 版の表紙画像 (お気に入りの表紙の 1 つ) は manic.cs.umass.edu サーバーに保存されています。
  • Wireshark パケット キャプチャを停止し、表示フィルタ指定ウィンドウに「http」と入力して、キャプチャされた HTTP メッセージのみが表示されるようにします。

質問

1. ブラウザは何つの HTTP GET リクエスト メッセージを送信しましたか?これらの GET リクエストはどの IP アドレスに送信されますか?

三つ

2. ブラウザは 2 つの Web サイトから 2 つの画像を連続的にまたは並行してダウンロードしましたか?説明してください。

シリアル

最初の画像の応答メッセージの Data フィールドの値は、

2 番目の画像の応答メッセージの Date フィールドの値は、

HTTP認証

最後に、パスワードで保護された Web サイトにアクセスして、Web サイトによって交換される HTTP メッセージのシーケンスを調べます。 URL http://gaia.cs.umass.edu/wireshark-labs/protected_pa​​ges/HTTP-wireshark-file5.html はパスワードで保護されています。ユーザー名は「wireshark-students」(引用符なし)、パスワードは「network」(これも引用符なし)です。それでは、この「安全な」パスワードで保護された Web サイトにアクセスしてみましょう。以下をせよ:

  • 前述のように、ブラウザのキャッシュがクリアされていることを確認してから、ブラウザを閉じてから再度起動してください。
  • Wireshark パケット スニファーを開始します。
  • ブラウザに次の URL を入力します。 http://gaia.cs.umass.edu/wireshark-labs/protected_pa​​ges/HTTP-wiresharkfile5.html 要求されたユーザー名とパスワードをポップアップ ボックスに入力します。
  • Wireshark パケット キャプチャを停止し、表示フィルタ指定ウィンドウに「http」と入力して、キャプチャされた HTTP メッセージのみが表示されるようにします。

質問

1. ブラウザの最初の HTTP GET メッセージに対するサーバーの応答 (ステータス コードとフレーズ) は何ですか?

2. ブラウザが HTTP GET メッセージを 2 回目に送信するとき、HTTP GET メッセージにはどのような新しいフィールドが含まれますか?

おすすめ

転載: blog.csdn.net/qq_58158950/article/details/134850297