投稿

7月, 2021の投稿を表示しています

7月26日(月)2コマ目

イメージ
今日、やったこと シーケンス番号、確認応答番号のテスト パケット解析(主にTCP) 今日のテスト 解答例を挙げておきます。 図 シーケンス番号、確認応答番号 確認テスト1 正解例 今日のホワイトボード ホームページアクセスに使われるHTTP(TCPを利用する)のやりとりのパケットを解析しました。 ①No.6コネクション確立要求 このパケットは172.16.14.160から172.16.8.10へのコネクション確立要求のパケットです。 図 No.6のパケット コネクション確立 TCPはデータをやり取りする前に、お互いコネクション確立を行います。 まずはクライアント側(172.16.14.160)からサーバー側(172.16.8.10)へコネクション確立要求(TCPヘッダのコントロールフラグ中のSYNを1)します。 最大セグメント長 このコネクション確立時に、TCPヘッダのオプションで最大セグメント長を送信します。 最大セグメント長は1パケットで送信可能なデータサイズの上限です。送信データがこれ以上場合は分割して送信することになります。 ②No.7コネクション確立要求 No.6を受信したサーバー側(172.16.8.10)からクライアント側(172.16.14.160)へコネクション確立要求を送信します。 図 No.7のパケット ACKビット=1 このパケットはコントロールフラグのACKが1になっています。 ACKが1なら「確認応答番号が有効」です。クライアント側へ「1バイト目送って!」と伝えています。 最大セグメント長の決定 また、コネクション確立要求なので、最大セグメント長も送信しています。 今回は両方とも同じ1460バイトです。もし異なる場合は小さいほうに合わせます。 データサイズが1460バイトを超える場合は、複数のパケットに分割して送信されます。 ③No.8 No.6からこのNo.8までのパケットでコネクション確立を行っています。 図 No.8のパケット ④No.9クライアントからサーバーへリクエスト クライアントからサーバーへ「ホームページを見せて」とリクエストしています。 図 No.9のパケット ホームページのリクエスト このパケットのTCPヘッダの後ろにはHTTPが続きます。(宛先ポート番号が80より) ホームページのデータのやり取りはHTTPを使います...

7月21日(水)1コマ目

イメージ
今日、やったこと TCPのシーケンス番号、確認応答番号 今日のホワイトボード データ、受信応答が届かない TCPは 送信側は受信側にシーケンス番号で何バイト目のデータか 受信側は送信側に確認応答番号で何バイト目まで受信できているか を伝えています。 もし、データを送信しても一定時間中に受信応答が返信されなかった場合、再度データを送信します(再送)。 ただ、受信応答が返信されない場合、以下の2パターンの理由があります。 データが受信側に届かなかった データは受信し、受信応答を送信したが、送信側に届かなかった いずれもデータが再送されますが、以下のように処理されます。 図 2種類のパケッ再送 TCPシーケンス番号、確認応答番号 確認演習その2 データ、受信応答が受信できなかった場合のパケットのやり取りを推測します。 問1 図 受信応答が届かなかった 問2 図 データが届かなかった TCPシーケンス番号、確認応答番号 確認テスト1 こちらはすべてのパケットが受信できた場合のやり取りを推測しました。 問1 図 問1 問2  図 問2 TCPコネクション確立、パケット分割のサンプル パケットキャプチャツールを使って、実際のパケットのやり取りをキャプチャした結果です。 これらのキャプチャ結果からTCPがやっていることを確認します。 まずはコネクション確立に活躍するTCPヘッダ内のコントロールフラグです。6ビットそれぞれに役割がありますが、コネクション確立にはSYNとACKが使われます。 図 コントールフラグ 次回は シーケンス番号、確認応答番号のテストをします。

7月19日(月)4コマ目

イメージ
今日、やったこと TCPのシーケンス番号、確認応答番号 パケット未着時のシーケンス番号、確認応答番号   今日のホワイトボード 基本的なシーケンス番号と確認応答番号の変化 前回配布した「TCPシーケンス番号、確認応答番号 演習 その1」の問2以降をやりました。 問2 問1はデータ送信はAだけでしたが、問2ではBもデータを送信しています。 No.2、No.3はBが連続してAへパケットを送信していますが、 No.2のパケットはNo.1の受信応答 No.3のパケットはAへデータ送信 です。 図 演習1の問2 問3 問2と同じようにBもAへデータ送信しています。 No.2のパケットは No.1の受信応答 データ送信 の2つの役割があります。 同様に、No.3のパケットも No.2の受信応答 データ送信 の2つの役割があります。 図 演習1の問3 問4 特にややこしいことはないかと思います。 図 演習1の問4 パケット未着の場合 送信したパケットは必ず相手に届く保証は残念ながらありません。 そのため、TCPは以下をやっています。 データ送信後、一定時間の間に相手から受信応答がなければ再送する 同じシーケンス番号のパケットを複数回受信した=受信応答が未達と判断し破棄する この仕組みで相手に確実にデータを届ける+シーケンス番号で受信データを確実にもとの状態に戻すことができます。 「TCPシーケンス番号、確認応答番号 演習 その2」をやりました。 問1 No.4はNo.3と同じパケット(シーケンス番号、データサイズが同じ)です。 これは以下の2種類のシナリオが考えられます。 [シナリオ1]No.3のパケットはBにたどり着かなかった ①AがNo.3のパケットを送信した。 ②送信後、一定時間が経過しても受信応答がBから届かなかった。 ③そのため、AはBへNo.3と同じパケット(No.4)を送信(再送)した。 [シナリオ2]BはNo.3の受信応答(No.4)を送信したがAにたどり着かなかった ①AがNo.3のパケットを送信した。 ②(書いてないけど)BはAへNo.3の受信応答を送信したが、Aにたどり着かず。 AはNo.3送信後一定時間待ってもBから受信応答が来なかった。 ③そのため、AはBへNo.3と同じパケット(No.4)を送信(再送)した。 図 演習2の問1 問2 ぱっと見、...

7月15日(木)1コマ目

イメージ
前回のテスト イーサネット、ARP、IPのテストをしました。 解説です。 PCやルーターでの処理 1.IPがルーティング 次に送信する宛先が決まる。が、IPアドレスで知らされる。 2.ARPでIPアドレスをMACアドレスへ イーサネットは送信先のMACアドレスが必要。 ARPがIPアドレスからMACアドレスへ。 ①まず、ARPテーブルチェック ここに対象データがあれば(IPアドレスとMACアドレスの組み合わせ)、そのMACアドレスを使う。 なければ、②へ。 ② ARPリクエスト送信 ARPリクエストパケットの各ヘッダは以下のとおり。 イーサネットヘッダ 宛先MACアドレス FF:FF:FF:FF:FF:FF 送信元MACアドレス 送信元のMACアドレス ARPヘッダ ターゲットIPアドレス MACアドレスを調べたい対象のIPアドレス ③ARPリクエストを受信したら ARPヘッダ内のターゲットIPアドレスをチェック。もし自分が問い合わされている場合はARPレスポンス送信。ARPレスポンスパケットの各ヘッダは以下のとおり。 イーサネットヘッダ 宛先MACアドレス ARPリクエスト送信元のMACアドレス 送信元MACアドレス 送信元のMACアドレス ARPヘッダ ターゲットMACアドレス 自分のMACアドレス(これを通知したい) ④ARPレスポンスを受信すると 調べたいMACアドレスの取得成功。 ARPテーブルに保存する。 3.イーサネットがパケット送信 データパケットを送信できる。 イーサネットヘッダ 宛先MACアドレス ARPで取得した宛先のMACアドレス 送信元MACアドレス 送信元のMACアドレス IPヘッダ 宛先IPアドレス データを届けたい相手のIPアドレス 送信元IPアドレス データ送信元のIPアドレス ...

7月12日(月)2コマ目

イメージ
今日、やったこと イーサネット、IP、ARPのテスト TCP,UDP 今日のホワイトボード 4階のプロトコル 利用目的別にいろいろなプロトコルがある。 やりとりするデータが異なるため、やりとりの仕方も異なる。 そのため利用目的別にプロトコルが存在する。 3階のプロトコル 2階のIPと4階のプロトコルのつなぎ役をするのが3階のプロトコル。 ①イーサネットがパケット受信、宛先MACアドレスチェックすると自分宛  =>IPへ渡す ② IPが宛先IPアドレスチェックすると自分宛  =>3階のプロトコル(TCPまたはUDP)に渡す ③3階のプロトコルは宛先ポート番号から4階のプロトコルを特定  ポート番号と4階のプロトコルは対応付けられている(ウェルノウンポート)。 3階にはTCPとUDPの2種類あるが、4階のプロトコルによって使い分け。 図 プロトコル階層とTCP、UDP 図 TCPは 図 UDPは ポート番号 TCP、UDPヘッダには送信元ポート番号と宛先ポート番号がある。 あらかじめ決められたポート番号(ウェルノウンポート)を使う場合と、空いているポート番号を使う場合があるので注意。 クライアント=>サーバー TCP/UDP 送信元ポート番号 宛先ポート番号 TCP 空いているポート番号 ウェルノウンポート UDP ウェルノウンポート ウェルノウンポート サーバー=>クライアント TCP/UDP 送信元ポート番号 ...

7月5日(月)2コマ目

イメージ
今日、やったこと イーサネット、ARP、IP 今日のホワイトボード 前回から引き続き、データ送信パケット送出時にやりとりされるパケットを推測します。 各機器(PC、ルーター)ではパケット受信後、以下の処理を行い、パケットを送信します。 図 パケット受信から送信までの処理 演習2 ネットワークは以下のとおり。 図 演習2 ネットワーク図 ホストAからホストCへデータを送信します。 その際、下図のやり取りが行われます。 図 やり取りされるパケット 演習3 その1 ネットワークは以下のとおり。 図 演習3 ネットワーク図 ホストAからホストDへデータ送信します。 その際、以下のやり取りが行われます。 図 やり取りされるパケット 演習3 その2 ネットワークは「演習3 その1」と同じです。 ホストDからホストBへデータ送信します。 その際、以下のやり取りが行われます。 図 やり取りされるパケット 次回は テストします。

7月2日(金)2コマ目

イメージ
今日、やったこと イーサネット、IP、ARP 今日のホワイトボード 以下のネットワークでホストAからホストCにデータ送信する際にやりとりされるパケットを推測する。 図 ネットワーク図 ホストAからいきなりホストCあてのパケットを送信するわけではない。 場合によってはMACアドレス取得のためのARPリクエストやARPレスポンスが送受信される。 ホストAでの処理 図 ホストAでの処理 1.IPがルーティング 宛先はホストC、ホストAのルーティングテーブルから次に送る宛先はルーターのポート1に決まる。 2.ARPでポート1のMACアドレス取得 イーサネットがパケットをルーターのポート1に送信するにはルーターのポート1のMACアドレスが必要。ARPでIPアドレスからMACアドレスへ変換する。 ①ARPテーブルチェック 別紙のホストAのARPを見るとルーターのポート1(192.168.10.1)の情報はない。 よって、ARPリクエストを送信してMACアドレスを調べる。 ②ARPリクエスト送信  ホストAから一番最初に送信されるパケットはARPリクエストになる。 ARPリクエストのイーサネットヘッダは イーサネットヘッダ 宛先MACアドレス FF:FF:FF:FF:FF:FF 送信元MACアドレス ホストA のようになっている。 ※ FF:FF:FF:FF:FF:FF はMACアドレス版ブロードキャストアドレス(全PCが対象) ③ルーターがARPリクエストを受信すると ARPリクエストパケットの宛先MACアドレスはブロードキャストアドレスになっているため、ルーターも受信する。 ルーターは自分が問い合わされていることを確認すると、ポート1のMACアドレスを伝えるARPレスポンスを送信する。 ④ホストAがARPレスポンスを受信 ルーターが送信したARPレスポンスをホストAが受信することで、ホストAはルーターのポート1のMACアドレスを取得できる。 ポート1のIPアドレスとMACアドレスはARPテーブルに追加する。 3.ホストAがホストCあてデータを送信 ルーターのポート1のMACアドレスを取得できたた...