コンピュータネットワーク-Wireshark実験


序文

この部分は、データリンク層、ネットワーク層、トランスポート層、アプリケーション層によって分類されており、合計10回の実験があります。プロトコル分析ソフトウェアWiresharkを使用する必要があります。導入セクションに従って、自分でダウンロードしてインストールしてください。

準備
Wiresharkの基本的な使用法を理解するには、次の参考資料を見つけるか使用してください。

データパケットをキャプチャするネットワークカードを選択します。キャプチャを
開始/停止します
。Wiresharkのメインウィンドウ領域を理解します。
データパケットフィルタリングを設定します。
データフローを追跡します。


1つは、データリンク層です。

実装1:イーサネットフレーム構造に精通している
Wiresharkを使用して、宛先MAC、送信元MAC、タイプ、フィールドなどのイーサネットフレームの構造に精通しているパケットを自由にキャプチャします。

参照:初心者のためのwiresharkの使用方法
ここに画像の説明を挿入します
ここに画像の説明を挿入します
ここに画像の説明を挿入します
ここに画像の説明を挿入します

実装2:サブネット内外で通信するときのMACアドレスを理解し、
隣のコンピューター(同じサブネット)pingを実行し、Wiresharkを使用してこれらのパケットをキャプチャし(icmpキーワードを使用して分析用にフィルタリングできます)、目的を記録しますフレームを送信する方法返されるフレームのMACアドレスと送信元MACアドレスは何ですか。誰のMACアドレスに属していますか?
次に、qige.io(またはこのサブネット外の任意のホスト)にpingを実行し、Wiresharkを使用してこれらのパケットをキャプチャし(icmpでフィルタリングできます)、送信されたフレームの宛先MACアドレスと返されたフレームの送信元MACアドレスを記録しますか?誰のMACアドレスに属していますか?
www.cqjtu.edu.cnに再度pingを実行し(またはこのサブネット外のホストを使用できます)、Wiresharkを使用してこれらのパケットをキャプチャし(icmpでフィルタリングできます)、送信されたフレームの宛先MACアドレスと送信元MACアドレスを記録します返されたフレームの?これは誰のMACアドレスですか?

1.1。
ここに画像の説明を挿入します
ここに画像の説明を挿入します

pingの隣のコンピューターは同じサブネット上にありますが、送信フレームと戻りフレームのMACアドレスに問題があります(ゲートウェイを通過します)。具体的な問題は不明です
2。
ここに画像の説明を挿入します
ここに画像の説明を挿入します

送信されたフレームの宛先MACアドレス:00:74:9c:9f:40:13
返されたフレームの送信元MACアドレス:00:74:9c:9f:40:13
このアドレスはサブネットのゲートウェイMACアドレスですホストが配置されている場所
3.
ここに画像の説明を挿入します
送信されたフレームの宛先MACアドレス:00:74:9c:9f:40:13
返されたフレームの送信元MACアドレス:00:74:9c:9f:40:13
このアドレスはホストが配置されているサブネットのゲートウェイMACアドレス

質問
上記の実験を通じて、
このサブネット上のコンピューターにアクセスする場合、宛先MACはホストのものであることがわかります。
非ローカルサブネット上のコンピューターにアクセスする場合、宛先MACはゲートウェイです。
理由は何ですか。

このサブネット上のコンピューターにアクセスする場合、宛先MACはホストのMACです。非ローカルサブネット上のコンピューターにアクセスする場合、宛先MACはゲートウェイです。これは、非ローカルサブネット上のコンピューターにアクセスするときはマシンがゲートウェイを通過する必要があり、このサブネット上のコンピューターにアクセスするときは直接到達するため、宛先MACアドレスがホストになるためです。

3つを実装してARP解決プロセスをマスターします
1.干渉を防ぐために、最初にarp -d *コマンドを使用してarpキャッシュをクリア
します2.隣のコンピューター(同じサブネット)にpingを実行し、Wiresharkを使用してこれらのパケットをキャプチャします( arpでフィルタリングできます)、ARPを表示しますリクエストのフォーマットとリクエストの内容は、リクエストの宛先MACアドレスが何であるかに注意してください。リクエストへの応答を再度確認し、応答の送信元と宛先のMACアドレスを確認します。
3. arp -d *コマンドを再度使用してarpキャッシュをクリアし
ます。4。次にqige.ioにpingを実行し(またはサブネット外のホストを使用できます)、Wiresharkを使用してこれらのパケットをキャプチャします(arpフィルタリングを使用できます)。ARP要求が何であるかを確認し、誰が要求に応答しているかに注意してください。

1.1。
ここに画像の説明を挿入します

ここに画像の説明を挿入します
ここに画像の説明を挿入します
宛先MACアドレス:ff:ff:ff:ff:ff:ff
応答は相手の物理MACアドレスです

ここに画像の説明を挿入します

ここに画像の説明を挿入します
ここに画像の説明を挿入します

フレームの宛先MACアドレス:ff:ff:ff:ff:ff:ff


上記の実験を


発行すると、1.ARP要求がブロードキャストモードを使用して送信されることがわかります。2。このIPサブネットにアクセスしている場合、ARPはIPに直接対応するMACを解決します。非ブックアクセスネットIPの場合、 ARP分析は、ゲートウェイのMACを取得します。どうして?
このマシンがこのサブネット上のコンピューターにアクセスしている場合、データパケットは通信サブネットを離れる必要はなく、ARP分析もこのサブネットで実行されるため、ARP分析は反対側のホストのMAC物理アドレスを取得します。
このマシンが非ローカルサブネットにアクセスしている場合コンピューターの場合、データパケットは通信サブネットを離れる必要があり、ARP分析はゲートウェイを通過する必要があります。したがって、ARP分析によって取得される宛先MAC物理アドレスはゲートウェイの物理アドレスです。 。

第二に、ネットワーク層

実装1:IPパケット構造に精通している
Wiresharkを使用してパケットを自由にキャプチャし(IPフィルタリングを使用できます)、バージョン、ヘッダー長、全長、TTL、プロトコルタイプなどのIPパケットの構造に精通します。田畑。

 ping qige.io

ここに画像の説明を挿入します
ここに画像の説明を挿入します

バージョン:IPV4
ヘッダー長:20バイト
全長:60
TTL:128秒
プロトコル:ICMP

問題
は効率を改善することです。IPヘッダーを可能な限り合理化する必要があります。しかし、このような貴重なIPヘッダーには、ヘッダー長フィールドと全長フィールドの両方があります。どうして?

IPヘッダーの長さにより、受信側はヘッダーが終了する場所とデータの読み取りを開始する場所を計算できます。全長フィールドは、データの受け入れ、データの読み取りなどです。

2つのIPパケットのセグメンテーションと再構成の実装
規制によると、IPパケットは最大64Kバイトを持つことができます。ただし、イーサネットフレームの制限により、IPパケットのデータが1500バイトを超えると、送信側のデータリンク層でセグメント化され、受信側のネットワーク層で再編成されます。

デフォルトでは、pingコマンドは32バイトのデータのみを相手に送信します。ping 202.202.240.16 -l 2000コマンドを使用して、送信するデータの長さを指定できます。現時点では、Wiresharkキャプチャ(ip.addr == 202.202.240.16でのフィルタリング)を使用して、IPパケットをセグメント化する方法を学習します。たとえば、セグメントフラグ、オフセット
ここに画像の説明を挿入します
、アドレスなどの各パケットのサイズはリクエストは成功したので
ここに画像の説明を挿入します
ここに画像の説明を挿入します
、1480と528の2つのパッケージに変更しました。

問題の
セグメンテーションと再組み立ては、特に伝送パス上のノードまたはルーターによってセグメンテーションが完了した場合、リソースを消費する操作であるため、IPv6ではセグメンテーションが許可されなくなりました。では、IPv6では、ルーターが大きなデータパケットに遭遇した場合、ルーターは何をすべきでしょうか。

直接破棄し、送信者に再送信するよう通知します。
セグメンテーションはIPv6の送信元と宛先でのみ実行できるため、ルーターでは実行できません。データパケットが大きすぎる場合、ルーターはデータパケットを直接破棄します。

実装3はTTLイベントを調べ
ます。IPパケットヘッダーにTTLフィールドがあり、インターネット上でパケットを送信できるホップ数を制限します。通常、値は64、128などに設定されます。

確認実験の部分では、ルート追跡にtracertコマンドを使用しました。原則として、IPパケットのTTL値をアクティブに設定し、最終的な宛先ホストに到達するまで1から徐々に増加します。

tracert www.baidu.comコマンドを使用してトレースしてください。このとき、Wiresharkを使用してパケットをキャプチャし(icmpでフィルタリング)、送信された各パケットのTTLがどのように変更されるかを分析して、ルートトラッキングの原理を理解します。
ここに画像の説明を挿入します
ここに画像の説明を挿入します

問題は
IPv4にありますが、TTLは存続時間として定義されていますが、実際には、ホップ/ノードの数で設定します。TTL値が50のパケットを受信した場合、パケットの送信元からあなたに何ホップを推測できますか?

50ホップ

第三に、トランスポート層

実装1:TCPおよびUDPセグメント構造に精通し、Wiresharkを使用して任意のパケット(tcpでフィルタリング可能)をキャプチャし、送信元ポート、宛先ポート、シリアル番号、確認番号、さまざまなフラグなどのTCPセグメントの構造に精通しているおよびその他のフィールド。Wiresharkを使用してパケットを自由にキャプチャし(udpフィルタリングを使用できます)、送信元ポート、宛先ポート、長さなどのUDPセグメントの構造に精通している必要があります。
ping qige.io

tcpフィルター
ここに画像の説明を挿入します
ここに画像の説明を挿入します
UDPフィルター
ここに画像の説明を挿入します
ここに画像の説明を挿入します


上記の
質問から、UDPヘッダーはTCPよりもはるかに単純であることがわかりますが、送信元ポート番号と宛先ポート番号の両方があります。送信元ポート番号と宛先ポート番号は何に使用されますか?
送信元ポートと宛先ポート:(ポートはデータの送信元(アプリケーション)とデータの宛先(同じアプリケーション)を示すために使用されます)フィールドには16ビットのUDPプロトコルポート番号が含まれ、複数のアプリケーションを許可します。トランスポート層プロトコルとUDPプロトコルは多重化でき、異なるアプリケーションはポート番号によってのみ区別できます。

第四に、アプリケーション層

DNS解決の最初の理解を実装する
1.最初にipconfig / flushdnsコマンドを使用してキャッシュをクリアし、次にnslookup qige.ioコマンドを使用して解決し、Wiresharkを使用して任意のパケットをキャプチャします(dnsでフィルタリングできます)。
2.現在のコンピューターがUDPを使用してデフォルトのDNSサーバーのポート53にクエリ要求を送信し、DNSサーバーのポート53が結果を返すことがわかります。
3.DNSクエリと応答の関連フィールドの意味を理解できます

ここに画像の説明を挿入します
ここに画像の説明を挿入します
ここに画像の説明を挿入します

質問:
同じサイトに対して複数のDNS解決要求が発行されていることに気付く場合があります。理由を考えてみてください。

アクセスするURLにはドメイン名が1つしかないため、サーバーホストは一意ではありません。各サーバーのIPアドレスは異なりますが、ドメイン名は同じです。したがって、発行された解析要求は異なるサーバーに分散されます。

実装2:HTTP要求と応答を理解する
1.ブラウザーを開いてqige.io Webサイトにアクセスし、Wiresharkを使用してパケットをキャプチャします(httpフィルタリングとFollow TCP Streamを使用できます)。Wiresharkのキャプチャをすぐに停止せず、ページが表示されるまで待ちます。が表示されます。接続パケットのキャプチャを解放する期間。
2.キャプチャしたパケットからHTTPリクエストパケットを見つけて、リクエストで使用されているGET、POSTなどのコマンドを確認してください。また、リクエストのヘッダーにあるフィールドとその意味を注意深く理解してください。
3.キャプチャしたパケットからHTTP応答パケットを見つけて、200、304、404などの応答コードを確認してください。また、応答のヘッダーにあるフィールドとその意味を注意深く理解してください。

ここに画像の説明を挿入します
GET
ここに画像の説明を挿入します
POST
ここに画像の説明を挿入します
3。ここに画像の説明を挿入します
ここに画像の説明を挿入します

質問
qige.ioWebサイトのページを更新し、同時にパケットをキャプチャします。304のコード応答が多数見つかります。これは、要求されたオブジェクトが変更されていないことを意味します。ブラウザにローカルにキャッシュされたコンテンツを使用させるだけです。では、なぜサーバーは通常の200応答ではなく304応答に応答するのでしょうか。

サーバーは、現在要求されているリソースの最終変更時刻が今回であることをブラウザーに通知するためです。ブラウザが2回目のリクエストを送信すると、前回リクエストされたリソースがまだ独自のキャッシュにあることをブラウザに通知します。元のリソースが変更されていない場合は、レスポンスの本文を送信する必要はありません。ブラウザから送信された時間に応じて、サーバーは現在要求されているリソースの変更時間と一致していることを検出し、304で応答します。これは、応答本文が送信されていないことを示し、前のキャッシュからフェッチされます。

次に、手順を使用します

1.ライブラリを紹介します

コードは次のとおりです(例):

import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns
import warnings
warnings.filterwarnings('ignore')
import  ssl
ssl._create_default_https_context = ssl._create_unverified_context

2.データを読み込みます

コードは次のとおりです(例):

data = pd.read_csv(
    'https://labfile.oss.aliyuncs.com/courses/1283/adult.data.csv')
print(data.head())

ここで使用されるURLネットワークによって要求されたデータ。


総括する

ヒント:記事の概要は次の
とおりですたとえば、上記は本日お話しする内容です。この記事では、パンダの使用法について簡単に紹介します。パンダには、処理を可能にする多数の関数とメソッドが用意されています。データをすばやく便利に。

おすすめ

転載: blog.csdn.net/aiwr_/article/details/109584554