takashi kono's blog

コーヒーとキーボードと共に何かを記録していくブログ

はじめてUNIXで仕事をする人が読む本 の備忘録 17 アプリケーションプロトコル

はじめてUNIX で仕事をする人が読む本 の備忘録 17

お世話になった本

この連載ブログを書くにあたり、お世話になった本がこちら。LPICと被っているところもありますが、実務での使い方なんかも扱っており、良書だと思います。

第3部

第17章 アプリケーションプロトコル

ネットワークアプリケーションには様々なものがある。基本的には、ネットワークを使って情報通信を行うアプリケーションは全てネットワークアプリケーションと呼ばれる。

Webアクセス(HTTP/HTTPS)

HTTP/HTTPSは主にWebアクセスに使用されるプロトコル
おそらく現在最も広く利用されている。

複数の文書間の垣根を越えて、用語などの参照関係を相互にたどることが出来るハイパーテキストと呼ばれる仕組み/考え方を元に、ネットワーク上に分散した情報相互の間に気づかれた関係を参照することを実現するプロトコルとして策定されたのが、HTTPである。
全世界的に分散した情報全体が網の目のように参照し合っている状態をWorld Wide Web (WWW)と称し、WWWのリンクをたどることに特化したUIをWWWブラウザまたは単にブラウザと呼ぶ。

URL ネットワーク上に存在するリソースの所在を表す統一的な表記
URI URLをより一般的な識別子として拡張した概念

URI には以下のような情報を含めることが出来る

  • リソース自体の場所を表す情報
  • そのリソースにアクセスするためのスキーム
  • アクセス権限を行使するための認証情報
    • ユーザ名やパスワードなど
  • アクセスする際に情報提供側で参照されるパラメータ情報
  • など

HTTPSSSLあるいはそれを拡張したTLSと呼ばれる通信の安全を確保する仕組みを利用して、HTTP通信を第三者の攻撃から守るようにしたプロトコル
HTTPSでは、通信内容を暗号化したり、改ざんを検出したり、デジタル証明書の技術を利用して通信相手であるサーバやクライアント(ブラウザ)に対する一方向あるいは双方向の認証を行うことが出来る。
一般によく利用されるのは、正式に運用されていることを保証するサーバ証明書の導入と、それを利用した暗号化通信。
証明書は、信頼できるCAが発行したものである必要がある。
現在利用されているほとんどのブラウザでは知らないCAが発行した証明書を使用している場合には、警告を出すか、通信を行わないようになっている。プライベート証明書(オレオレ証明書)を利用するなら、ユーザ側でブラウザやOSにプライベートCAを信頼できるCAとして登録する必要がある。

電子メール(SMTP/POP/IMAP)

未だに無くならない、インターネット上で古くから使われているサービスの一つ。
MTA Mail Transfer Agent でメールを転送し、
MUA Mail User Agent でメールを送受信する

SMTPはメールを送信する際に利用されるプロトコル
最初は、シンプルに英文テキストしか遅れなかった。
MIMEの登場により、多言語対応や添付ファイルが出来るようになった。

POP や、IMAP はメールを受信するときに使用するプロトコル
POPは基本的に、サーバにあるメールボックスからメールを全てダウンロードする。
IMAPは、サーバ上のメールボックス上で管理して、手元のPCからはリモートメールボックスを操作する仕組み。
端末が一つの場合は、POPでいいだろうが、複数で一つのメールアドレスを確認する場合はIMAPが便利だろう。

リモートログイン(TELNET/SSH)

リモートログインは、物理的に離れた場所からネットワーク経由でコンソール操作を行うネットワークアプリケーション。
TELNETは古いので、認証情報などを暗号化しておらず、全て平文で送られる為、現在あまり使わないことが推奨されている。しかし、地味にHTTPの接続テストとかで使えたりするので、侮れない。
どうしても、TELNETを使いたいときは、先にIPsec などで通信そのものを暗号化した上で使うとよい。

SSHは暗号化を前提としたリモートログイン用のアプリケーションプロトコルである。
パスワード認証や公開鍵認証も利用できるため、より安全に利用できる。
ポートフォワード機能もあり、特定のTCPポートの接続をリモートログイン先との間で双方向に転送することが出来る。
これを利用することで、SSHトンネルと呼ばれる簡易的なVPNが実現できる。

類似の技術に、RCP / VNC がある。

ファイル転送(FTP/rsync)

ファイル転送のプロトコル。特に、FTPTELNET と並ぶ最古のアプリケーションプロトコルの一つ。
FTP は暗号化に対応していない。IPsecなども併用しないと全て平文でネットワークを流れてしまう。
さらに、FTPでは、コントロールセッションとデータセッションの2つのセッションを利用する特殊なプロトコル

rsync は、UNIX上のファイルシステムのコピーをリモート環境に作成し、両者を同期するネットワークアプリケーションである。リモート環境への接続は、SSH などの他のプロトコルを利用するため、通信内容は暗号化される。

NFS / SMB

講義にはファイル転送の一種と言えるが、通常のファイルシステムの一部としてリモートのディスクをマウントすることを前提としたアプリケーションプロトコルである。
ユーザとしては、ネットワーク越しにファイルを転送したという意識はない。ローカル環境のファイルと同じように扱える。

NFS は古くからUNIX環境で広く使われている。SMB / CIFS は主にWindows 環境で広く利用されている。 いずれも、LAN環境で利用することが前提。

VoIP(SIP/RTP)

VoIP (Voice over IP)は、IPを使った音声通信アプリケーションプロトコル
使用しているプロトコルは、SIP / UDP / RTP が主だったところだろう。
SIPで発呼着呼を管理し、さらに、SIPサーバでDNSの仕組みを利用して電話番号から通信相手のサーバを検索できるようになっている。音声データの転送はUDPパケットにカプセル化されたRTP(Real time Transport Protocol)を使い、音声通話を実現している。

システム運用管理(DNS/DHCP/NTP/SNMP)

他にも様々なプロトコルが活躍している。
NTP は時刻を正確に合わせるために使われている。階層的にサーバ構成を構築できる。最上位のサーバは、原子時計GPS衛星からの情報を元に正確な時刻を設定している。
SNMP はネットワーク管理用のアプリケーションプロトコル。監視対象機器にSNMPエージェントを設定し、SNMP マネージャが定期的若しくはイベント発生毎にエージェントに対して状態を取得するのが基本的な仕組み。

DNS / DHCP は割愛。

Xプロトコル

X Window System は、UNIX 上で広く利用されているウインドウシステムである。ほとんどのデスクトップ環境は、X Window System 上に構築されている。
ディスプレイ、キーボード、マウスなどのポインティングデバイスを管理するのが、X Server
ここのウィンドウアプリケーションが X Client

画面上の更新はX Client から、X Server に対する描画指示として送られる。この際のX Client と X Server 間のアプリケーションプロトコルがXプロトコルである。

X Protocol はネットワーク上を流れる普通のIPプロトコルなので、X Server と X Client が同一のホスト上で動いている必要はない。

両者が別のホストで稼働している場合、
ユーザの手元のPC上でディスプレイやデバイスを管理しているのが X Serve で、
リモートホスト上で動くアプリケーションが X Client となる。

一般的な認識と立場が逆になる点は留意しておこう。


以上で、第17章 アプリケーションプロトコル を終わります。 次回は、第18章 IP関連の技術です。
全19章なので、ゴールは後もう少し。がんばっていきまっしょい