用語集その1(packet)


packet

 パケットの説明のためには、通信方式そのものを説明する必要があります。 通信方式はおおまかに言って2種類の方式があります。一つは、旧来のパソコン 通信が採用していた無手順方式、もう一つがパケット方式です。パケット方式 というのは、データをある大きさの塊、つまりパケット(packet:小包、郵便物の 束)に加工して転送する方式です。パソコン通信でも、XMODEMやZMODEMといった バイナリ転送プロトコルはパケット方式 の一種ですから、特に目新しい技術というわけではありません。それでは、 無手順式とパケット式ではどう違うのでしょうか?

無手順 パケット

 大雑把に特徴を並べると、だいたいこのような差があります。無手順 式はエラーがおきても大丈夫な、直接人間が読むようなデータを転送したり、 簡単な周辺機器(ポケコンや、手作りで機能の少ないハードウェア)を接続 するのに使い、信頼性が必要な場合にはパケット式を使うと思えば、だいたい 間違いないでしょう。ただし、パケット式ならば無条件に信用しても良いかと いうと、そうでもありません。中にはズボラなものもあって、宛先とデータ そのものしかないといういい加減なものもあります。

 余談ですが、アマチュア無線を利用したパソコン通信では、混信したり ノイズが入ったりと非常に回線品質が低い条件で通信を行うため、パケット モデムと呼ばれる特殊なモデムを使っていました。
#自分で使っていたわけではないので、モデムが自動的にパケット化 していたかどうかは知らない。


IP

 インターネットで使われているのはIP(Internet Protocol)と呼ばれる パケット通信方式で、現在はVersion4となっています。インターネットに 接続された全てのネットワーク機器は、一つ以上のIPアドレス(IPにおける 住所にあたる。どちらかというと出席番号とか学籍番号と言った方が しっくりくるけど)と呼ばれる4バイトの番号を持っていて、全ての パケットのヘッダ部分(葉書の表に相当する。実際はもっと多くの情報を 含んでいるが)には相手のIPアドレスと自分のIPアドレスが記録されていて、 これを頼りに配達される。plaza12.mbn.or.jpやwww.pluto.dti.ne.jpといった ホスト名は、DNSや/etc/hostsによってIPアドレスに 変換されてから使用されるが、それはまた別の話:-)


UDP

 IPを覚えたからといって、インターネットの通信がすべてこれで 行われていると思ったら、まだ甘い。実際は、IP で運ばれるパケットの中身はさらに UDPやTCP、 場合によってはRIPやBGPといった プロトコルのパケット になってます。しかし、UDPの場合は大したことをしているわけでは なく、port番号(そのホストのどのサービスを使うかという番号。mail のsmtpなら25番、一般的なHTTPならば80番といった具合に、メジャーな ものは決まっている)が付加されている程度でしかありません。この形式は

といったいい加減なものです。


TCP

 普通のユーザが一番お世話になっているプロトコル。 UDPよりも親切(?)になっていて、

となっています。よって、HTTPなどで実際に使われるパケットは 次のような構造になっています。

                     +---------+----------+----+
                     |IP header|TCP header|DATA|
                     +---------+----------+----+

#一般ユーザが一番お世話になっているのはDNSが使うUDPだという 話もある


Protocol

 なんか、読み返してたら書かないとまずいかなぁとか思って しまったのでいい加減な説明を書く事にする。用語集なんかをみると あっさり「通信規約」と書いてあるが、ようするに、 データを受け取る 準備が出来たかどうかとか、いま忙しいから待てとかのやりとり の取り決めのこと。ごく基本的な事だが、それだけに説明しにくい。 こればかりは体で覚えるしかないようだ:-( まぁ、野球なんかの サインの取り決めは一種のプロトコルと言えよう。

 また、パケット通信のパケットのフォーマットを規定する のもプロトコルの役目である。


IP address

 IPアドレスとは、インターネットに接続されたコンピュータに 付けられた識別番号である。インターネットは世界中に張りめぐらされて いるが、全ての通信はこのIPアドレスを頼りに配送されているので、 他のコンピュータのIPアドレスとは決して重複してはいけない。 また、一つの機器につき、最低でも一つは割り当てる必要があるが、 だいたいにおいて2つ以上割り当てることはない。

 IPアドレスは、より正確に言うとコンピュータそのものではなく ネットワークインタフェースに対して与えられるので、ルータや ゲートウェイのように複数のネットワークインタフェースを持っている 場合はそのぶんだけIPアドレスを持っているし、場合によってはインタ フェース自体に複数のIPアドレスを割り当てていることもある(たとえば、 ネットワークの構成を変更したが、変更前のネットワークに向けて 送信されたデータを受け取りたい場合)。

 今の規定では4バイトの数値になっていて、普通は桁の大きい方から 1バイトずつを"."で区切って192.168.192.91のように表記する。


Private IP address

 今現在、IPアドレスは石油と同じか、それ以上に貴重な存在 である。なぜなら、あらかじめ枯渇することが分かっているからだ (というよりも、枯渇しかかっている)。そこで、 IPアドレスのうちある部分をあらかじめ確保しておき、その部分を 外部との直接通信をしない部分にネットワークに割り当てることに よって、いわゆるインターネットそのもので使われるIPアドレスを 節約しようということになった。これが、プライベートIPアドレス (プライベートアドレス)である。

 また、プライベートアドレスには、資源の節約の他にも、 重要な役割がある。それは、自分のところのコンピュータを 増やしたりするのに、いちいち管理者に使っても良いIPアドレスを 問い合わせる手間を省くということだ。たとえば、内線でしか使わない のにいちいちNTTを呼んで電話線を引いてもらうより、あらかじめ 内線電話の交換機を買っておいて自分で増設した方が簡単だろう というのと同じことだ。
#実際は内線電話の増設も手間がかかるので、せいぜい親子電話 かPHSを買い込んでトランシーバモードで使うと言った方が近い?

 プライベートアドレスを割り当てたコンピュータが外部と 通信したいときは、proxyサーバ (代理サーバ)に接続し、この サーバに中継してもらって通信を行う。もちろん、proxyサーバ はちゃんとしたIPアドレスを割り当てる必要がある。

 具体的には、企業などの内部ではプライベートアドレスを 使い、ファイアウォール を兼ねたゲートウェイがproxyサーバに なってデータを中継する。WWWサーバのような内部よりも外部に 対してサービスを提供するよなホストは、普通ファイアウォール の外に置く。

プライベートIPアドレス(RFC1597より)

 注意:これらの発信者アドレスを持つパケットをインターネットに 流してはいけない!


proxy

 proxyサーバ(代理サーバ)というのは、あるホストがどこかの ホストと通信したい場合に直接通信するのではなく、仲介役として はさまるホストのことだ。 プライベートアドレス のネットワークや、ファイアウォール の内側のネットワークから外部のネットワークの ホストに通信したい場合に必要となる重要な存在だ。

 また、WWWやftpの利用でネットワークが混雑するのを防いだり、 より快適に利用するために、キャッシュ機能を持ったproxyサーバを 設置することも多い。気の利いたプロバイダならば、ダイアルアップで 接続されるホスト(つまり、顧客のパソコン)に割り当てるIP アドレスがプライベートアドレスではなくとも、キャッシュ機能付き proxyサーバを用意している。


NAT NetworkAddressTransform

 NetworkAddressTransformの略(だったと思う)で、IPアドレスを 持ったパケットを別のIPアドレスから発信されたかのように変換すること、 またはその機能をもったソフトウェア。プライベートアドレスの ネットワークに所属するホストが外部のネットワークと通信を行う場合や、 端末型ダイアルアップ接続で一つのIPアドレスしか持っていない ところに無理矢理複数のコンピュータを接続してインターネット に接続したい場合に使用する。

 最近のダイアルアップルータにはほとんど付いているらしいが、 なぜかWindows95・NT用のアプリケーションの場合があるので注意 しなければいけないようだ。まぁ、FreeBSDやLinuxがあるならば 付属ソフトにこだわる必要はないのだが。


Firewall

 既に有名な存在なので、インターネットに興味があるならば 聞いたことがある人も多いだろう。Firewall(防火壁)という名前 から連想できるように、その目的は災害を最小限に食い止めることだ。

 この"災害"というのはどのようなものだろうか? それは、 不正なアクセスによってパスワードファイルや機密文書などの 重要なデータを奪われたり、消去されたりといった、悪意ある クラッカーによる人災だ。

 ファイアウォールの仕組は非常に明解で、パケットを通さないという ただそれだけの物だ。しかし、全てのパケットを通さないように してしまうと、インターネットに接続する意味が無い。IPアドレス を浪費するだけの、畑の肥しにもならない役立たずだ。
#漬物石くらいにはなるかもしれないが:-)

 そこで、必要なサービスに対しては proxyサーバソフトを 動かすことで外部と内部のネットワークを中継する。ファイアウォール で動かすproxyサーバは単に中継するだけでなく、相手が正規のユーザ であるかどうか確認する機能を持った物が多い。特に、 telnetやftpサービスのためのproxyサーバにはさまざまなユーザ認証 機能を持った物や、VPN機能を 持った物がある。


VPN

Virtual Private Network

 複数の場所にあるネットワークを接続するには、以前ならば 専用線や公衆回線とリモートルータのような機器を使っていた。しかし、 現在ではインターネットが発達しているため、途中の回線を インターネットによって代用出来ないかと考える人がでてきたのは 当然のことだろう。
#この背景には、専用線の料金が距離に比例してどんどん高くなることがある。

 だが、普通にゲートウェイを設置してインターネットに繋ぐのでは 機密性が悪いし、ゲートウェイを ファイアウォールにしても安全なのは 内部のネットワークだけで、パケットが インターネットを通過している 間に盗聴される恐れがある。そこで、中継に使われるファイアウォール にパケットを暗号化させ、受信するネットワークの側のファイアウォール で暗号化を自動的に解読するようにしようというのがVPNの概要だ。この 方法では、普通にファイアウォールを動かす場合と違い、ユーザが 相手のネットワークに接続するたびにパスワードを打ち込むなどの 手間がかからない。

 最近では、VPN機能付のルータやUNIX用のファイアウォールソフトが いろいろと発売されている。しかし、なんでもかんでも暗号化すれば 良いというのではなく、本当に中継する必要のあるパケットだけを 選別して中継するように注意しなければならない。


[index]