[コンピュータネットワーク]WireSharkを使用したデータパケットのキャプチャと分析

目的


プロトコル分析ソフトウェアのインストールと使用方法、基本的なデータグラムキャプチャ、フィルタリング、分析方法の習得、 HTTP、TCP、ICMP、その他のプロトコルの分析を学びます。

ラボ環境

インターネット接続でMacOオペレーティングシステムを使用します;
パケットキャプチャソフトウェアWireshark。

実験内容:

  1. Wiresharkソフトウェアをインストールして学習する
  2. HTTPプロトコルをキャプチャして分析する
  3. TCPプロトコルを分析する
  4. TCPスリーウェイハンドシェイクを分析する
  5. ICMPプロトコルを分析する

実験手順:

1.Wiresharkソフトウェアをインストールして学習します

(1)まず、公式Webサイトからwiresharkソフトウェアをダウンロードします。

システムバージョンに応じてmacOSArm64bit.dmgを選択し、インストールします
img

(2)Wiresharkを実行します。初期インターフェースは次のとおりです。
img

(3)インターフェースリストからキャプチャするインターフェースを選択し、ダブルクリックしてキャプチャを開始します。
img

ダブルクリック
img

(4)Wiresharkがメインインターフェイスに入り、パケットのキャプチャを開始します。

左上隅のボタンを使用して、パケット
のキャプチャを開始または停止します。メインインターフェイスには、フィルタ、パケットリストバー、パケット詳細バー、パケットバイトバー、およびステータスバーが表示されます。
img

(5)フィルターの使用


①httpなどのプロトコルフィルタリング
img

②IPアドレスフィルタリング
例えば、ip.src == 172.30.208.8
img

③パターンフィルタリング
たとえば、http.request.method == "GET"は、httpリクエストメソッドがPOSTであるパケットをフィルタリングするために使用されます
img

④ポートフィルタリング
たとえば、tcp.port == 80は、tcpポート番号が80のパケットをフィルタリングするために使用されます。
img

(6)グループ化の詳細列
上から順に、物理層、リンク層、ネットワーク層、トランスポート層、アプリケーション層です。

フレーム:物理層のデータフレームの概要
イーサネットII:データリンク層イーサネットフレームヘッダー情報
インターネットプロトコルバージョン4:インターネット層IPパケットヘッダー情報
伝送制御プロトコル:トランスポート層のデータセグメントヘッダー情報T
ハイパーテキスト転送プロトコル:アプリケーション層情報
img

2.HTTPプロトコルのパケットキャプチャと分析

(1)Wiresharkを開いてパケットをキャプチャし、フィルタにhttpを入力します。つまり、httpプロトコルのパケットをフィルタリングします。
img

(2)ブラウザを開き、URLを入力します

この実験では、コンピュータネットワークのUOOC Webサイトhttp://www.uooc.net.cn/home/learn/index#/1138570567/962085269/1242952600/1500174221/sectionを例として取り上げ、WebサイトをシークレットモードでChromeで開きます。

(3)HTTPプロトコルパケットがWiresharkパケットリスト列に表示されることを確認します。
img

(4)詳細ページをクリックすると、グループの詳細列に詳細情報が表示されます。
img

サーバーのホスト名はwww.uooc.net.cnであり、要求するディレクトリは/ home / learn/indexであることがわかります。

もちろん、httpプロトコル情報からユーザーエージェントを知ることもできます。たとえば、このリクエストは、クライアントホスト情報がMacOSXであることを示しています。

HTTPプロトコル情報を通じて、クライアントとサーバーのさまざまな基本情報を知ることができます。

(5)手順4で取得したパケットから、この通信の送信元IPアドレスと宛先IPアドレスを学習します。
ここで、172.30.208.8はプライベートIPアドレス、つまりユーザーのホストです。宛先IPアドレスは120.78.21.18、つまりサーバーのホストアドレスです。
img

3.TCPプロトコルを分析します

(1)最初にTCPプロトコル情報を確認します
img

次の情報などを取得できます
。送信元ポート番号:54378
宛先ポート番号:80
シリアル番号:2642300584
確認番号:572491362
ヘッダー長:20バイト(5)
フラグビット:0x018
ウィンドウサイズ:4096
チェックサム:0xbb4e

(2)TCPフローをトレースします。

右クリックして、ドロップダウンメニューから[TCPストリーム]を選択します。
img

(3)TCPストリームを確立する

TCP接続の確立はHTTPGET要求の前に完了します
img

そして、情報情報にフラグビット[SYN、ACK]が表示されます。
img

4.TCPスリーウェイハンドシェイク

TCPスリーウェイハンドシェイクのプロセスは次のとおりです。

1)クライアントはSYN(SEQ = x)メッセージをサーバーに送信し、SYN_SEND状態に入ります。
2)サーバーはSYNメッセージを受信し、SYN(SEQ = y)ACK(ACK = x + 1)メッセージで応答し、SYN_RECV状態に入ります。
3)クライアントは、サーバーからSYNメッセージを受信し、ACK(ACK = y + 1)メッセージで応答して、確立状態になります。

3ウェイハンドシェイクが完了すると、TCPクライアントとサーバーが正常に接続を確立し、データ送信を開始できます。

(1)最初のハンドシェイク(SYN)
から、HTTPSプロトコルで開かれたWebページが使用されているため、TCPポートが54378であることがわかります。Srcはクライアントであり、Dstはドメイン名がアクセスされた後のIPであるため、これはクライアントからサーバーに送信されるデータです。クライアントがフラグフラグSYNを1に設定し、シーケンス番号としてシーケンス番号= 0の値をランダムに生成し、データパケットをサーバーに送信していることがわかります。クライアントはSYN_SENT状態に入り、サーバーが確認するのを待ちます。 。デフォルトの表示では、シーケンス番号seqは相対値であり、実際の値は2642300583です。
img

(2)2番目のハンドシェイク(SYNACK)
データパケットのSrcはサーバーであり、Dstはクライアントであり、これがサーバーからクライアントに送信されるデータであることを示します。このとき、SYNはまだ1であることがわかります。次に、サーバーは確認番号をクライアントのシリアル番号seq + 1、つまり0 + 1 = 1に設定し、ACKは1(実際の値は572491361)になり、サーバーがTCP要求を受信したことを示します。この時点で、seqは、相対値0(実際の値は2642300584)でサーバーによってランダムに生成されます。
img

(3)3回目のハンドシェイク(ACK)
データパケットのSrcはクライアント、Dstはサーバーです。これはクライアントから送信されるデータパケットです。3回目のハンドシェイクでは、クライアントは2回目のハンドシェイクでサーバーから送信されたパケットを受信した後、シーケンス番号Seqが正しいかどうかを確認します。つまり、最初に送信されたシーケンス番号Seqが1増加します(X + 1 = 0)。 + 1 = 1)。そして、フラグビットACKが1であるかどうか。正しければ、クライアントは別のデータパケットをサーバーに送信します。SYN= 0、ACK = 1、シーケンス番号Ack = Y + 1 = 0 + 1 = 1を確認し、シーケンス番号Seqに1を追加します。サーバーから送信されたACKを相手に送信する場合、送信シーケンス番号SeqはX + 1 = 0 + 1=1です。クライアントが確認シーケンス番号の値とACK=1を受信した後、この時点でTCP接続が確立され、データを送信できます。
img

5.ICMPプロトコルを分析します

(1)端末を使用してそれぞれBaiduにpingを実行すると、wiresharkはicmpプロトコルに従ってフィルタリングし、
最終的に次の情報を取得します。
img
img

パケットキャプチャソフトウェアには、要求要求パケットと応答応答パケットがあります。1つはTTLが64で、もう1つはTTLが50です。

表示するパケットの1つを選択します。
パケットはIPヘッダーとICMPパケットで構成されます。IPヘッダーの合計バイト数は20バイトです。
img

ICMPメッセージ、合計40バイト。
img

(2)次のことを試しました

10.104.125.345のような存在しないホストにpingを実行しました。
WiresharkでICMPパケットをキャッチできません
img

おすすめ

転載: blog.csdn.net/pigpigpig64/article/details/123810716