連載第1回
|
|
TCPをよく知るための |
上位プロトコル編では、メッセージのやりとりを見て、自分の手で試してみるのにtelnetを利用しました。こういったことができたのは、上位プロトコルの多くが、文字を使ったコマンドを使っているからです。
しかしTCPは、上位プロトコルの情報、例えば文字を伝えるための仕組みですから、それ自体の様子をtelnetで見ることはできません。また、その働きが複雑なので、簡単に手動で試してみるのもなかなか大変です。これは例えば、年賀状は自分で書いてみることもできるけれど、郵便物の収集や配達は自分では試してみることが難しいのと似ているかもしれません。
そんなちょっと扱いにくいTCPですが、その動く様子を目で見てスンナリ理解できそうな方法がありました。それはTCPシミュレータというものを使う方法です。
TCPシミュレータは、TCPの通信の様子を模擬的に実行する、つまりまねっこして、人間が見やすい形に表示してくれるプログラムです。まねっことはいうものの、その動きはホンモノと同じですから、その様子を見れば、ホンモノのTCPの動作をちゃんと見ることができます。
まねっこですから、気になるところがあれば、思うままに動きを止めて、じっくり観察することもできます。必要なら、録画されたビデオのように、自由自在に前に戻ったり、先に進んだりすることもできます。どうでしょう?
自分が納得するまで、じっくり通信の様子を眺めることができれば、TCPの理解も進みそうでしょう?
この記事で利用するTCPシミュレータは、英国STIRLING大学で開発された「Jasper」と呼ばれるプロトコルシミュレータです。このプログラムはJavaで書かれていて、Windowsはもちろん、MacやLinuxなど大部分のOSで動作するようになっています。なかなかのスグレモノなのに利用料はかかりません。ありがたい限りです。
利用には、http://www.cs.stir.ac.uk/~kjt/software/comms/comms.htmlから「Jasper」のソースファイル(執筆時はjasper-1.3.tar.gz)をダウンロードします。Winzipなどを使ってアーカイブを展開したら、jasperフォルダの中のhtmlフォルダにあるindex.htmlをダブルクリックしてみてください。
「Protocol Simulators」というページが現れましたか。そうしたら、この中の「Transmission Control Protocol
(TCP) Client-Server Simulator 」をクリックします。するとTCPシミュレータの画面が現れるはずです(Java
Scriptが動作する環境であることを確認してください。コラム「Windows XPをご利用でJasperがうまく動作しない方へ」も参考にしてください)
。
では「Run」ボタンをクリックしてみましょう。画面の下の方にあるはずです。どうですか? 画面に矢印でメッセージのやりとりをする画面が現れましたか?
(画面1)そう、これがTCPのまねっこ画面です。
画面1 Jasperの全体画面(Transmission Control Protocol Client-Server) (図をクリックすると拡大表示します) |
「Stop」をクリックしてみてください。動きが止まるはずです。ここで「Undo」をクリックしてみてください。ビデオテープを巻き戻すように、メッセージが時間の流れとは反対に巻き戻されていくはずです。また「Redo」をクリックすると、今度はメッセージが早送りされていくことを確認してください。
動作を再開するときは、あらためて「Run」をクリックします。また最初からやり直すときは「Clear」をクリックしてから「Run」をクリックすればOKです。
どうですか、面白いでしょう?
Jasperの画面は、左から、上位レイヤ、下位レイヤ、媒体、下位レイヤ、上位レイヤの順になっています。今回からは下位レイヤ編ですから、この中でも「Protocol
A」「Protocol B」と書かれた、下位レイヤの部分に主に注目していくことになります。
もう少し詳しく見てみましょう。Jasperの画面は「Medium」という部分を挟んで、左右が対称になっています。この「Medium」は「媒体」という意味です。具体的には、実際にネットワークをつないでいるLANケーブルなどを表していると考えてください。
一番外側にある「Client」と「Server」は、人間の行動に沿って動作する「上位レイヤ」に相当する部分です。そして「Protocol
A」「Protocol B」が「下位レイヤ」、ここではTCPを表しています。
年賀状の例でいえば、「Client」から「Protocol A」への矢印は、「年賀状をポストに投かんする」ことに相当します。「Protocol
A」にやって来た年賀状というはがきは、郵便サービスの中で仕分けなどが行われて、「Medium」というトラックであて先郵便局に運ばれます。こうしてあて先郵便局である「Protocol
B」に到着した年賀状は、最後に「Protocol B」から「Server」という配達先に届けられるわけです。
TCPのキホンのキホン |
ではJasperの画面を使って具体的に説明してみましょう。ここで説明するのは、TCPのキホン中のキホン、通信を開始するときの様子です。
TCPでは、通信を始めるときに、「通信を始めますよ」というメッセージを送り、それを受け取ったPCは、「はい分かりました」というメッセージを送り返すことになっています。また同時に、最初に「はい分かりました」を送ったPCは、反対に相手に対して「通信を始めますよ」というメッセージを送り、それを受け取った相手は「はい分かりました」というメッセージを送り返すことになっています。
この様子をJasperの画面で見てみましょう(画面2)。画面中では、「通信を始めますよ」を表すメッセージには「SYN」、「はい分かりました」を表すメッセージには「ACK」と書いてあります。また、2つの方向で行うメッセージのやりとりは、それぞれ青枠と赤枠に分けてあります。
図では、最初に「Server」が「通信開始を待つ」という動作を始めます。「Passive Open」がそれです。次に「Client」が実際に通信を開始します。これは「Active
Open」と書かれている部分です。
画面2 TCPの最初の部分をJasperで見ると……(図をクリックすると拡大表示します) |
上位レイヤでこういうことが起こると、TCPは、(1)まず相手コンピュータに「SYN」(通信を始めますよ)メッセージを送信します。この「SYN」を受け取ったコンピュータは、(2)すかさず「ACK」(はい分かりました)を送り返します。
このとき、同じメッセージの中に、自分からの「SYN」を入れておきます。こうすることで、2回行う「通信を始めますよ」「はい分かりました」のやりとりを、ちょっとだけ効率化できますね。それを受け取ったコンピュータは、自分が送った「SYN」に対する「ACK」はそのまま受け取り、さらに(3)相手からやって来た「SYN」に対する「ACK」を送り返します。
この3つのメッセージを使って、お互いに「通信を始めますよ」「はい分かりました」を確認し合う。これがTCPで通信を始めるときのルールになっています。
Jasperを使うと、いろんな通信開始のパターンを見ることができます。「Clear」をクリックしてから「Run」をクリックすると、パターンがさまざまに変化します。ぜひ手元のJasperを動かしてみて、このように3つのメッセージで通信を開始しているかどうか、皆さんも確認してみてください。
コラム:Windows XPをご利用でJasperがうまく動作しない方へ |
Windows XPをお使いの方の中には、Japserがうまく動作しない方がいらっしゃると思います。これは、Jasperを動作させるために必要な「Java仮想マシン」と呼ばれるプログラムが組み込まれていないXPで発生する問題です。 ・Javaについての知識をお持ちの方は、まず、ご利用中のPCの利用環境に合ったJava実行環境をインストールした後に、ここで紹介するJasperをご利用ください。 ・Javaについての知識をお持ちでない方は、以下の方法でJava仮想マシンをインストールすることができます。ただし、ご利用中のアプリケーションと一緒に自動的に何らかのJava仮想マシンがインストールされている場合、以下の組み込みがそのアプリケーションの動作に影響を与えることがあり得ます。その点をご了承の上、ご自身の責任でインストールを行ってください。 1.すでにインストール済みのJava仮想マシンがないか確認します。通常は次の方法で判断できるはずですが、場合によってはこの方法で正しく判断できないケースも有り得ます。 (1)「コントロールパネル」の「プログラムの追加と削除」を開き、「Java Runtime Environment」「Java実行環境」といったプログラムが組み込まれていないことを確認します (2)「スタート」→「すべてのプログラム」→「アクセサリ」でコマンドプロンプトを開きます。「jview」と入力してエンターキーを押し、「'jview' は、内部コマンドまたは外部コマンド、操作可能なプログラムまたはバッチ ファイルとして認識されていません」と表示されることを確認します。また同様に「java」と入力して、同じメッセージが表示されることを確認します 2.Java実行環境をインストールします。 (1)http://java.sun.com/j2se/1.4.2/ja/download.htmlに接続して、「J2SE v 1.4.2_03 のダウンロード」を探します。そこにある「Windows/Linux/Solaris SPARC 32 ビット/64 ビット Solaris x86 32 ビット」と書かれた項目のうち、「JRE」列にある「DOWNLOAD」をクリックします (2)英語の「LICENSE AGREEMENT」を確認し、下の「Accept」を選択して「Continue」をクリックします (3)「Windows Offline Installation, Multi-language」をクリックするとダウンロードが始まります。適当な保存フォルダを指定してください (4)ダウンロードが終了したら「j2re-1_4_2_03-windows-i586-p.exe」を実行します。利用許諾契約の内容を確認したら、「使用許諾契約の条項に同意します」を選択して「次へ」をクリックします。次のページで「標準」を選択して「次へ」をクリックします。あとは自動的にインストールが進み終了します。 以上でJasperが正常に動作するようになります。 |
さて、今回は下位レイヤ編スタートに当たって、下位レイヤって何? という話から、一番簡単なTCPの話までたどり着きました。さて、手応えはいかがでしょうか?
次回からは、もう少しTCPらしい部分を掘り下げていってみようと思います。
(上記コラム「Windows XPをご利用でJasperがうまく動作しない方へ」は
著者により2004年3月12日追記されました)
TCPって一体ナンダ?へ |
|
|
関連リンク | |
連載: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疑似デバイスの作成も可能だ。
|
|