TCP/IPアレルギー撲滅ドリル【総まとめ編6回目】Webアクセス中のHTTPパケットの中身をみる
|
|
Webアクセスをのぞき込む |
TCP/IPアレルギー撲滅ドリルの総まとめ編では、パケットのうごきをおさらいするためのツール、Etherealを使って、arpとDNSの動きを見てきました。ツールのメリットや使い方を知りたい方は「Etherealでパケットの実物を捕まえて中身をのぞき込もう」を、IPアドレスからMACアドレスを得るときに使うプロトコルの「arp」の動きを確認されたい方は、「Etherealでarpパケットをのぞき込もう」を、DNSへの問い合わせと回答のやりとりをのぞきたい方は、「DNSへの問い合わせをEtherealでのぞき込む」を参照してください。一連のシリーズの説明は今回のHTTPパケットでおしまいです。さあ、気になっているHTTPプロトコルの中身を見てみましょう。
HTTPはWebアクセスに使うプロトコルです。Webサーバに対して、見たいページのhtmlを要求したり、またデータをアップロードすることができます。
・HTTPについてはHTTP語でWebブラウザとしゃべってみようを参照してください |
画面1でHTTPでのやりとりを見て取れます。No.4は192.168.1.5(観察対象PC)から210.131.249.57(www.atmarkit.co.jp)に送ったHTTPコマンドです(E)。またNo.6は210.131.249.57から戻ってきたレスポンスです(F)。
画面1 HTTPでのやりとり |
画面2がHTTPコマンドを送るパケットの中身です。
画面2 HTTPリクエストの内容(図クリックで拡大表示) |
画面2は図1の(E)-4のパケットを表しています。また画面2の左端の記号(E)-1〜(E)-4は、図1の同じ記号で表した各処理段階に対応します。
図1 HTTPコマンドの流れ |
パケット内容を見てみます。イーサヘッダのSourceは00:0d:0b:26:36:3d(192.168.1.5)、Destinationは00:80:87:96:59:e1(192.168.1.1)となっています。一方、IPヘッダではSourceが192.168.1.5、Destinationが210.131.249.57になっており、両者は一致していません。これはなぜでしょうか?
答えは210.131.249.57がほかのネットワークのコンピュータであることによります。同じネットワークにないコンピュータにあてたパケットは、あて先IPアドレスとは無関係に、一般にデフォルトルータに送り届けなければなりません。そのためパケットの配送に直接関係するイーサヘッダでは、あて先にデフォルトゲートウェイである192.168.1.1が設定されているわけです。
このほか、IPヘッダのProtocolがTCPとなっていて、上位プロトコルがTCPであることを読み取れます。
TCPヘッダの中には、TCPのところで説明したキモがいくつか読み取れます。Destination portはHTTPコマンドを送るポートの番号です。HTTPは普通80番です。Sequence numberはTCPがデータに付与した番号で、これを使ってデータの到着や再送を管理します。Acknowledgement numberは肯定応答を相手に伝えるときに番号を格納するフィールドです。またWindow sizeはTCPのウィンドウサイズを表しています。
またHTTPコマンドの中では、コマンドがGET(Request Method: GET)、アクセスするロケーションが/fnetwork/rensai/tcp10/03.html(Request URI: /fnetwork/rensai/tcp10/03.html)、リクエストバージョンがHTTP/1.1(Request Version: HTTP/1.1)、ホスト名がwww.atmarkit.co.jp(Host: www.atmarkit.co.jp)であることが読み取れます。そのほか、Cookie情報やユーザーエージェントなども送っています。
・ほかのネットワークとの通信についてはルータ経由の場合のリクエスト送信の図解を参照してください ・シーケンス番号については「シーケンス番号」って何ですか?を参照してください ・肯定確認応答についてじゃあ「肯定確認応答(ACK)」は?およびここが難関! 分かりやすく説明してくださいを参照してください ・ウィンドウサイズについては忙しさを知らせる方法を教えてくださいを参照してください ・HTTPのメッセージについてはサーバとはどんなメッセージをやりとりするんですか?を参照してください |
画面3はWebサーバから送り返されたHTTPの応答パケットの中身です。
画面3 HTTP応答の内容 |
画面3は図2の(F)-4のパケットを表しています。また画面3の左端の記号(F)-1〜(F)-4は、図2の同じ記号で表した各処理段階に対応します。
図2 HTTPコマンドの流れ |
パケットの中身を見ましょう。このパケットは、ほかのネットワークにあるサーバからの応答なので、イーサヘッダのSourceはデフォルトゲートウェイを表す00:80:87:96:59:e1(192.168.1.1)になっています。一方、IPヘッダではSourceは210.131.249.57となっており、要求パケットの場合と同様に、両者は一致しません。なお、あて先を表すDestinationはどちらも自分自身が指定されています。またIPヘッダのProtocolにはTCPが指定されています。
TCPヘッダではSource portが80であることが読み取れます。これは80番に送ったコマンドへの応答が80番から送られてくることを意味しています。またコマンドを含んでいたパケットと同様にSequence number、Acknowledgement number、Window sizeを見て取ることができます。
HTTPの応答を見ると、まずステータスコードが正常(Response code: 200)となっていて、正しくデータを取得できたことを表しています。またこのほかに、送り返したデータのタイプ(Content-Type: text/html)や日付などが含まれています。
なお、返送されてきた結果(html)はこのパケットに入り切らなかったため、次のパケット以降に順次送られています。
・HTTPのステータスコードについてはWebサーバが送ってきた結果はどうやって見ればいいんですか?を参照してください |
今回で、アレルギー撲滅ドリル【総まとめ編】はおしまいです。これまで図で説明してきたパケットの流れを、実際のパケットの中身で見てゆきました。、ボンヤリしていたものが、少しでもはっきり見えてきたら幸いです。
関連リンク | |
連載:TCP/IPアレルギー撲滅ドリル【超実践編】(上位レイヤ編) 連載:TCP/IPアレルギー撲滅ドリル【超実践編】(下位レイヤ編) 連載:インターネット・プロトコル詳説 連載:ルータの仕組みを学ぼう ホストのネット接続は正しく行われているか? 〜netstatによるネットワーク設定の確認〜 |
「Master of IP Network総合インデックス」 |
- 完全HTTPS化のメリットと極意を大規模Webサービス――ピクシブ、クックパッド、ヤフーの事例から探る (2017/7/13)
2017年6月21日、ピクシブのオフィスで、同社主催の「大規模HTTPS導入Night」が開催された。大規模Webサービスで完全HTTPS化を行うに当たっての技術的、および非技術的な悩みや成果をテーマに、ヤフー、クックパッド、ピクシブの3社が、それぞれの事例について語り合った - ソラコムは、あなたの気が付かないうちに、少しずつ「次」へ進んでいる (2017/7/6)
ソラコムは、「トランスポート技術への非依存」度を高めている。当初はIoT用格安SIMというイメージもあったが、徐々に脱皮しようとしている。パブリッククラウドと同様、付加サービスでユーザーをつかんでいるからだ - Cisco SystemsのIntent-based Networkingは、どうネットワークエンジニアの仕事を変えるか (2017/7/4)
Cisco Systemsは2017年6月、同社イベントCisco Live 2017で、「THE NETWORK. INTUITIVE.」あるいは「Intent-based Networking」といった言葉を使い、ネットワークの構築・運用、そしてネットワークエンジニアの仕事を変えていくと説明した。これはどういうことなのだろうか - ifconfig 〜(IP)ネットワーク環境の確認/設定を行う (2017/7/3)
ifconfigは、LinuxやmacOSなど、主にUNIX系OSで用いるネットワーク環境の状態確認、設定のためのコマンドだ。IPアドレスやサブネットマスク、ブロードキャストアドレスなどの基本的な設定ができる他、イーサネットフレームの最大転送サイズ(MTU)の変更や、VLAN疑似デバイスの作成も可能だ。
|
|