Wiresharkを使用したHTTP分析

Http Analysis Using Wireshark



HTTPとは何ですか?

まず、HTTPの完全な形式はすべてハイパーテキスト転送プロトコルです。 HTTPは、ISOまたはTCP / IPモデルのアプリケーション層プロトコルです。アプリケーション層の下にあるHTTPを見つけるには、下の図を参照してください。







HTTPはによって使用されます ワールドワイドウェブ (w.w.w)そしてそれはメッセージがどのようにフォーマットされそしてブラウザによって送信されるかを定義します。したがって、HTTP定義は、ブラウザがHTTPコマンドを受信したときに実行する必要のあるアクションを決定します。また、HTTPは、サーバーからデータを取得するためにHTTPコマンドを送信するためのルールを定義します。



たとえば、ブラウザ(Internet Explorer、Chrome、Firefox、Safariなど)にURLを入力すると、実際にはサーバーにHTTPコマンドが送信され、サーバーは適切なコマンドで応答します。



HTTPメソッド:

HTTP / 1.1にはいくつかのメソッドのセットがあります(これはHTTPバージョンです)





GET、HEAD、POST、PUT、DELETE、CONNECT、OPTION、TRACE。

それぞれの方法の詳細については説明しませんが、代わりに、よく見られる方法について説明します。



得る: GETリクエストはWebサーバーからのデータを要求します。これは、ドキュメントの取得に使用される主な方法です。この方法の1つの実用的な例を見ていきます。

役職: POSTメソッドは、サーバーにデータを送信する必要がある場合に使用されます。

HTTPはWiresaharkです:

HTTPがどのように機能するかを理解するために、実用的なことを試してみましょう。

したがって、この例ではダウンロードします alice.txt(サーバーに存在するデータファイル) から gaia.cs.umass.edu サーバ。

Setps:

  1. URLを開く http://gaia.cs.umass.edu/wireshark-labs/alice.txt [alice.txtをダウンロードするための完全なURLを知っています]コンピュータブラウザで。
  2. これで、ダウンロードしたファイルがブラウザに表示されます。これがスクリーンショットです

  1. 並行して、Wiresharkでパケットをキャプチャしました。

WiresharkでのHTTPパケット交換:

HTTPに入る前に、HTTPがトランスポート層プロトコルとしてポート80とTCPを使用していることを知っておく必要があります[TCPについては別のトピックの説明で説明します]。

次に、そのURLを入力してブラウザでEnterキーを押すと、ネットワークで何が起こるかを見てみましょう。

これがのスクリーンショットです

TCP 3ウェイハンドシェイク——-> HTTP OK ——-> TCPデータ[alice.txtのコンテンツ] ——->

HTTP-OK

次に、HTTPGETパケットとHTTPOKパケットの内部に何があるかを見てみましょう。

注:TCP交換については、別のトピックの説明で説明します。

HTTP GET:

TCP 3ウェイハンドシェイク[SYN、SYN + ACK、およびACKパケット]が実行された後、HTTP GET要求がサーバーに送信されます。これは、パケットの重要なフィールドです。

1.リクエスト方法: GET ==> パケットはHTTPGETです。

2.URIのリクエスト:/wireshark-labs/alice.txt ==>クライアントは/ Wireshark-labsの下にあるファイルalice.txtを要求しています

3.バージョンのリクエスト: HTTP / 1.1 ==> HTTPバージョン1.1です

4.承認:text / html、application / xhtml + xml、image / jxr、* / * ==> [クライアント側ブラウザ]が受け入れることができるファイルの種類をサーバーに通知します。ここで、クライアントはテキストタイプのalice.txtを期待しています。

5.Accept-Language: en-US ==> 受け入れられている言語標準。

6.ユーザーエージェント: GeckoのようなMozilla / 5.0(Windows NT 10.0; WOW64; Trident / 7.0; rv:11.0)==> クライアント側のブラウザタイプ。 Internet Explorerを使用したとしても、常に表示されます/最大時間はMozillaと言います

7.Accept-エンコーディング: gzip、deflate ==>クライアント側で受け入れられたエンコーディング。

8.ホスト: gaia.cs.umass.edu ==>これは、クライアントがHTTPGETリクエストを送信しているWebサーバー名です。

9.接続: キープアライブ==> 接続は、現在のトランザクションが終了した後もネットワーク接続を開いたままにするかどうかを制御します。接続タイプはキープアライブです。

これがHTTP-GETパケットフィールドのスクリーンショットです

HTTP OK:

TCPデータ[alice.txtのコンテンツ]が正常に送信された後、HTTP OKがクライアントに送信されます。これは、パケットの重要なフィールドです。
1.応答バージョン: HTTP / 1.1 ==> ここでもHTTPバージョン1.1のサーバー
2.ステータスコード:200 ==>サーバーから送信されたステータスコード。
3.応答フレーズ: わかった ==>サーバーから送信された応答フレーズ。

したがって、2と3から200 OKが得られます。これは、リクエスト[HTTPGET]が成功したことを意味します。

4.日付: 2019年2月10日日曜日06:24:19GMT ==>現在の日付、サーバーがHTTPGETを受信したGMTの時刻。
5.サーバー: Apache / 2.4.6(CentOS)OpenSSL / 1.0.2k-fips PHP / 5.4.16 mod_perl / 2.0.10 Perl / v5.16.3 ==>サーバーの詳細と構成バージョン。
6.最終変更2004年8月21日土曜日14:21:11GMT ==>ファイルalice.txtの最終更新日時。
7.ETag:2524a-3e22aba3a03c0 ==> ETagは、キャッシュを支援し、パフォーマンスを向上させるためにコンテンツが変更されていないことを示します。または、コンテンツが変更された場合、etagは、リソースの同時更新が相互に上書きするのを防ぐのに役立ちます。
8. Accept-Ranges:バイト==> バイトは、サーバーでコンテンツに使用される単位です。
9.コンテンツの長さ: 152138 ==> これは、alice.txtの全長(バイト単位)です。
10.キープアライブ: タイムアウト= 5、最大= 100 ==>パラメータを存続させます。
11.接続: 生き続ける ==>接続は、現在のトランザクションが終了した後もネットワーク接続を開いたままにするかどうかを制御します。接続タイプはキープアライブです。
12.コンテンツタイプ: テキスト/プレーン; charset = UTF-8 ==> コンテンツ[alice.txt]タイプはテキストで、文字セット標準はUTF-8です。

これは、HTTPOKパケットのさまざまなフィールドのスクリーンショットです。

これで、Webサーバーに存在するファイルを要求するとどうなるかがわかりました。

結論:

HTTPは、私たちが日常生活で使用する単純なアプリケーションプロトコルです。ただし、安全ではないため、HTTPSが実装されています。そのSは安全を意味します。そのため、最大のWebサーバー名はhttpで始まります s:// [ウェブサイト名] 。これは、あなたとサーバー間のすべての通信が暗号化されることを意味します。今後、このHTTPSについて個別に説明する予定です。