仮想ネットワークの概要
これから作成する仮想ネットワーク「VirtualNetwork
」は、今までコンソールアプリケーションでその都度固定的なサンプルプログラムを作って確認していたことを改善するためのものです。
仮想ネットワークでは、Windowsフォームにより設定を自由に変更できるようにします。また、見やすくするためにWindowsアプリケーションとします。こうすることにより、TCP/IPの動きを理解しやすくなります。
しかし、今までの復習だけでは面白くありませんので、アプリケーション層のプロトコルを同時に定義することにより、プロトコルについての知識を深めます。この独自プロトコルについては後述するので、この項では仮想ネットワークについての解説を進めます。
仮想ネットワークは、ローカルネットワーク内の各端末が独自アプリケーション層のプロトコルの送受信を行えるようにします。さらに、独自プロトコルの実行結果、およびデータの送受信の様子を確認できるようにします。
まず決めなくてはならないのは、各ローカルネットワークをどうするかについてです。今回はSystem.Windows.Forms.Form
の派生クラス(LocalNetworkForm
)として実現することにします。そして、複数のローカルネットワークを用意する必要があるので、MDI(Multiple Document Interface)アプリケーションとします。
これで概要が決まったので、詳細な事柄を決定していきます。
IPアドレスの割り振りについての仕様
ネットワーク構築において、重要なことはIPアドレスの割り振りです。それは、仮想ネットワークでも同じです。そのため、仮想ネットワークではアドレスが重ならないようにします。もし、グローバルアドレスに重複が生じると通信ができなくなるので、絶対に一意のIPアドレスが割り振られるように実装しなくてはなりません。
割り振り方法は「手動設定」と「自動設定」が考えられますが、実装を簡潔にするために、今回は自動設定とします。一方、プライベートアドレスについては、ローカルネットワーク内で一意にしてください。
IPアドレスに関する仕様は以上です。次項ではローカルネットワークの仕様について解説します。なお、MACアドレスについても、全体で一意なアドレスを自動的に割り振るものとします。
ローカルネットワークについての仕様
ローカルネットワークを構成するには、ルータ・ネームサーバ・独自プロトコルのサービスを提供するサーバが必要です。従って、LocalNetworkForm
オブジェクトのインスタンスを生成する際には、必ず「Router
オブジェクト」「NameServer
オブジェクト」「Server
オブジェクト」のインスタンスが生成されるようにします。
それに加えて、LANを表すために「LAN
オブジェクト」のインスタンスと、端末を表す最低1つの「Client
オブジェクト」のインスタンスが必要です。
以上がローカルネットワークの初期状態です。LocalNetworkForm
オブジェクトのインスタンスを生成後についてはこれから述べます。
端末が1台だけでは面白くないので、自由に追加/削除できるようにします。ただし、最低1台の端末が必要なので、端末の削除機能で0台にはできないようにチェックしてください。
これで独自プロトコル以外の仮想ネットワークの仕様についての解説は終わりです。次項から独自プロトコルの仕様について解説していきます。
独自プロトコルGraffiti(落書き)の基本仕様
VirtualNetwork
で使用するアプリケーション層のプロトコルについては、よりプロトコルそのものについて知識を深めるために、既存のプロトコルではなく独自に定義します。その名前はGraffiti(落書き)です。
Graffitiプロトコルは、サーバとクライアントが文字列や図形に関するデータのやり取りを行う、アプリケーションを作るためのプロトコルです。まず、サーバに描画に必要なデータを送り、そのデータを記憶させます。そしてサーバは、クライアントからの要求に対応し、そのデータをクライアントに送ります。データを受信したクライアントは、受信データに基づき自身の画面に描画処理を行います。
なお、サーバに送るデータは蓄積されるものとします。例えば、文字列と三角形のデータをサーバに送り、そのデータをクライアントが受信した場合、文字列と三角形の両方を描画するものとします。描画する順序は、サーバにデータが到着した順番と同様です。
独自プロトコルGraffitiの詳細仕様
Graffitiの基本仕様から、クライアントとサーバの画面を確認する必要があります。そこで、フォーム(LocalNetworkForm
オブジェクト)には、端末一覧およびサーバの画面を描画する領域が必要です。この領域については、実装がしやすいように描画位置にSystem.Windows.Forms.Panel
コントロールを配置することにします。
また、描画項目を指定するためのコントロールも必要です。それらの画面の仕様については、今回は決定しません。次回で描画方法について解説しますので、配置するコントロールはその際に説明します。
後はこのプロトコルのフォーマットを決める必要がありますが、そのためにはGDI+プログラミングについての知識が必要なので、GDI+プログラミングを解説した後に決定します。
まとめ
今回は複数の層にまたがる技術と、総決算として実装する仮想ネットワークの仕様について解説しました。この仮想ネットワークを実装するにはGDI+の知識が必要なので、次回はGDI+プログラミングと独自プロトコルについて解説します。お楽しみに。
参考資料
書籍
- 『詳解TCP/IP Vol.1 プロトコル』 W.Richard Stevens 著、橘康雄・井上尚司 訳、ピアソンエデュケーション、2000年12月
- 『マスタリングTCP/IP 入門編 第4版』 竹下隆史・村山公保・荒井透・苅田幸雄 著、オーム社、2007年2月
ホームページ
- @IT『Master of IP Network』