Web教材一覧ネットワーク

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

学習のポイント

TCP/IPでのアプリケーション層での,インターネットに関する主なプロトコルについて学習します。Webページ閲覧のためのHTTP,電子メールのためのSMTP/POP3,ファイルのダウンロードのためのFTPなどがあります。なお,DNSに関しては別章「DNSとネームサーバ(nw-dns)」で取扱います。

キーワード

ウエルノーンポート番号,HTTP,HTTPS,CGI,クッキー,Apache,MIME,S/MIME,SMTP,POP3,APOP,IMAP4,不正中継,sendmail,FTP,TELNET、NTP


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

TCP/IPでのアプリケーション層は,OSI参照モデルの
    第5層 セッション層
    第6層 プレゼンテーション層
    第7層 アプリケーション層(応用層)
にまたがっています(OSI参照モデルのように明確な階層化がなされていないのです)。

位置づけ

アプリケーションプロトコルは,TCPヘッダのなかのポート番号(ウエルノーン(Well Known)ポート番号)により伝えられ,それぞれのアプリケーションがサービスを提供します。その主なものを示します。

    ポート番号 プロトコル  サービス内容
      80  http   Webページ閲覧
     443  https  同上(セキュリティ)
      25  smtp   電子メール(送信・転送)
     110  pop3   同上(受信)
     220  imap3  同上(受信)
      20  ftp    ファイルの転送(データ)
      21  ftp    同上(制御)
      23  telnet 遠隔ログイン

HTTP(HyperText Transfer Protocol)

HTTPは,WebブラウザとWebサーバとの間でのデータ交換のための通信プロトコルです。WebブラウザからURLを入力したとき,リンク部分をクリックしたとき,フォームで「送る」をクリックしたときなどに応じて動作します。ブラウザが自動的に処理しているので,利用者は明示的には認識していませんが,内部ではコマンドの送信や応答メッセージの受信を行っているのです。

主なコマンド

GET
指定したURLを取得。最も一般的なコマンドで,Webページのファイルをブラウザに読み込みます。ブラウザはこれを解読して表示することにより,Webページが閲覧できます。HTMLのなかで画像などのファイルがimgタグなどで指定されていると,さらにGETコマンドが送信されます。
HEAD
ヘッダ情報だけを取得。
POST
CGIでのフォーム入力などに応じて,サーバにデータを送信。
PUT
指定したURLにデータを保存。

HTTPの主な応答メッセージ

   100~199  一時的なレスポンス
   200~299  正常な処理
   300~399  転送要求
   400~499  クライアントのエラー
   401 Unauthorized    
   403 Forbidden       
   404 Not Found     該当するファイルが存在しない
   500~599  サーバのエラー

Webサーバの機能

Webサーバは,単にWebページを保管して閲覧要求に応じるだけでなく,多様な機能を必要とします。

CGI(Common Gateway Interface)

HTMLだけでは,提供できるサービスが限定されます。特にインタラクティブな利用をするには,HTMLのフォームによりデータを入力させ,それによって,HTMLとは独立したプログラムにより処理をして,その結果をWebブラウザに戻すような機能が必要になります。その機能の標準的なプロトコルがCGIです。CGIを利用すると多様な機能が実現できますが,逆に,悪意のある第三者に悪用される危険も増大します。

CGIの図

HTTPはステートレスな通信です。ステートレスとは,リクエストとレスポンスが1回のコネクションで終わってしまい,次にリクエストするときには,新規にコネクションを行うので,以前に行ったときの情報が継続しないということです。例えば,先のA画面で氏名を入力し,次のB画面で住所を入力するようなとき,BのときにはAで入力した氏名が引き渡されないのです。

これでは,業務にWebを使うのには困ります。コネクションを超えてデータを引き渡す手段として,CGIを用いることもありますが,Aでのデータをファイルに保存しておき,Bの処理でそれを参照することが考えられます。そのファイルをWebブラウザ側に置いて,WebブラウザとWebサーバの間で交換する方法あるいはそのファイルをクッキーといいます。
 クッキーはこのような連続した処理にも使えますし,これまでの閲覧履歴を入れておくような断続的な情報記録にも使えます。Webブラウザを閉じるたび(セッションが切れるたび)に消去されるクッキーを一時的クッキー,有効期限を決めておきそれまで残るクッキーを永続的クッキーといいます。

クッキーは便利なのですが,個人情報を記録していることもありますし,これ自体には暗号化の機能もないので,セキュリティの面で慎重な取扱が必要になります。

Webページ閲覧のセキュリティ対策

Webページは一般公開が原則ですが,場合によっては利用者を限定する必要もあります。Webサーバは,任意のディレクトリ単位あるいはファイル単位でアクセス制限をします。

ユーザ単位のアクセス制限
通常のファイルのアクセス管理のように,ユーザIDとパスワードにより,アクセスできるユーザを特定します。
ホスト単位のアクセス制限
特定のホストのIPアドレスまたはネットワークIPアドレスからのアクセスだけについて許可をします。特定のWebページを自社内のネットワークだけからアクセス可能にするようなときに使われます。

また,認証には次のレベルがあります。

Basic認証
Webサーバ側ではパスワードを暗号化して保管しますが,WebブラウザとWebサーバの間では暗号化せずに通信します。
Digest認証
WebブラウザとWebサーバの間の通信を,MD5というハッシュ関数を用いて暗号化します。
Anoonymous認証
匿名(anoonymous)でのアクセスを許すもので,ほとんど認証はしていません。時によっては電子メールアドレスを聞くことがありますが,それも真偽をチェックしません。昔の平和な時代に共同利用するために行われた方式だといえます。

HTTPS(HTTP over SSL)

通信の暗号化では,SSL(Secure Sockets Layer)が広く用いられています。それをWebブラウザとWebサーバの間の通信に組み入れたものです。個人情報やクレジット番号を入力するとき,URLが「https://」となっています。

Webサーバ管理ソフト

これらの機能をすべてHTTPでカバーすることはできません。それで,Webサーバ管理のためのツールが必要になります。その代表的なものに,フリーソフトの Apache やマイクロソフトのIISなどがあります。


電子メールのプロトコル

MIME(Multipurpose Internet Mail Extensions)

電子メールのシステムは,歴史的な経緯から,ASCIIコードのみを送受信することを前提として設計され発展してきました。MIMEは,その制限を外して,各種の文字コード,画像やプログラムなどのバイナリデータも取扱えるようにしたものです。
 MIMEを理解するには,エンコード,コンテント・ヘッダ,マルチパートが重要です。

エンコード
現在でも,メールシステムは7ビットのASCIIコード(日本ではJIS7ビットコード)で送受信することになっています。MIMEは,各種の文字コードやバイナリデータをASCIIテキストに変換して電子メールで送信できるようにし,受け取ったASCIIテキストを元の形式に逆変換します。その変換方式には,quoted-printableとBase64があります。
コンテント・ヘッダ
電子メールは,宛先や題名などのヘッダと本文に分かれます。ヘッダ部に,
本文のコード系を
    Content-Type: text/plain; shift_jis  や
    Content-Type: image/gif  などとして,
変換方式を
    Content-Trasfer-Encoding: base64
のように指定することにより,本文がシフトJISやgif画像をBASE64方式で変換したものだとわかります。
ヘッダ部にも漢字などASCII以外の文字が含まれます。Quoted-Printableに類似した「符号化Q」またはBASE64による「符号化B」によりASCIIに変換されます。
マルチパート
マルチパートは最初に区切り文字を宣言することで,1通のメールのデータをいくつかのパートに分ける方法です。それぞれに別々のデータを収納すると,1通のメールにいろいろな種類のデータを混在させて送れます。これにより,本文中に文字と画像を混在させたり,添付ファイルをつけることができるようになったのです。

quoted-printableとBASE64

上記のように,MIMEで使われるエンコード方式は2種類あります。

quoted-printable
ヘッダの変換ではQエンコードと呼ばれます。
ASCII以外の文字は,1バイトずつ16進数で表し,その前に「=」をつけます。それで1バイトが3バイトになります。ASCIIが大部分で,それ以外の文字が少ないときに用います。
BASE64
ヘッダの変換ではBエンコードと呼ばれます。
データの内容に関係なく,3バイト(24ビット)を6ビットに分割して4文字に変換します。それでデータ量は4/3倍ですみます。添付ファイルのエンコードには普通これを使用します。

電子メールが届く仕組み

郵便と電子メールの比較

郵便に私書箱というのがあります。送信者がポストに投函した郵便物は,郵便局員にて収集され最寄の郵便局(これをここでは「送信者側郵便局」とします)にまとめられ,宛先の郵便番号により宛先の郵便局(「受信側郵便局」とします)に送られて,受信側郵便局に設けられた受信者の私書箱に保管されます。受信者は鍵を用いて私書箱から郵便物を取り出します。

郵便と電子メールの比較

電子メールでは,送信者はメールソフトを用いて電文を送信側郵便局に相当するLANやプロバイダのメールサーバーに送ります。送信側メールサーバは宛先のIPアドレスを見て,受信側のメールサーバに電子メールを転送します。受信側メールサーバはそれをメールボックスに保管します。受信者はメールソフトを用いて,自分宛のメールをメールボックスから自分のパソコンに取り出します。
 通常は送信も受信も同じメールソフトを用いていますが,内部では,送信および転送にはSMTP,受信にはPOP3(あるいはIMAP4)という異なるプロトコルが使われているのです。

メールサーバの探索:DNS

以下,メールアドレス kogure@mail.highway.ne.jp の送信者からメールアドレス hitoshi@kogures.com の受信者にメールを送受信することを例として説明します。

電子メールを送るには,受信側のメールサーバのIPアドレスが必要になります。それにはメールサーバのホスト名からDNSによる名前解決を行います(別章「DNSとネームサーバ」参照)。
 なお,メールサーバの名前は,mail.highway.ne.jp のようにホスト名(完全修飾ドメイン名)を持つものもありますし,kogures.com のようにドメイン名だけのものもあります。後者の場合は,メールサーバのMXレコードで,

        kogures.com       IN MX 10  mail.kogures.com
        mail.kogures.com  IN A      192.168.0.20

SMTP(Simple Mail Protocol)

SMTPは,電子メールの送信および転送を行うプロトコルです。TCPヘッダのポート番号が25であることから,SMTP要求だとわかり,SMTPサーバに送られます。SMTPサーバは宛先のSMTPサーバのIPアドレスをDNSに問合せ,そこへ転送します。受け取ったSMTPサーバは,それを受信者のメールボックスに格納します。

送信での動作

 SMTPでの動きは次のようになります。
   :      ここまでにポート番号25でのコネクションを確立している
    ← 220  ESMTP Sendmail              SMTP準備OK
  →EHLO xxx.highway.co.jp           こちらはxxx.highway.co.jp。メール転送開始  250  mail.highway.co.jp          OK。こちらは mail.kogures.com。MAIL FROM: kogure@highway.co.jp  送信信者は kogure@highway.co.jp。
  ← 250  Sender ok                     OK。RCPT TO: hitoshi@kogures.com     宛先は hitoshi@kogures.com。
  ← 250  Recipient okDATA                             メール本文送信 354                              メール受信開始
  →こんにちは
  →・・・・・            本文
  →さようなら
  →.                                 (本文の最後は「.」)
  ← 250  Message accepted             本文受信OK
  →QUIT                              終了。コネクション解放。
  ← 221                               コネクション解放

 主な応答メッセージは,次の通りです。
 (正常)
   220  サービス開始
   221  サービス終了
   250  要求処理完了
   354  データ入力開始(.だけの行で入力完了)
 (転送エラー)
   421  サービス提供できないので終了
   450  メールボックスが存在しない
   452  メールボックスの容量不足
 (処理継続不能エラー)
   500~504  コマンドのエラー
   550~553  メールボックスのエラー
   551  利用者が登録されていない

このように,SMTPでは発信者のユーザIDは必要ですが,パスワード認証をしていません。第三者がなりすますことが容易なので,発信者が本人かどうかは信じられないのです。

sendmail

SMTPサーバの代表的な管理用ソフトです。UNIX用に作成されたフリーソフトウェアですが,現在では多くのOSに移植されており,事実上の標準ソフトウェアになっています。

POP3(Post Office Protocol version 3)

POP3は,電子メールをメールボックスから受け取るためのプロトコルです。POP3サーバは大きく次の3つの動作をします。
   認証:アクセスしてきた者が電子メールの正規の受取人であるか
   トランザクション処理:メールボックスにある電子メールの情報提供,ダウンロード
   更新:メールボックスからの電子メールの削除など

POP3の動作

 POP3での動きは次のようになります。
   :      ここまでにポート番号110でのコネクションを確立している
  ← +OK                   サービス開始
  →USER hitoshi         私は hitoshi です
  ← +OK  Password ....     OK。パスワードは?
  →PASS xxxxxx          パスワードは xxxxxx です
  ← +OK                     OK
  →STAT                 電子メールの状態は?
  ← +OK  4 messages 5000 octets
                               4通,全体のデータ量は5000オクテット(バイト)
  →LIST                 その一覧表は?
  ← +OK                    一覧表の表示
        1  400
        2  2300
        3  1700
        4  600
  →RETR 1                1通目の表示を
  ← +OK  500 octets
       from  kogure@mail.highway.co.jp
         ・・・
       Subject: ○○会合の通知
       こんにちは
        ・・・・
       さようなら
       .
  →DELT 1                 1通目をメールボックスから削除
  ← +OK  Message 1 has been deleted.
  →QUIT                   終了
  ← +OK

このように,POP3では電子メールを1通ごとにダウンロードしたり,メールボックスから削除したりするのですが,通常のメールソフトではそれを自動化して,すべての電子メールをクライアントにダウンロードして,メールボックスから削除するようにしています(すべて削除しないように設定することもできます)。

Qpopper

POPサーバでは米QUALCOMMから無償配布されている Qpopper というサーバプログラムが広く利用されています。

IMAP4(Internet Message Access Protocol version 4)

IMAP4もPOP3のように電子メールを受信するプロトコルですが,POP3が電子メールの管理をクライアント側で行うとは異なり,原則としてメールサーバ側で管理します。
 IMAP4の特徴を列挙します。通常のメールソフトがクライアントで実現していることをサーバで実現しています。

メールボックスの階層化
メールボックスに複数のフォルダを作成し,電子メールの特徴により分類できます。
メールの管理
返信したメールにフラグをつける,作成途中のメールを保存しておき修正できる,メールを検索できるなどの機能があります。
選択ダウンロード
POP3では添付ファイルだけダウンロードするとか,本文に挿入された画像ファイルだけダウンロードするような,部分的な操作ができませんが,IMAP4では可能です。

このように,サーバ側で管理することにより,次の利点があります。

複数パソコン間での管理
オフィス,自宅にパソコンがあり,ノートパソコンを持ち歩いている場合,電子メールがどのパソコンにあるか不明になることがあります。また,あるパソコンにある電子メールを他のパソコンに転送する必要もあります。サーバで集中管理することにより,このような煩雑さが回避できます。
セキュリティ対策
機密性のある電子メールを自宅パソコンに取り出したり,そのような電子メールが入っているノートパソコンを紛失したりすると,セキュリティ上,大きな問題になります。電子メールはサーバだけに保管することにより,対策がとりやすくなります。

IMAP4を用いるには,クライアントとメールサーバの両方に実装する必要があります。多くのメールソフトがIMAP4を取り入れていますが,メールサーバは企業やISPの都合もあり,実装されていないことも多いのが現状です。

電子メールのセキュリティ対策

電子メールでは,なりすましや盗聴などへのセキュリティ対策が重要な課題になっています。SMTPやPOP3自体は,セキュリティへの考慮が不十分ですので,それらの発展的なプロトコルが採用されるようになりました。

メールサーバでの対応

サーバサイトメールフィルタ
ウイルス付きの電子メールや不特定多数へのスパムメールを,メールサーバの段階で受信拒否をすることを,サーバサイトメールフィルタといいます。
 sendmail では処理中のメールに対して他のプログラムからアクセスできる機能を持っていますが,それを利用して,メールのウイルスチェックやスパムチェックをします。
不正中継の防止
前述のように,電子メールの送信プロトコルであるSMTPはパスワード認証をしていません。それで,発信人を特定できないようにするために第三者のメールサーバを通して発信することができます。それを第三者中継(不正中継)といいます。
それを防ぐためには,SMTP以外の手段で正規の利用者であるかどうかを認証する手段を取る必要があります。それが不十分なメールサーバをチェックして登録している機関もあります。そのブラックリストを参照するなどにより,そこからの転送は受け付けないようにします。

ユーザ認証

本人確認には,次のような方法がとられています。

POP before SMTP
SMTPはパスワード認証をせず,POP3はパスワード認証をしています。それで,利用者に送信(SMTP)をする前に必ず受信(POP3)をさせて認証を行い,一定時間の間はそのIPアドレスからの送信(SMTP)を許すという方法です。
SMTP AUTH(SMTP service extension for AUTHentication)
これはSMTP自体にパスワード認定を組み入れたものです。通常のメールソフトはこれに対応しています。メールサーバ側では,sendmail 8.11.xからこの機能が組み込まれています。
APOP(Authenticated POP)
POP3では,パスワード認証をしますが,そのパスワードを平文で送るので盗聴される危険があります。APOPはパスワードを暗号化して認証をします。APOPは本文を暗号化するものではありません。

メールの暗号化

暗号化するには,暗号方式や電子署名などがありますが,ここではメールソフトによる暗号化を掲げます。

S/MIME(Secure MIME)
電子メールの暗号化方式の標準です。MIMEにより変換するとともにRSA公開鍵暗号方式を用いて暗号化します。メール受信者はS/MIMEに対応したメールソフトで受信すれば、署名の検証、証明書の確認などを自動的に行います。そのため、受信者に複雑な操作を強いることなく電子メールのなりすましを防ぐことができます。
PGP(Pretty Good Privacy)
電子署名とメール本文を比較的処理の軽いIDEA(International Data Encryption Algorithm)共有鍵暗号方式で暗号化し,IDEAの鍵をRSAによって暗号化します。正式の規格ではありませんが、早期に多様なプラットフォームに移植されたこと,簡単に使えることなどから普及しました。

FTP(File Transfer Protocol)

FTPはファイル転送のプロトコルです。プログラムのダウンロードやWebページ作成でのアップロードに利用されます。FTPの特徴は,転送するファイルに制約がないことで,テキストデータもバイナリデータも元のまま転送できます。
 FTPには,制御用(ポート番号21)とデータ転送用(ポート番号20)の二つからなっています。

 制御用FTPでは,次のようなコマンドがあります。
   USER  ユーザIDの入力
   PASS  パスワードの入力
   RETR  FTPサーバからデータをダウンロードする
   STOR  FTPサーバにデータをアップロードする
   DELE  FTPサーバのファイルの削除
   LIST  ファイル一覧表の表示
   QUET  正常終了
   ABOR  処理の異常打切り

例えば,次のようなやりとりになります。
   ← 220 ftp FTP server ready.
   →USER kogure
   ← 331 Password required for username.
   →PASS xxxxxx
   ← 230 User username logged in.
   →PORT 10,0,0,1,120,55
   ← 200 PORT command successful.
   →RETR prog.exe
   ← 150 ・・・ 'prog.exe' (1563 bytes).
       ここでダウンロードが行われる
   ← 226 Transfer complete.
   →QUIT
   ← 221 Goodbye.

データ用FTPは,RETRコマンドやSTORコマンドにより,実際にファイルを転送します。このように二つにわけている理由は,これらを一つにすると,ファイル転送中にコマンドを送信できないとか,転送を中止することができないからです。

上記のように,FTPではパスワードを要求しますが,不特定多数にフリーソフトなどのファイルのダウンロードをサービスする目的のFTPサーバもあります。それを匿名(anonymous)FTPサーバといいます。ユーザIDで「anonymous」や「guest」とすれば,パスワードは何でもよく(一般には電子メールアドレス)で使えるようになっています。

逆に,セキュリティを重視して,SSHを用いたSFTP(Secure FTP)やSCP(Secure CoPy)などを備えたFTPサーバもあります。


プリンタ関連プロトコル

オフィスでは、数台のパソコンで1台のプリンタを共有するのが通常ですし、場合によっては、インターネットにより遠隔地のプリンタに出力することもあります。
 TCP/IPによりプリンタを操作する方法(プロトコル)を掲げます。

IPP(Internet Printing Protocol)
HTTPプロトコルを用いてネットワーク上のプリンタに印刷を指示できるようになっている。インターネットを通じて遠隔地のプリンタにデータを送って印刷することもでき、FAXの代わりのように使える。
LPR(Line PRinter daemon protocol)
プリントサーバに接続したプリンタに遠隔印刷を行わせるプロトコル。主にUNIXで普及したがWindowsなどでも使用できる。
RAW(Raw image format)
そもそもはデジカメなどの写真の規格であるが、それをプリンタ印刷を行う形式でもある。SNMP(simple network management protocol)とMIB(Management Information Base )を用いてプリンタを操作する。

その他のプロトコル

TELNET

TELNETは,クライアントとサーバを接続して,サーバの持つ機能をクライアントから使おうとするものです。TSS(Time Sharing System)と同じような利用形態です。通常はポート番号23で接続して,それかた多様なサービスを利用しますが,
   telnet ホスト名 ポート番号
として,例えばポート番号を80にすればHTTPに直接入ることができます。
 TELNETは,Webブラウザが出現する以前には標準的に用いられていましたが,
   利用者からみると,テキストデータしか使えないこと
   サーバからみると,セキュリティ対策が面倒なこと
などにより,サポートしない(接続させない)サーバも多くなってきました。

NTP(Network Time Protocol)

パソコンなどの内部時計を、インターネットを介して標準時計に同期させるプロトコルです。日本では、NICT(情報通信研究機構)が、GPSや標準電波、原子時計などから得た最上位の時計をもっており、日本標準時と10ナノ秒以内の精度があるといわれています。通信遅延を校正する機能ももっています。
 NTPは、高速な伝送速度が求められ、データ量が少なくアクセスが多い特徴から、TCPではなくUDP(123番ポート)を使用します。  最近は電子取引が普及し、そのタイプスタンプが重要になりました。そのため、NTP利用頻度が急激に増大しています。

SNMP(Simple Network Management Protocol)

ネットワークやそれにつながるホスト(コンピュータやルータなど)の状況を収集して管理するためのものです。これに関しては別章「ネットワークセキュリティ技術(nw-sec-gijutsu)」で取扱います。

DNS(Domain Name System)

ドメイン名やホスト名からIPアドレスを探す(またはその逆)名前解決のためのプロトコルです。これについては,別章「DNSとネームサーバ」で詳述しています。

NFS(Network File System)

ネットワークに接続した複数のコンピュータで,ネットワークに置かれたハードディスクを共有するためのプロトコルです。NFS自体で転送されるデータの重複や欠除,順序管理などを行うので,TCPだけでなく,UDPでも利用されます。


理解度チェック

第1問

  1. TCP/IPのアプリケーションは,IPヘッダに含まれるポート番号で指定される。
    × IPヘッダ→TCPヘッダ
  2. HTTPは,WebブラウザとWebサーバとの間でのデータ交換のための通信プロトコルである。
  3. HTTPは,ステートレスな通信である。
  4. CGIを利用するには,CGIで呼び出される処理プログラムが,クライアントに存在しなければならない。
    × クライアント→サーバ
  5. HTTPSは,パスワードなどで認証を受けたユーザ以外には閲覧できないWebページを閲覧するときに用いる。
    × 送信の暗号化をする
  6. MIMEにより電子メールに画像を入れることができるようになった。
  7. POP3は電子メールの送信用,SMTPは受信用のプロトコルである。
    × 送信・受信が逆
  8. FTPは,ファイルのダウンロードには用いられるが,アップロードには用いられない。
    × アップロードにも用いる
  9. クライアントとサーバを接続して,サーバの持つ機能をクライアントから使うためのプロトコルにDNSがある。
  10. SNMPはネットワーク管理のためのアプリケーションである。

本シリーズの目次へ