WireSharkで見るWeb通信講座(TCP/IP編)

前回見たリクエストパケットを、
もう少し詳細に見ていきます。

パケットの全体像は、以下のようになっている。

データの並びは、

(・概要)
・イーサネットヘッダ : Ethernet
・IPヘッダ : Internet Protocol
・TCPヘッダ : Transmission Control Protocol
・HTTPヘッダ : Hypertext Transfer Protocol
(・HTTPデータグラム : Line-based text data)

の順番になっている
OSI参照モデルの下位層から順番になっている。

これらのプロトコルヘッダの情報がそろって初めて、
HTTPの通信が可能になる。

順番に、

〇概要

キャプチャ時に付加されたデータ。
実際にパケットに含まれるわけではないので、
あまり深くは突っ込まないことにする。

キャプチャ上のパケット(フレーム)番号、
タイムスタンプなど。

〇イーサネットヘッダ

イーサネット(Ethernet)の情報を含む部分

まず押さえておきたいところ(というか全部)

・MACアドレス (Source/Destination)
 送信元と宛先のMACアドレス。

・タイプ(Type)
 上位のプロトコルを示すもの。
 IPv4を使っているので0x0800。

 イーサネットのタイプについては↓を参照(外部サイト)
 https://www.infraexpert.com/study/tea13.htm
 フレームフォーマットについても、詳しい説明がある。

〇IPヘッダ

IP(Internet Protocol)の情報を含む部分

まず押さえておきたいところ

・バージョン(version)
 IPv4かIPv6か。今回はIPv4なので、”4″。

・プロトコル(Protocol)
 上位プロトコルを指定。
 この場合はTCPを使っているので6番。

 IPのプロトコル番号については↓を参照
 https://www.infraexpert.com/study/tea11.htm

・IPアドレス(Source/Destination)
 送信元(Source)と宛先(Destination)のIPアドレス。

〇TCPヘッダ

TCP(Transmission Control Protocol)の情報を含む部分

まず押さえておきたいところ

・ポート番号 (Source Port/Destination Port)
 送信元と宛先のポート番号。

 このパケットでは、
 宛先(サーバ側)は、サービスを提供するポート(HTTPは80番)。
 送信元(クライアント側)は、クライアントがランダムに決めた値。

・コントロールフラグ(Flags)
 TCP通信のタイプを示すフラグ。

 Syn、Ack、Finなど、
 TCP通信において、このパケットの役割を表すもの。
 フラグが立っている場合(“1″の場合)はその役割を含む。

 TCPのコントロールフラグについては↓
 https://www.infraexpert.com/study/tcpip8.html

・Sequence/Acknowledgment number
 TCP通信の通し番号みたいなもの。
 到達確認や再送制御に用いる。

 深く突っ込むと結構難しいので、
 とりあえずこの辺で終わり。

〇HTTPヘッダ

前回見たので省略。

〇HTTPデータグラム

(※リクエストにはなし。レスポンスのみ。)

実際に受け渡しする目的のデータ。
これも、前回見たので省略。

以上、HTTP通信本体のパケットを見てきました。
これら下位層のプロトコルヘッダ内の情報によって、
通信がクライアントとサーバーの間を行き来します。

次回は、この通信を成立させるまでの、
通信フローを見ていきます。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です