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

by 菊地時夫 last modified 2009-07-06 11:44

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

  • DNS
  • HTTP
  • SMTP
  • POP

DNS (Domain Name System)

  • IP アドレスを覚えるのは大変
  • ホストに名前を付ける
  • ARPANET ... hosts ファイルを一元管理
  • DNS の登場

ドメイン名の構造

  • 例: is.kochi-u.ac.jp
  • is ... 情報科学 (Information Science)
  • kochi-u ... 高知大学
  • ac ... 学術機関 (academy)
  • jp ... 日本 ccTLD (ISO-3161-1)

日本のドメイン

  • ac ... 大学等
  • co ... 企業 (company)
  • go ... 政府 (government)
  • or ... 法人 (organization)
  • ...
  • 汎用ドメイン

世界のドメイン

  • com ... Company
  • org ... Organization
  • net ... Network
  • edu ... University (U.S.)
  • gov ... Government (U.S.)
  • mil ... Military (U.S.)
  • ccTLD ... 国 (ISO-3161)

ドメイン登録の仕組み

  • ICANN-Accredited Registrars で登録
  • JPRS (の指定事業者)で登録
  • Whois データベースに そのドメインのDNS を登録
  • -> Root DNS / JP DNS に登録

ドメイン名に使える文字

  • a-z,0-9,"-"
  • "-" で始まらないこと
  • 日本語ドメインは?
  • punycode

ドメインの逆引き

  • IP アドレス -> ドメイン名
  • 133.97.166.13 なら、
  • 13.166.97.133.in-addr.arpa を検索
  • IP アドレス (8bit 区切り)を逆に並べる(階層性)
  • PTR レコードを検索する

HTTP

  • HyperText Transfer Protocol
  • WWW ... World-Wide Web の構成要素
    • HTML (HyperText Markup Language)
    • URL (Uniform Resource Locator)

WWW の仕組み

HTTP の Philosophy

  • Simple is Best. ... 簡単
  • 「状態」を作らない
  • 要求 1回 ... 応答 1回

HTTP Specifications

  • TCP Port 80
  • HTTP/1.0
  • HTTP/1.1
    • Host ヘッダ必須
  • HTTP/0.9 (RFC 無し) もあった

HTTP のデータやりとり(Transaction)

  • TCP Connection
  • Client -> Server
    GET / HTTP/1.1
    Host: www.example.jp
    [空行]
  • Server -> Client
    200 OK
    Content-Type: text/html
    ...
    [空行]
    <HTML>
    ....
    

HTTP 要求の構造

  • Method (コマンド) URI HTTP-version
  • ヘッダ
  • 空行
  • データ(必要なら)

HTTP 応答の構造

  • 応答コード
  • ヘッダ
  • 空行
  • Entity (実体・データ・中身)

HTTP Methods

  • GET ... データの取得
  • POST ... データの送信(とそれに応じたデータの取得)
  • HEAD ... ヘッダのみの取得
  • その他 RFC-2616 9章

応答コード

  • 200 OK
  • 301 Moved Permanently
  • 403 Forbidden
  • 404 Not Found
  • 500 Internal Server Error
  • その他 RFC-2616 10章

ヘッダ

  • 一般ヘッダ (General Header)
  • 要求ヘッダ (Request Header)
  • 応答ヘッダ (Response Header)
  • 実体ヘッダ (Entity Header)

ヘッダの例

  • Host: www.example.jp
    • 要求ヘッダ
    • 仮想ホストの区別
  • Accept-Language: ja
    • 要求ヘッダ
    • 言語(日本語)
  • Content-Type: text/html; charset=UTF-8
    • 実体ヘッダ
    • 実体の内容タイプ(HTML文書)文字コード UTF-8

Content-Type のいろいろ

  • MIME Media Types
  • text/plain ... テキスト形式(平文)
  • image/jpeg ... 画像(JPEG圧縮)
  • audio/mpeg ... 音声
  • application/msword ... マイクロソフトワード

HTTP には「状態」が無い

  • ログインは?
  • Cookie を使う
  • Server -> Client ... Set-Cookie:
  • Client -> Server ... Cookie:

メールのプロトコル

  • SMTP ... メール送信・サーバー間転送
  • POP ... メール受信

メール伝送の全体像

SMTP

  • Simple Mail Transfer Protocol
  • TCP ポート 25
  • RFC-5321
  • コマンド進行によって「状態」ができる

SMTP Transaction

  • TCP Connection
    S: 220 smtp.example.com
    C: HELO mail.example.jp
    S: 250 OK
    C: MAIL From: [email protected]
    S: 250 OK
    C: RCPT To: [email protected]
    S: 250 OK
    C: DATA
    S: 354 Start mail input; end with .
    C: Blah blah blah...
    C: .
    S: 250 OK
    C: QUIT
    S: 221 smtp.example.com closing connection
    
  • TCP Connection Close

ESMTP

  • Extended (拡張)SMTP
  • EHLO ... オプション・リストの要求
  • AUTH ... パスワード認証
  • STARTTLS ... 伝送チャンネルの暗号化

POP

  • Post Office Protocol Version 3
  • TCP Port 110
  • RFC 1939

POP Transaction

+OK Pop server starting.
USER foo
+OK Password required for foo.
PASS secret
+OK foo has 2 visible messages.
RETR 2
+OK 1997 octets
... (メール)
QUIT
+OK Pop server signing off.

本日の問題

  • 次の文の空欄に適当な言葉を下から選んで入れなさい。
  • WWW のプロトコルである ( HTTP ) では、コマンド送信1回に対して応答1回を 基本としていて、( 状態 ) が無いのに対し、メール中継プロトコルの ( SMTP ) や メール受信プロトコルである ( POP ) では、複数の送信先入力や認証に対応する ため ( 状態 ) があり、同じコマンドに対して応答が異なることがある。
  • DNS, POP, SMTP, HTTP, コネクション, ふくそう, 状態
    • 同じ言葉が2ヶ所以上に入るかもしれません