連載第3回
TCP/IPアレルギー撲滅ドリル【下位レイヤ編】

分かるスライディングウィンドウ、
見えるEthereal

福永勇二
インタラクティブリサーチ
2004/3/13

素朴な疑問
■「言葉」というカタチから入る
  1. カタチから入るなんて邪道です!
  2. TCPの本に「連続送り」が出てきません
  3. 「シーケンス番号」って何ですか?
  4. じゃあ「肯定確認応答(ACK)」は?
■スライディングウィンドウの謎に迫る
  1. スライディングウィンドウの謎に迫る
  2. スライディングウィンドウ! そろそろギブアップです
  3. スライディングウィンドウをやさしく説明してください
  4. スライディングウィンドウのほかのメリットは?

■生のTCPに触れてみよう

  1. ホンモノのTCPを見てみたいのです
  2. どうやってプロトコルアナライザを手に入れますか?
  3. 組み込む手順を教えてください
  4. どうやって使うんですか?
  5. 画面の見方を教えてください
  6. シーケンス番号はどこにありますか?
  7. Etherealを使うときの注意事項は?
  8. Etherealを手に入れた私はTCP制覇ですか?
 生のTCPに触れてみよう

●ホンモノのTCPを見てみたいのです

 ここまでTCPのキホン的な仕組みと、そしてJasper(参照:TCPの迷宮を さまよってみませんか?)を使ったシミュレーション画面を見てきました。しばらく仮想世界の話が続いたので、少し頭も疲れてきたかもしれません。また、ホンモノのTCPがどんなふうになっているのか、気になる方も多いと思います。そこで、ここからは実物のTCPを観察する方法を紹介したいと思います。

 ネットワークを流れているデータを拾い出し、人間の目に見える形で表示するソフトは、普通「プロトコルアナライザ」とか「パケットキャプチャソフト」と呼びます。こういったソフトウェアは、主にネットワークにトラブルが起こったときや、ソフトウェアの開発をしているときに使用します。また、このページのようにTCPを学習するときにも、このプロトコルアナライザは学習の助けになります。

●どうやってプロトコルアナライザを手に入れますか?

 Etherealというプロトコルアナライザが、無料で利用できるうえに、機能も充実していますので、これを使ってみましょう。

 まずhttp://www.ethereal.com/download.htmlに接続し、「Windows 98/ME/2000/XP/2003 Installers」の「HTTP」列にあるJapanをクリックします。現れたページの下部には、ファイルのリストがあるはずです。ここにある、ethereal-setup-xxx.exeを右クリックし、「対象をファイルに保存」を選択してください。ちなみに執筆時点ではethereal-setup-0.10.2.exeでした。

 フォルダの指定が現れたら、適当なフォルダを指定します。ファイルのダウンロードが始まり、指定フォルダにファイルが保存されるはずです。

 同様の手順でWinPcap_xxx.exeもダウンロードしておきます。こちらは執筆時点でWinPcap_3_0.exeでした。

 なおEtherealのマニュアルが必要な方はhttp://www.ethereal.com/docs/から入手できます。ただし英語版です。

注意: 本記事ではWindows版を想定していますが、Unix版をご使用の方はご参照ください
セキュリティ問題を修正するためのアップデートが必要です
CIAC Bulletin O-105 Multiple Vulnerabilities in Ethereal 0.10.2 http://www.ciac.org/ciac/bulletins/o-105.shtml
パッケージによるアップデートは、各ディストリビューション のアップデート情報をご覧ください
【例】(日本語)Red Hat セキュリティアドバイス RHSA-2004:136-09 セキュリティ問題を修正したEtherealのアップデート パッケージ
http://www.jp.redhat.com/support/errata/RHSA/RHSA-2004-136J.html

●組み込む手順を教えてください

 まず先にWinPcapを組み込みます。これはネットワークからデータを拾い出すための機能を追加するプログラムです。ダウンロードしておいたWinPcap_3_0.exeをダブルクリックして実行します。組み込みは基本的に「Next」をクリックしていけば進みます。「License Agreement」のページだけは「Yes, I agree with all the terms of this license agreement」にチェックを付けてから「Next」をクリックします。難しいところはないでしょう。

 次にEthereal本体を組み込みます。ethereal-setup-0.10.2.exeをダブルクリックするとインストーラが立ち上がります(画面1)。

画面1 Etherealを起動したところ

こちらもインストールはカンタンで「Next」または「I Agree」または「Install」をクリックしていけば、特別な操作をしなくても組み込みは終了します。

●どうやって使うんですか?

 「スタート」→「プログラム」→「Ethereal」→「Ethereal」と選ぶと、Etherealが起動します(画面1)。この画面で「Capture」→「Start」を選択します。すると画面2が現れますので「OK」をクリックしてください。これでネットワークを流れる情報の拾い出しが始まります。

画面2 キャプチャ条件の指定。とりあえずそのままで

 拾い出しスタートと同時に画面3が現れます。これは、ネットワークから拾い出した情報のうち、どんな種類のものがどの程度あったかを示すものです。

画面3 記録した通信の種類。Webアクセスなら大部分がTCP

 ここでブラウザを立ち上げ、www.atmarkit.co.jpにアクセスしてみました。するとTCPのカウントがどんどん上がり、WebページへのアクセスはTCPであることを確認できます。このとき、Etherealはwww.atmarkti.co.jpへのアクセスでやりとりした内容を拾い出して、次々に記録しています。

 画面の「Stop」をクリックすると、Etherealはデータの拾い出しを終わり、そこまでに記録した通信内容を時間順に表示します(画面4)。

画面4 記録した通信内容を一覧表示したところ

●画面の見方を教えてください

 画面は3つに分かれています。一番上が時間順にデータを並べたもので、中間がその中身を文字で表したもの、そして一番下が生のデータで表したものです。なかなか難しそうな画面ですが、こんな画面を見ていると、少し、TCPに近づいた気もしてきます。

 通信の概要を大ざっぱに理解するためには、まず一番上の画面を見ます。左から時間、送信元のIPアドレス、あて先のIPアドレス、プロトコル、通信内容の概略が表示されています。

 ここでNo.1、2、3をジーっと眺めてみてください。このやりとり、どこかで見たことがありませんか? そうTCPで通信をはじめるときのやりとりです(3ウェイハンドシェイクといいます)。自分のPC(192.168.1.5)が、AtmarkITのWebサーバ(211.4.250.170)に通信の開始を依頼してACKが戻ってきて、逆にAtmarkITのWebサーバからも自分のPCに向けて通信の開始要求がやって来ています。ポイントは、そう「SYN」でしたね。実際の通信がお話どおりに進んでいるのを見ると、ちょっとうれしくなってきます。

 なお、Etherealはネットワークの情報を原則すべて拾い出すので、ほかのコンピュータ同士の通信が紛れ込んで、この画面どおりにならないこともあります。

●シーケンス番号はどこにありますか?

 では前半で登場したシーケンス番号はどこにあるでしょうか? No.4のデータで見てみましょう。1番目のデータのやりとりです。

 画面上の部分でデータを選択すると、その詳しい内容が画面中間に表れます。この中の「Sequence number:1」という部分があります。これがシーケンス番号を示しています。この通信はシーケンス番号1番から始まることが分かります。

 なお、この通信で何を送っているかは、画面下の生データを見ると分かります。いろんな情報に交ざって、「GET / HTTP/1.1……」という部分が見えます。これはブラウザがWebサーバに対して、そのページのHTMLファイルを送るようにリクエストしています。詳しくはHTTPのお話(HTTP語でWebブラウザとしゃべってみよう )を参照してみてください。

●Etherealを使うときの注意事項は?

 Etherealはネットワークから情報を拾い出すツールですので、悪用すれば、ネットワークをのぞくような使い方もできてしまいます。そのため、特に会社などの組織では、利用を制限したり、利用者を自動的に発見して警告したりするような仕組みが導入してある場合があります。自宅以外の場所で試すときには、使ってもいいのかどうか、あらかじめネットワーク管理者に相談してみてください。

●Etherealを手に入れた私はTCP制覇ですか?

 いえいえ。ここまでに出てきたTCPの話は、まだごくさわりの部分だけです。それにEtherealは「個々の情報を詳しく見る」のは得意ですが、全体像を把握するのにはあまり向きません。

 次回からは、これまでと同様に身近な例でTCPの働きを説明し、JasperでTCP通信の流れを確認、その後でEtherealで通信内容の細かい部分を見るという3段構えで、TCPのややこしい部分に少しずつ分け入っていきたいと思います。お楽しみに。

 

スライディングウィンドウの謎に迫る

TCP/IPアレルギー撲滅ドリル【下位レイヤ編】(3)目次
1  「言葉」というカタチから入る
2  スライディングウィンドウの謎に迫る
3  生のTCPに触れてみよう

関連リンク
  連載:TCP/IPアレルギー撲滅ドリル【超実践編】(上位レイヤ編)
連載:インターネット・プロトコル詳説

連載:ルータの仕組みを学ぼう
ホストのネット接続は正しく行われているか? 〜netstatによるネットワーク設定の確認〜

「Master of IP Network総合インデックス」


Master of IP Network フォーラム 新着記事
@ITメールマガジン 新着情報やスタッフのコラムがメールで届きます(無料)

注目のテーマ

Master of IP Network 記事ランキング

本日 月間