3 Minutes NetWorking
No.49

3Minutes NetWorking

第49回レイヤ5 概要

■ OSIモデルとTCP/IPモデル

インター博士

まずネットワークモデルの復習からだ。

ネット助手

またですか。

レイヤ5〜7アプリケーション層HTTPFTPDHCPDNS
レイヤ4トランスポート層TCPUDP
レイヤ3インターネット層IP
レイヤ1〜2ネットワークインタフェース層Ethernet

[Table48-01:TCP/IPモデル]

インター博士

「また」と言ったかね、ネット君?
では理解しているであろうネット君に質問する。OSIモデルとTCP/IPモデルの最大の違いは何かね?

ネット助手

えっへっへ。そんな事なら上のモデルを見れば一発ですよ。
OSIは7層なのに対して、TCP/IPは4層です。

インター博士

違う。
最大の相違点はOSIモデルは実装レベルではないという点だ。

ネット助手

…そういえば、そんなことを第37回で言っていたような。

インター博士

設計図と、実際に作り上げたものは違う、という言い方のほうがいいかな。
あくまで「こういう形にしよう」という標準であって、実際のプロトコル・スイートと完全に一致しない

ネット助手

そうですね、TCP/IPモデルの場合、レイヤ1・2がインタフェース層、レイヤ5・6・7がアプリケーション層とかいってまとまってますもんね。

インター博士

特にレイヤ5・6・7はTCP/IPの場合まとめて1つのプロトコルで実装されているので明確な線引きが難しい

ネット助手

えぇ〜っと。例えばTCP/IPのアプリケーション層のプロトコルだと、HTTPがありますけど。
HTTPは3つの層の役割をすべてこなすってことですか?

インター博士

うむ。50回目ともなるとさすがにこなれてきたな。なかなかいいぞ。

ネット助手

えへへ。

インター博士

ようやっと人並みってところだがな。

ネット助手

ぐぐぅ。辛口だ。

インター博士

ともかく、その通りだ。レイヤ4まではこの層はコレ、と説明できたが、ここから先はアプリケーションやサービスによってやったりやらなかったり、色々だ。なので曖昧な説明が多くなるかと思うが我慢したまえ。

ネット助手

曖昧ですか。

インター博士

詳しい話はレイヤ7以降で、プロトコル別の説明する。

ネット助手

了解です。

■ セッション

インター博士

レイヤ5はセションもしくはセッション層と呼ばれるレイヤだ。
ネット君、sessionの意味は?

ネット助手

え〜っと。
「話し合い」「打ち合わせ」「会議」「学期」などと、Excite辞書が。 ▼ link

インター博士

うむ。話し合いだ。つまりプロセス間の話し合いの管理がセッション層の役割だ。
以前、ペンフレンドとの文通の話をしたな。

ネット助手

キャシーとの話ですね。第5回の時の。

インター博士

まだ似非外国人との文通は続いているのかね?
ともかく、話し合いの開始、維持、終了を管理するということだ。

ネット助手

似非じゃないですよ、コネティカット出身ですって。
でも……そういえば写真を送ってくれる約束をしたんだけど……。

インター博士

そこまでだネット君。ゼミ生が悲嘆にくれる所は見たくないので、あとで家に帰ってから考えてくれ。

ネット助手

は、はぁ。博士がそうおっしゃるなら。
それで、話し合いの管理って具体的に何をするんですか?

インター博士

うむ。セッションというものをまず理解してもらうことからいこう。
例えばFTPは2つのコネクションを使ってファイルのやり取りを行う。

[Figure49-01:FTPにおけるセッション]

インター博士

2つのコネクションによって、ユーザ認証から始まって、ディレクトリの情報、ファイル交換、交換後のディレクトリの情報、そしてまたファイル交換……と必要な分のファイル交換が行われるわけだ。

ネット助手

ディレクトリの情報や、ファイルが「話す言葉」の「会話」なんですね。

インター博士

うむ。そして必要な分だけファイル交換が終わったら、コネクションを切断する
このような会話(セッション)全体の管理を行うのがレイヤ5の役割だ。

ネット助手

管理って一言でいわれてもパッとしませんけど。

インター博士

まず、セッションの確立だな。
アプリケーションと一言で言っても、いくつものプロセスから成り立っていることもある。通信するプロセスが複数ある場合もあるのでプロセスごとのデータが混ざらないようにプロセスの識別を行う必要がある。

ネット助手

プロセスの識別? データが混ざらないように?
……どっかで聞いたような…?

インター博士

うむ。つまりポート番号を決定して、レイヤ4に渡すわけだ。

レイヤ4/TCP

[Figure48-02:レイヤ4/TCP]

ネット助手

あぁ、なるほど。

インター博士

そうすると、TCPがコネクションを接続してくれるわけだ。

ネット助手

UDPの場合は?

インター博士

UDPはいきなり送りつける事になる。ともかくその時点からセッションがスタートする。

ネット助手

次はセッションの維持ですよね、何をするんですか?

インター博士

会話として成立するように制御を行うわけだ。ダイアログ制御という。

ダイアログ制御1

[Figure49-02:ダイアログ制御・1]

ダイアログ制御2

[Figure49-03:ダイアログ制御・2]

インター博士

(1)の図は会話として成立するが、(2)は返事がこないうちに新しい話題をしてしまっている。
これは会話として成立しているといえるかな?

ネット助手

会話とはいえないですよね。一方的に好き勝手喋ってるだけで。

インター博士

うむ、つまり要求と応答の役割分担の取り決めを行う必要がある、ということだ。

ネット助手

ん〜っと。これってTCPの確認応答と同じ形ですよね。
シーケンス番号と確認応答番号で送るデータの順番を管理して。

インター博士

まぁ似ているが、同じではない。
TCPは双方が同時に送れる全二重通信だ。

TCPの全二重通信

[Figure49-04:TCPの全二重通信]

インター博士

TCPが確認応答を使って制御するのは、あくまでもデータを元の順序で正確に送るためだ。
データの流れ自体を制御するわけではないので、上の図のようにすれ違いでデータを送りあうことだってある。

ネット助手

う〜ん、そうかぁ。確かに上の図はすれ違ってるけど、TCPとしてはおかしい所がないものなぁ。

インター博士

そうだ。別に悪くはない。だが上の図のようなすれ違いをしてもらっては困るアプリケーションだってある。そのためにダイアログ制御を行う必要がある。

ネット助手

「今度はこっちが喋る番」・「聞く番」とかで役割を変えるわけですね。

インター博士

そういうことだ。

ネット助手

なるほどです。

インター博士

さらにセッションの管理としては、チェックポイントを決めて、中断からの復旧や同期の制御を行う。

ネット助手

ちぇっくぽいんと?
中断からの復旧や同期?

インター博士

まぁ、簡単に言えばセーブポイントだな。

チェックポイントと復旧

[Figure49-05:チェックポイントと復旧]

インター博士

対話をいったん打ち切って、チェックポイントの設置を行う。いったん今までの対話を保存して、あらたに同期を取り直すわけだ。
何かあった場合、少なくともこのチェックポイントまでは戻れるようにな。

ネット助手

ははぁ。あれですね。
Wordが自動で作成する「~$なんとか」とかいうファイルみたいな奴ですね、自動保存して最悪そこまでは元に戻せるように。

インター博士

なかなかいい例だ。Wordの文書作成を、Wordと人との対話と考えればその「~$なんとか」の自動保存がチェックポイントと言えるだろう。

ネット助手

あれのおかげで、数時間かけて作成してるファイルが飛んでしまって絶叫することがなくなりますもんね。

インター博士

それは誰でも一度は通る道だがな。
ともかく、これは一例で、アプリケーションによってこれらの制御を行う、行わないがある。これらがセッションの管理と呼ばれるものだな。

ネット助手

なるほど。

インター博士

そしてデータを転送し終わったらセッションの切断を行って会話終了、だ。

ネット助手

セッションの開始でポートを決定して開いたから、ポートを閉じて終了、ですね。

■ セッションとコネクション

インター博士

つまり、レイヤ5ではデータ転送の流れを管理するわけだ。

ネット助手

う〜ん、コネクションとの区別がいまいちわからないんですけど。

インター博士

そうだな。かなり混同しやすい概念だな。
かなり曖昧な概念だし、コネクションと同じ説明をセッションでしてるのを聞いたこともある。

ネット助手

そうですよね、なんかどちらも同じ接続じゃんか、って話になっちゃいそうです。

インター博士

役割が違う。コネクションの接続・切断はデータ転送用回線の接続・切断を示すのに対して、セッションはもう一段上のデータ転送の開始と終了を表すのだよ。

ネット助手

ううぅ?

インター博士

簡単に言えば、コネクションはデータを送るセッションは会話を成立させるかな。

ネット助手

ん〜。

インター博士

ややこしいのは、コネクションを接続してデータを届けるようにできないと、会話であるセッションを開始できない。
大体のセッションは、1つのセッションにつき1つのコネクションですんでしまう、という点かな。

ネット助手

ははぁ、なんとなくわかったようなわからないような。

インター博士

HTTPで例をあげよう。
例えば、この「3分間ネットワーキング第49回」だが、HTMLファイルと画像(Flash含む)からなりたってるな。

ネット助手

そうですね。

インター博士

HTMLファイルと画像1枚1枚を送るのはコネクションで作られた通信路。
全体で1つのページとして扱い、管理するのがセッション。

ネット助手

管理するって、実際に表示するとかですか?

インター博士

いや、表示はブラウザの仕事だ。
通常のHTTPではHTMLファイル、画像1枚1枚の転送全体を管理することはあまりないが、SSLなどではセッションで暗号が管理される。

ネット助手

ははぁ、暗号の管理。
ん〜っと、HTTPのHTMLファイルや画像などを暗号化する鍵を、ページ全体で同じのを使う、とかそういうことですか?

インター博士

うむ、そう考えてもらって問題ない。

ネット助手

つまり、コネクションをまとめたものが、セッションって感じですか?

インター博士

うぅむ、まとめたというかなんというか。確かにSSLではそんな感じだな。

■ レイヤ5プロトコル

インター博士

TCP/IPでは特にレイヤ5で特定したプロトコルというものは存在しない。

ネット助手

あれ? SSLは?

インター博士

そうだな、SSLは確かにレイヤ5に近い位置にあるプロトコルだな。
ともかく、TCP/IP以外でいうならば、NFSRPCなどがある。

ネット助手

えぬえふえす、あらーるぴーしーですか。

インター博士

AppleTalkプロトコル・スイートなら、AppleTalk Session Protocolと呼ばれるプロトコルがある。

ネット助手

そりゃまたストレートな名前ですね。

インター博士

うむ。まぁ正直TCP/IPではそんなに気にする必要のないレイヤだ。
詳しく覚えておく必要はない。

ネット助手

今回の分を否定するような事言わないでくださいよ。
いいんですか、それで?

インター博士

いい。本当にそうだからな。セッションについて必要な場合はそのプロトコルでまた個別に説明することになるしな。
さて、今日はこんなところで終わりにしよう。

ネット助手

はい。

インター博士

次回はレイヤ6だ。

ネット助手

了解です。
3分間ネットワーキングでした〜♪

レイヤ5・6・7
まとめて上位層と呼ばれたりもします。
Excite辞書
ものすご〜くお世話になってます。
長文の翻訳ができるExcite翻訳も便利。
コネクションを切断する
基本的にFTP-Controlのコネクションは接続しっぱなしですが、FTP-Dataの方はファイル1つにつき1つのコネクションを接続し、そのファイルの転送が終了したらコネクションを切断します。
ダイアログ制御
[dialog control]
dialogは「対話」という意味。
SSL
[Secure Socket Layer]
Webサーバとクライアント間のデータ通信を暗号化して行うプロトコル。
HTTPS[Hyper Text Transfer Protocol over SSL]という形でHTTPに実装される。
NFS
[Network File System]
UNIXで使われるネットワークファイル共有システム。
RPC
[Remote Procedure Call]
異なる場所のコンピュータ上のプログラムをネットワークで呼び出す事を可能とするシステム。
ネット助手ネット君の今日のポイント
  • TCP/IPではレイヤ5・6・7はまとめて1つのプロトコルに実装されている。
  • レイヤ5はセッションの開始、維持、管理、終了を行う。

3 Minutes NetWorking No.49

管理人:aji-ssz(at)selene.is.dream.jp