サーバーへの接続動作

戻る

知っていると言うことは、ちょっとは自慢ができる。そううまくはいかないって。

インターネットを使う(ちょっと言葉が変だけど)ってことは、サーバーに接続してデータのやり取りを行うことだと思っていい。インターネットでは色々なサービスがあるわけだけど、どういう風にデータのやり取りをしているのだろう。

TCP/IP
マシン間でのデータの交換は、小さいサイズに分割されたデータを運ぶためのIP(Internet Protocol)と、分割データの順序を整えたりエラー対応をするTCP(Transfer Control Protocol)がベースとなって行われる。接続先のIPアドレスが必要なのは当然であり、相互に情報を交換することから、接続元のIPアドレスも当然必要。だからこそ、IPアドレスを持っていないことと、インターネット接続が出来ないことが同意になる。

リモートホスト
接続する相手(たいていはサーバー)をリモートホストと呼ぶ。接続にあたっては、リモートホストのIPアドレスかドメインネームの指定を行う。ホストアドレスを知らないのは、住所を知らずに手紙を出すとか、番号を知らずに電話をかけるのに等しい。接続元である自分のマシンをローカルマシンと呼ぶが、このIPアドレスは通常自動的にリモートホストへ送られるため、最初の設定時以外は、意識しなくても済むことが多い。

ポート
同じIPアドレスのリモートホストでも、いくつかのサービスが行われている。どのサービスを利用するかと言うことはポート番号の指定によって行う。相互で合意したポート番号を用いれば良いわけだが、よく使われるサービスに関しては、RFC上で標準的なポート番号が定められている。例えばWWW(http)ならポートは80で、ドメインネームやIPアドレスと組み合わされ、「tokyo.cool.ne.jp:80」というように表現する。やはり、ローカルマシン側のポート番号は普通意識しなくても良い。

やり取り
ホストとのやり取りは、お互いに相手の<IPアドレス:ポート>に対してデータを送り合うことで行われる。ローカルマシンからはコマンドを送り、リモートホストからは応答が返ってくるわけだ。コマンドと応答に関する定めが、それぞれのプロトコルであり、RFCに記述されている。一連の流れを大雑把に紹介すると次のようになる。


プログラミング
まさか、これを読んでいる人でプログラミングに挑戦しようと言う人はいないだろうな。世の中には立派なソフトが沢山あるので、わざわざ作る必要は無いぞ。いきなり話の腰を折ってしまったが、実際そうである。プロトコル自体はRFCを見ればわかるのだが、意外に面倒なのがタイムアウトなどの処理だ。通信の世界と言うのは、タイミングも含めた「時間」の問題がえらくでかい。安定して動作するような、それでいて使い易いソフトてのは、なかなか難しいものなんだ。

ネットワークは、ハードウェア寄りになればなるほど小難しくて手におえなくなる。メールのプロトコルくらいであれば、意外にそれほど難しくも無く、端末操作の延長程度の感覚で扱える。なんて甘言に騙されて、失敗しても当方は責任は取らないからね。インターネットはすべてown riskだと心得て欲しい。