投稿

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

1月22日(金)1コマ目

イメージ
今日、やったこと パケット解析(HTTP) 今日のホワイトボード 先週はイーサネットヘッダ、IPヘッダ、TCPヘッダを解析しました。 今日はその続きでHTTPを解析します。 HTTP部の基本 今までのイーサネットヘッダ、IPヘッダ等はビット単位でフォーマットが決まってましたが、HTTPは文字列データと区切り(CR+LF)の繰り返しで構成されています。 文字列データは1文字ずつASCIIコードに変換されています 区切りはCR(ASCIIコードの0x0d)とLF(ASCIIコードの0x0a)の2バイトです 図 HTTP部の構造 HTTP部その1 1つ目の区切りまで1バイトづつ、ASCIIコード表に従って、文字に変換すると下図のようになりました。 図 HTTP部その1(リクエストライン) HTTPの1つ目のデータはリクエストラインまたはステータスラインのいずれかです。 クライアント=>サーバー リクエストライン サーバー=>クライアント ステータスライン まず、このパケットのTCPヘッダの宛先ポート番号はHTTPのウェルノウンポートである80です。サーバーはこの80ポートでクライアントからのリクエストを待ちます。よって、混んパケットはクライアントからサーバーへ送信したパケットです。 よって、1つ目のデータはリクエストラインです。 このリクエストラインではクライアントからサーバーへ送信する メソッド が書き込まれています。 HTTP部その2 同じように1バイトずつASCIIコード表に従って文字に変換すると下図のようになりました。 図 HTTP部その2(リクエストヘッダ) 「ヘッダフォーマット集」の17ページから、リクエストラインの次はリクエストヘッダです。 フィールド名はHOST、フィールド値は172.16.8.10です。 HTTP部その3 「ヘッダフォーマット集」の17ページから、リクエストヘッダの次は一般ヘッダです。 フィールド名はConnection、フィールド値はkeep-aliveです。 図 HTTP部その3(一般ヘッダ) まとめると このパケットのHTTP部をまとめると下図のようになります。 図 HTTP部をまとめると HT...

1月15日(金)1コマ目

イメージ
今日、やったこと 確認テスト(TCP) HTTP 今日の確認テスト 3つのパケットの穴埋め問題です。 パケット1 解析すると、以下がわかります。 図 パケット1 ① 図 パケット1 ② イーサネットヘッダ タイプ:0x0800から上位プロトコルはIP IPヘッダ パケット長:0x5からIPヘッダは20バイト プロトコル番号:0x06から上位プロトコルはTCP 送信元IPアドレス:172.16.4.200 宛先IPアドレス:①.②.③.④ TCPヘッダ 送信元ポート番号:⑤⑥ 宛先ポート番号:80 シーケンス番号:⑦⑧⑨⑩ 確認応答番号:0 ヘッダ長:0xaから40バイト コントロールフラグ:SYN=1 以上から172.16.4.200(ポート番号⑤⑥)から①.②.③.④(ポート番号80)へのコネクション確立要求(SYN=1)のパケット。 172.16.4.200のシーケンス番号初期値は⑦⑧⑨⑩。 パケット2 解析すると、以下がわかります。 図 パケット2 ① 図 パケット2 ② イーサネットヘッダ タイプ:0x0800から上位プロトコルはIP IPヘッダ パケット長:0x5からIPヘッダは20バイト プロトコル番号:0x06から上位プロトコルはTCP 送信元IPアドレス:172.16.8.3 宛先IPアドレス:⑪.⑫.⑬.⑭ TCPヘッダ 送信元ポート番号:0x0050(10進数では80) 宛先ポート番号:0x8ec6(10進数では36550) シーケンス番号:⑮⑯⑰⑱ 確認応答番号:⑲⑳㉑㉒ ヘッダ長:0xaから40バイト コントロールフラグ:ACK=1、SYN=1 以上から172.16.8.3(ポート番号80)から⑪.⑫.⑬.⑭(ポート番号36550)へのコネクション確立要求(SYN=1)+ACK=1のパケット。 172.16.8.3のシーケンス番号初期値は⑮⑯⑰⑱。 パケット3 解析すると、以下がわかります。...

1月8日(金)1コマ目

イメージ
今日、やったこと TCPのパケット解析 まとめ 今日のホワイトボード パケット3の解析 年末に解析したパケット1、パケット2につづく、パケット3の解析を行いました。 イーサネットヘッダ とくにこれといったところはありません。 タイプが0x0800なので、上位プロトコルはIPです 。 図 イーサネットヘッダ IPヘッダ IPヘッダは可変長です。 ヘッダ長でIPヘッダの長さがわかります 。 またプロトコル番号から上位プロトコルがわかります。このパケットの プロトコル番号は0x6なので、上位プロトコルはTCPです 。 図 IPヘッダ TCPヘッダ TCPヘッダも可変長です。ヘッダ長でTCPヘッダの長さがわかります。 コントロールフラグのACK=1なので、確認応答番号が有効です。 図 TCPヘッダ 3つのパケットのまとめ 3つのパケットはコネクション確立時にやりとりされるパケットでした。 コネクション確立時にはいろいろな初期値をやり取りしています。 図 3つのパケットのまとめ SYN=1、ACK=1の意味 図 SYN=1、ACK=1の意味 次回はテストをします。

12月25日(金)1コマ目

イメージ
今日、やったこと 確認テスト(ARP、ICMPパケット送信順、解析) TCPパケット解析 今日のテスト 解答例をあげときます。 図 問題 図 解答例 ホストAにてホストBへpingを実行した際にやりとりされるパケットに関する問題です。 やりとりされるパケットをすべて挙げると以下のようになります。 順番 送信元 宛先 どんなパケット? 1 ホストA ホストB ホストBのMACアドレス取得のためARPリクエスト 2 ホストB ホストA 上記(順番:1)のARPリクエストに対するARP応答 3 ホストA ホストB ホストAからホストBへのICMPエコー要求(シーケンス番号:1) 4 ホストB ホストA 上記(順番:3)のICMPエコー要求に対するエコー応答 5 ホストA ホストB ホストAからホストBへのICMPエコー要求(シーケンス番号:2) 6 ホストB ホストA 上記(順番:5)のICMPエコー要求に対するエコー応答 7 ホストA ホストB ホストAからホストBへのICMPエコー要求(シーケンス番号:3) 8 ホストB ホストA 上記(順番:7)のICMPエコー要求に対するエコー応答 問題の各パケットと上記の表のパケットは以下のように対応付けることができます。 上記のパケット(順番) 問題のパケット 1 6 2 3 3 2 4 7 5 5 6 8 7 1 8 4 パケットの送信順は以下のとおりです。 6 -> 3 -> 2 -> 7 ->...