Wireshark実験-HTTP

基本的なHTTP GET /応答の相互作用

実験手順

非常に短く、埋め込みオブジェクトを含まない非常にシンプルなHTMLファイルをダウンロードすることで、HTTPの調査を開始しました。以下を実行します。

  1. ブラウザを起動します。
  2. Wireshark実験-はじめに(パケットキャプチャはまだ開始されていません)の説明に従って、Wiresharkパケットスニファを起動します。display-filter-specificationウィンドウで、 "http"(文字のみ、引用符なし)を入力して、後でHTTPメッセージのみがグループ化リストウィンドウにキャプチャされるようにします。(私たちはHTTPプロトコルにのみ関心があり、他のすべての乱雑なパケットを見たいとは思いません)。
  3. しばらく待ってから(理由はすぐにわかります)、Wiresharkパケットキャプチャを開始します。


4.ブラウザに次のコンテンツを入力しますhttp://gaia.cs.umass.edu/wireshark-labs/HTTP-wireshark-file1.htmlブラウザには、非常にシンプルな1行のHTMLファイルが表示されます。
5. Wiresharkパケットキャプチャを停止します。


キャプチャされた2つのHTTPメッセージがグループリストウィンドウに表示されます。GETメッセージ(ブラウザーからgaia.cs.umass.eduのWebサーバーに送信)とサーバーからブラウザーへの応答メッセージです。グループコンテンツウィンドウには、選択したメッセージ(この場合はHTTP OKメッセージ)に関する詳細情報が表示されます。HTTPメッセージはTCPセグメントに読み込まれるため、IPパケットにカプセル化されたセグメントであり、イーサネットフレームとフレームにカプセル化されるため、インターフェイスにはフレーム、イーサネット、IP、TCPが表示されます。パケット情報とHTTPメッセージ情報。非HTTPデータの表示を最小限にしたいので、フレーム、イーサネット、IP、およびTCPの回線情報が非表示になっていることを確認してください。

質問回答

HTTP GETおよび応答メッセージの情報を表示して、次の質問に答えます。次の質問に答えるときは、メッセージのどこに次の質問に答えるための情報を見つけたかを示す必要があります。宿題を提出するときは、答えをどこに示したかを示す出力を示してください。

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

サーバー:

ブラウザー(GET要求を送信するため):これ

は、ブラウザーとホストの両方がHTTPバージョン1.1を使用していることを示しています。
2.ブラウザが受信サーバーから受け入れる言語(ある場合)は?


情報を確認した後、受け取った言語は簡体字中国語です。

  1. コンピュータのIPアドレスは何ですか?gaia.cs.umass.eduサーバーのアドレスはどうですか?


私のコンピューター:192.168.67.249
サーバー:128.119.245.12
4.サーバーからブラウザーに返されるステータスコードは何ですか?


最初は気にせず、前のキャッシュがまだ使用可能であることを示す304を返しましたが、ページを更新したことが原因のようです。パケットを再キャプチャして200 OKを返し、リクエストが成功したことを示します。情報は返されたメッセージに含まれています。

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


最後の変更は、2020年4月21日火曜日の5:59:02でした。
6.サーバーはブラウザに何バイトのコンテンツを返しますか?


128バイトが返されました。
7.パケットコンテンツウィンドウで元のデータを確認すると、パケットリストウィンドウに表示されていないプロトコルヘッダーが表示されますか?はいの場合、例を挙げてください。



情報を確認すると、「favicon.ico」はアイコン、お気に入りアイコン、ブラウザタグになります。ブラウザは、Webサイトのルートディレクトリにあるこのアイコンを自動的に要求する場合があります。ターゲットWebサイトにこのアイコンがない場合は、404が返されます。この情報は干渉であり、直接無視できます。

HTTP条件取得/応答の相互作用

実験手順

ほとんどのWebブラウザーは、HTTPオブジェクトを取得するときにオブジェクトキャッシュを使用して条件付きGETを実行します。次の手順を実行する前に、ブラウザのキャッシュが空であることを確認してから、次の手順に従ってください。

  1. 上記のように、ブラウザを起動し、ブラウザのキャッシュがクリアされていることを確認します。
  2. Wiresharkパケットスニファを起動します。


3.次のURL http://gaia.cs.umass.edu/wireshark-labs/HTTP-wireshark-file2.htmlをブラウザに入力する、ブラウザに非常にシンプルな5行のHTMLファイルが表示されます。


4.同じURLをブラウザにすばやくすばやく入力します(またはブラウザの更新ボタンをクリックします)。
5. Wiresharkパケットキャプチャを停止し、display-filter-specificationウィンドウに「http」と入力して、HTTPメッセージのみをキャプチャし、パケットリストウィンドウに表示します。


取得したパケットには他の干渉があり、直接無視されます。

質問回答

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

裏返して何も見つかりませんでした。
2.サーバー応答の内容を確認します。サーバーはファイルの内容を明示的に返しますか?どうやって知るの?


はい、Webページのテキストを含むHTMLマークアップコードが返されます。
3.次に、2番目のHTTP GETリクエストの内容を確認します。HTTP GETで「IF-MODIFIED-SINCE:」が表示されましたか?その場合、「IF-MODIFIED-SINCE:」ヘッダーの後にどのような情報が含まれますか?


ご覧のとおり、ページの最終変更時刻と一致する期間の情報が含まれています。

情報を確認し、このラベルの意味を知っていた。

If-Modified-Sinceが標準のHTTPリクエストヘッダータグである場合、HTTPリクエストを送信すると、ブラウザー側のキャッシュページの最終変更時間がサーバーに送信され、サーバーはこの時間とサーバー上の実際のファイルの最終変更時間を使用します。比較。
時間が一致している場合は、HTTPステータスコード304を返します(ファイルのコンテンツは返さない)。クライアントを受け取った後、ローカルキャッシュファイルをブラウザに直接表示します。
時間が矛盾している場合、HTTPステータスコード200と新しいファイルのコンテンツが返され、クライアントはそれを受信した後、古いファイルを破棄し、新しいファイルをキャッシュして、ブラウザーに表示します。

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


これは私が今遭遇した問題ではありませんか?情報を添付してください:

クライアントが条件付きGETリクエストを送信し、リクエストが許可されているが、ドキュメントのコンテンツが(最後のアクセス以降、またはリクエストの条件に従って)変更されていない場合、サーバーはこの304ステータスコードを返す必要があります。単純な表現は次のとおりです。サーバーはGETを実行しましたが、ファイルは変更されていません。

つまり、このページの現在のキャッシュはまだ保存されており、サーバーは変更されていないため、このキャッシュを使用でき、再度送信する必要はありません。

長いファイルを取得する

実験手順

これまでの例では、取得されるドキュメントは短いHTMLファイルです。次に、長いHTMLファイルをダウンロードするとどうなるかを見てみましょう。以下の手順に従ってください:

  1. 上記のように、ブラウザーを起動し、ブラウザーのキャッシュがクリアされていることを確認します。
  2. Wiresharkパケットスニファを起動する


3. ブラウザに次のURL http://gaia.cs.umass.edu/wireshark-labs/HTTP-wireshark-file3.htmlを入力する、ブラウザにかなり長いファイルが表示されます。


4. Wiresharkパケットキャプチャを停止し、display-filter-specificationウィンドウに「http」と入力して、キャプチャされたHTTPメッセージのみを表示します。


パケットリストウィンドウに、HTTP GETメッセージが表示され、その後にHTTP GETリクエストに対する複数のパケットのTCP応答が表示されます。このマルチパケット応答は少し説明する価値があります。HTTP応答メッセージは、ステータス行、ヘッダー行、空白行、エンティティ本体で構成されます。HTTP GETの場合、応答のエンティティ本体は、要求全体のHTMLファイルです。この例では、HTMLファイルが非常に長く、4500バイトが大きすぎ、TCPパケットに対応できません。したがって、単一のHTTP応答メッセージはTCPによっていくつかの部分に分割され、各部分は個別のTCPセグメントに含まれています。

質問回答

  1. ブラウザはHTTP GETリクエストメッセージをいくつ送信しますか?ファイルのメッセージが含まれているパケットはどれですか?


要求メッセージが送信されました。

このパッケージには、ファイル情報が含まれています。
2. HTTP GETリクエストへの応答としてステータスコードとフレーズを含むデータパケットはどれですか。


3.レスポンスのステータスコードとフレーズは何ですか?

200 OKは、リクエストが成功し、返されたメッセージに情報が含まれていることを意味します。
4.単一のHTTP応答とテキストを実行するには、データを含むTCPセグメントがいくつ必要ですか?

目視検査には、データを含む5つのTCPセグメントが必要です。

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

Wiresharkがキャプチャされた大きなHTMLファイルのパケットトラフィックをどのように表示するかを見てきたので、ブラウザーが埋め込みオブジェクトを使用してファイルをダウンロードするとどうなるかを確認できます。

実験手順

  1. ブラウザを起動します。
  2. Wiresharkパケットスニファを起動します。


3.次のURL http://gaia.cs.umass.edu/wireshark-labs/HTTP-wireshark-file4.htmlをブラウザに入力する、ブラウザに2つの画像を含む短いHTMLファイルが表示さます。これら2つの画像は、基本的なHTMLファイルで参照されます。つまり、画像自体はHTMLファイルに含まれず、画像のURLがダウンロードされたHTMLファイルに含まれます。ブラウザは、指定されたWebサイトからこれらのアイコンを取得する必要があります。


Wiresharkのパケットキャプチャを停止し、display-filter-specificationウィンドウに「http」と入力して、キャプチャされたHTTPメッセージのみを表示します。

質問回答

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




3つのHTTP GET要求メッセージが送信され、これらのGET要求は128.119.245.12に送信されました。
2.ブラウザーは2つの画像を2つのWebサイトから順次または並行してダウンロードしますか?説明してください。


キャプチャされたパッケージに応じて、最初の画像がダウンロードされた後に2番目のパッケージをダウンロードするため、シリアルダウンロードである必要があります。しかし、これは私の意見ではありません。並列ダウンロードが最も効率的な方法であるため、干渉が疑われます。

干渉パッケージを排除するという観点からは、並行ダウンロードである必要があります。

HTTP認証

実験手順

最後に、パスワードで保護されたWebサイトにアクセスし、WebサイトのHTTPメッセージ交換のシーケンスを確認します。URL http://gaia.cs.umass.edu/wireshark-labs/protected_pa​​ges/HTTP-wireshark-file5.htmlはパスワードで保護されています。以下を実行します。

  1. 上記のようにブラウザのキャッシュがクリアされていることを確認してから、ブラウザを閉じてからブラウザを起動してください
  2. Wiresharkパケットスニファを起動します。


3.ブラウザに次のURL http://gaia.cs.umass.edu/wireshark-labs/protected_pa​​ges/HTTP-wiresharkfile5.htmlを入力し、要求されたユーザー名とパスワードをポップアップボックスに入力します。
4. Wiresharkパケットキャプチャを停止し、display-filter-specificationウィンドウに「http」と入力して、キャプチャされたHTTPメッセージのみを表示します。

404しかキャッチできないので、既成のパッケージを使います。

質問回答

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

401承認が必要です。ステータスコードは、ユーザーにアクセス権がなく、認証が必要であることを示します。
2.ブラウザが2度目にHTTP GETメッセージを送信するとき、HTTP GETメッセージに含まれる新しいフィールドは何ですか?



AuthorizationフィールドとCredentialsフィールドがさらにあります。これらの2つのフィールドは、Webページのユーザー名とパスワードに送信する必要があります。

参考文献

「コンピュータネットワークトップダウン方式」[米国] James F. Kurose、Keith W. Ross、Chen Ming、Favicon.ico、Machinery Industry Pressにより翻訳、
リクエスト処理
HTTPリクエストヘッダータグIf-Modified-Since
304ステータスコード
401間違った

おすすめ

転載: www.cnblogs.com/linfangnan/p/12749143.html