■ OSIモデルとTCP/IPモデル
まずネットワークモデルの復習からだ。
またですか。
レイヤ5〜7 | アプリケーション層 | HTTP | FTP | DHCP | DNS |
レイヤ4 | トランスポート層 | TCP | UDP | ||
レイヤ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に渡すわけだ。
[Figure48-02:レイヤ4/TCP]
あぁ、なるほど。
そうすると、TCPがコネクションを接続してくれるわけだ。
UDPの場合は?
UDPはいきなり送りつける事になる。ともかくその時点からセッションがスタートする。
次はセッションの維持ですよね、何をするんですか?
会話として成立するように制御を行うわけだ。ダイアログ制御という。
[Figure49-02:ダイアログ制御・1]
[Figure49-03:ダイアログ制御・2]
(1)の図は会話として成立するが、(2)は返事がこないうちに新しい話題をしてしまっている。
これは会話として成立しているといえるかな?
会話とはいえないですよね。一方的に好き勝手喋ってるだけで。
うむ、つまり要求と応答の役割分担の取り決めを行う必要がある、ということだ。
ん〜っと。これって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以外でいうならば、NFSやRPCなどがある。
えぬえふえす、あらーるぴーしーですか。
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はセッションの開始、維持、管理、終了を行う。
- 参考リンク
-
- Excite辞書http://eiwa.excite.co.jp/▲
- Excite翻訳http://www.excite.co.jp/world/text/▲