6.2 ネットワークで提供されているサービス

サーバとクライアント

コンピュータネットワークを使ってサービスを行う方式の代表的なものに,サーバ/クライアント方式があります.サーバ(server)は,ネットワークを通じて他のコンピュータから要求を受け,それを処理するコンピュータやプログラムのことです.そしてクライアント(client)はサーバに要求を出し,サーバが提供しているサービスを受ける側のことを言います.

手紙のやりとりを例にして,もう少し詳しく見てみましょう.今,古くからの友達に久しぶりに手紙を書くことを考えます.

  1. まず,あなたは文面を考え,手紙を実際に書きます.
  2. その後,封筒に友達の住所を書きます.
  3. そして,切手を貼って,郵便ポストに投函します.
  4. 郵便ポストに入れられた手紙は,郵便局へと集められて,手紙に書かれた住所のところへと届けられます.

ここで,手紙を書いたあなたが,クライアントです.そして,手紙を届けてくれる郵便局がサーバです.あなたが受けているサービスというのは,「手紙を届けてもらう」というものです.ただし,そこには約束事があって,「手紙に切手を貼る」,「住所を書く」などをしないと手紙は相手には届かない,つまりサービスは受け付けられなかった,ということになります.こういった通信における約束事をプロトコル(protocol)といいます.ネットワークのいろいろなレベルで,いろいろなプロトコルが使われます.(→概念編:「サーバとクライアント」


● 練習問題

ここで挙げた例以外のサーバ・クライアント方式の例を日常生活で考えてみましょう.

CNS には次のようなサーバ専用ホストがあります.括弧の中がホスト名です.

リモートログイン

現在ログインしているホストとは別のホストにログインする方法を紹介します.以下の練習で,

ログインしてください.

別のホストにログインするためには ssh コマンドを使います.

% ssh 上で指定された ccz0? のどれか
The authenticity of host 'ccz00 (133.27.4.210)' can't be established.
RSA1 key fingerprint is 14:c2:5e:ec:89:cc:f8:e9:ea:33:d8:4d:b2:22:58:22.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added 'ccz00,133.27.4.210' (RSA1) to the list of known hosts.
t01000tf's passwd: 
	

と入力してください.そうするとしばらくしてから上のように何か聞かれますから, yes と答えてください.そうするとパスワードを聞かれますので,自分のパスワードを入力してください.

そうすると,他のホストにログインできます.こういったログインの仕方をリモートログイン(Remote Login)といいます.

● 練習問題

自分のもともとログインしたホストと,違うホストに現在ログインしていることを確認しましょう.どうすれば確認できるでしょうか?

CNSでは,どのホストでも同じホームディレクトリが使えるので,あまり必要はありませんが,次のような場合はリモートログインします.

コンピュータを使った後は,必ずログアウトしなければいけないのと同様,リモートログインしているホストでも使い終わった時にはログアウトする必要があります.ログアウトするには,リモートログインをした端末ウィンドウで logout と入力します.

% logout
Connection to ccz00 closed.
	

そうすると上のようにホストへの接続が終了したというメッセージが表示されます.

現在そのホストにログインしているユーザを表示させることもできます.例えば,リモートログインしている最中に, who と入力すると,そのホストにログインしているユーザの一覧が表示されます.

% who
s01000hf   pts/1         5月 15日 12:48 (zz100)
t99000tf   pts/2         5月 15日 15:40 133.27.4.232
t00999xx   pts/3         5月 14日 00:31 (impc002)
	

表示されるのは,ユーザ名,端末名,ログインした時刻,リモートログインの場合は元のホスト(ホスト名ではなくIPアドレスで表示される場合がある)です.

他にもいろいろなサービスがあります.例えば,ファイル転送プロトコル(FTP)というものです.このプロトコルについては,Windows の回で詳しく勉強します.
また,CNSにログインしている他のユーザと会話することもできます.詳しくはCNSガイドを参照してください.

ポート番号

現在の時間を知りたいときには,普通は date コマンドを使うことでしょう. しかし,他にも方法があります.

% telnet localhost 13; date
	

上のように入力すると,時間がまず telnet localhost 13 によって表示されます.次に date によりまた時間が表示されます.ちょっと誤差があるかもしれませんが,大体同じ時間が表示されていると思います.ここで,13 というのは一体何なのでしょうか.これは,サービスを区別するためのポート番号(port number)というものです.この場合のサービスは,daytime というものです.ポート番号に応じて様々なサービスが提供されています.

他にもどんなポート番号があるのかを実際に調べてみましょう.ここでは先程使ったプロトコルである,daytime がどのポートでサポートされているのかを調べます.

% grep daytime /etc/services
	

調べてみると,先程使ったdaytimeのポート番号は 13 だと表示されます.

● 練習問題

/etc/services の内容を調べて他のプロトコルが何番ポートでサポートされているのかを調べてみましょう.また,実際に telnet を使って調べたプロトコルが何をするものか調べてみましょう.

注意
telnet> と表示されて何をしたらいいか分からない時には, help と入力して調べましょう.