3 Minutes NetWorking
No.38

3Minutes NetWorking

第38回レイヤ4 概要

■ レイヤ4の役割

インター博士

いよいよレイヤ4だ。

ネット助手

いえ〜。どんどんどん♪

インター博士

どんどんどん♪

ネット助手

どんどんどん♪

インター博士

どんどんどん♪

ネット助手

どんどんどん♪

インター博士

楽しいか?

ネット助手

…。ええ、まあ、それなりに。

インター博士

なるほど。
どのようなことにも楽しみを見出せるのはよいことだ。

ネット助手

それは、褒めていただいていると解釈すべきなんですか?

インター博士

いや、憐れんでいるのだ
ともかく、レイヤ4だ。さてネット君。昔の話を思い出して、レイヤ4とはどんなレイヤか言ってみたまえ。

ネット助手

昔の話っていうと、第5回ですか。
え〜。「信頼性の高い通信サービスを保証する」と。

インター博士

そうだ。
ここでレイヤ4の立場に立って考えてみると。

ネット助手

レイヤ4の立場?

インター博士

うむ。
レイヤ3以下が実際にデータを運ぶ役割をしている。

ネット助手

そうですね。
レイヤ1が信号で、レイヤ2がLAN内で、レイヤ3がネットワークで、運ぶんですよね。

インター博士

つまり、レイヤ4から見れば、「なんだか知らんがパケットは届く」んだよ。

ネット助手

うわ。
いい加減だ。

インター博士

それがレイヤの独立という奴だよ。
忘れたのか? 以前話した手紙通信の例を思い出せ。手紙を出す人は、ポストに出したらあとは知ったことではなかっただろう?

ネット助手

そうか、そうでしたね。
手紙を出す人が考えるのは内容とか便箋とかで、郵便局と配達人がどのように配達するかなんて考える必要はないんでしたよね。

インター博士

そうだ。
この何故か知らないがどうにかして届くパケットを使って、レイヤ4では送信元から宛先までのデータ転送を制御・調整することを考える。

ネット助手

データ転送の制御・調整?

インター博士

レイヤ3以下で実際にはデータを転送することができる。
だが、これらの転送は基本的に「送りっぱなし」だ。届けるだけが役目なので、エラーがあるとか、届かなかったとかあまり気にしない。

ネット助手

え?
でも、レイヤ2のイーサネットフレームにはFCSがあるし、レイヤ3ではICMPがDestination Unreacheableで相手がいないとか判断するじゃないですか。

インター博士

よしよし、よく覚えていた。
だが、レイヤ2ではエラーは発見するものの、発見したらその場で破棄してしまう。レイヤ3のICMPでは途中でパケットが消えてしまった、などということはわからない。

ネット助手

パケットが消える?
そんなことってありえるのですか?

インター博士

ある。
例えば転送中でメディアに干渉を受けて信号がおかしくなってしまい、レイヤ2のエラーチェックで引っかかってしまう、とかな。

ネット助手

そうすると、エラーチェックで引っかかったフレームは破棄されてしまう。
なるほど。

インター博士

なので、レイヤ4は確実に・正確に相手に届けることを実装するレイヤなのだ。

ネット助手

ははぁ

インター博士

レイヤ4でデータに付けられるヘッダは、これらの制御・調整用の情報だ。
レイヤ3・レイヤ2で取り付けられるヘッダが主に転送用の情報であるのと対照的だな。

[Figure38-01:レイヤ1〜4カプセル化]

ネット助手

へぇ。
ヘッダとしてつける情報の中身が違うんですね。レイヤ4でつける情報ってどんなのです?

インター博士

それは先で話す。
では、レイヤ4が行う制御・調整を話そう。

ネット助手

はい。

■ 確認応答

インター博士

まず、1つ目は。先ほど言った、「送りっぱなし」をどうにかする制御だ。
つまり送ったデータが正確に・確実に届いたかを確認するのだ。

ネット助手

相手に届いたか確認?

インター博士

うむ。
これを確認応答という。

ネット助手

これは名前どおり、「確認の応答」と受け取ってよいんでしょうか?

インター博士

そうだ。
つまり、データを受け取った宛先は、受け取ったことを送信元に伝える

ネット助手

ははぁ。

インター博士

言われてみれば、簡単なことだ。
データを送ったら、「届きましたよ」と返事がかえってくるだけのことだ。それを確認したら、次のデータを送る。

[Figure38-02:確認応答]

ネット助手

もし、確認応答が届かなかったら、送りなおすと。
なるほど、これなら確かに「送りっぱなし」ってわけではないですね。

インター博士

そうだ。
これで「確実かつ正確なデータ転送」が行えることとなったわけだ。

ネット助手

う〜ん。
なんか手間ですねぇ。

インター博士

そうだな。世の中に、障害やエラーがまったくないのならこんな手段を使う必要はないかもな。
だが、残念ながらそうはいかないのが現実だ。

ネット助手

ですね。

インター博士

転送自体にはエラーが発生する要因は必ずある。
なので、転送方法の改善も行うが、それとは別に編み出された手段だな。

ネット助手

なるほど。

■ フロー制御

インター博士

レイヤ4の役割の2つ目は。
そうだな、例えばネット君。

ネット助手

はい。

インター博士

Cealum hume sitien taire.Vertus sahrel shamasantia.Ecce valde generous ale posselna volucirtius.Sona areru ec paldeel.Sona mi areru ec sancitu.Ale posselna Volcucritus.Tenna parena posteri dire.Vertus narrel mea chorus.Aude valde generous ona flare aeterits…

ネット助手

えぇっ?
はい? すいません、もうちょっとゆっくり言ってもらえます?

インター博士

うむ、それだ
このように、処理能力を上回った情報を送られた場合、それを処理しきれず破棄してしまう

ネット助手

確かに。
さっき言われた言葉、半分も覚えてませんよ。

インター博士

まあそれは、君がネット君だからという理由は確かにあるにしろ、記憶をオーバーしてしまうことが確かにある。
こんなことが起きてしまうと、届いたのに意味がない。

ネット助手

そうですね。
届いたのに、処理しきれなかったでは意味がないですよね。

インター博士

なので、レイヤ4ではフロー制御というものを行う。
処理しきれずあふれ出てしまうのを防ぐ、ということだ。

ネット助手

ふろー制御。
どんな制御です?

インター博士

送られてきたデータは、バッファに一時置かれて、そこから処理する。
処理スピードが遅いと、このバッファにどんどん溜まって入りきらなくなる。入りきらないものは、破棄される。

ネット助手

なるほど。さっきの僕も、聞いて、覚えて、翻訳という作業をおこなっていたんですけど、博士の言葉が早すぎて翻訳が間に合わなくなって、覚えきれなくなってしまいましたよ。

インター博士

うむ。よって、あふれ出そうになった場合、転送スピードを下げてもらう、転送を一時中止してもらう。それによって出来た時間的余裕で、バッファ内のデータを処理するわけだ。

ネット助手

海外に旅行する時、「すいませんが、ゆっくり話して下さい」を必ず覚えていくように。
処理しきれないから「ゆっくり話して」もらうんですね。

■ エンドツーエンド

インター博士

3つ目は。
レイヤ2は、同一LAN内の、ノードとノードとの接続で。レイヤ3は、ネットワークとネットワークの接続だったよな。

ネット助手

復習ですか?
えぇ、そうでしたよね。

インター博士

では、レイヤ4はというと。
レイヤ3以下のおかげで、データは宛先のホストまで届いた。だが、これで終わりではないよな?

ネット助手

えっ?
そうなんですか? 宛先に届いたらお終いじゃないんです?

インター博士

うむ。
ホストの、どの通信アプリケーションへのデータかというのがわからないと困るだろう。通信アプリケーションと一口で言っても、いろいろあるぞ。

ネット助手

あ〜。
そうですね。

インター博士

これを識別するために、レイヤ4でつけるヘッダにはポート番号というものがつけられる。
これで通信アプリケーションを特定する。

ネット助手

ぽーと?
ポートっていうと、ハブとかででてきた、差込口ですか?

インター博士

そうだな。
仮想の差込口と思えばいい。各通信アプリケーションにはこれが付けられており、そこへデータを送る、と考えるのがわかりやすいだろう。

ポート番号

[Figure38-03:ポート番号]

インター博士

ホストまで届いたデータは、このポート番号をもとにそのデータが使用されるアプリケーションに渡される。

ネット助手

家の郵便受けまで届いた手紙を、家族の誰宛か見て、その家族に渡すようなものですか。

インター博士

ふむ。なかなかグッドな例えだな、それは。
このように、レイヤ4はアプリケーション間の接続を行うレイヤだ。

ネット助手

アプリケーション間?
送信元のアプリケーションと、宛先のアプリケーションを接続する?

インター博士

うむ、レイヤ2がLAN内のノード間。レイヤ3がネットワーク間を接続するようにな。
データの発生元・受け取り元のアプリケーションが端(エンド)になるので、レイヤ4はエンドツーエンドの接続を行う、と言う。

ネット助手

えんどつーえんど。
端と端。

■ セグメント

インター博士

さて、最後の4つ目だ。
データ、データというが、様々なサイズがある。

ネット助手

そうですね。
大きいのから、小さいのまでありますよね。

インター博士

うむ。
問題は大きい場合だ。大きいまま送るのは非効率的なので、細かく分割して転送する

ネット助手

ははぁ。

インター博士

このように、分割されたデータはセグメントと呼ぶ。
どのぐらいのサイズに分割するかは、使用するレイヤ2、レイヤ3のプロトコルによって異なる。

ネット助手

え〜っと。
大量の荷物を、運べるサイズのダンボールに分けて梱包して、送るってことですか?

インター博士

そうだな、その考え方がいいかもしれん。
そして、各セグメントには元の形を維持するためにシーケンス番号というものがつけられる。

ネット助手

しーけんす番号?
元の形を維持するために?

インター博士

つまり、シーケンス番号順に並べると元のデータになるってことだ。
詳しくは、TCPのところで説明しよう。

ネット助手

はい。

■ TCPとUDP

インター博士

以上のことをレイヤ4は行っていく。
さて、TCP/IPで実際にこれらの制御を行うものは…。前回話したよな。

ネット助手

TCPUDPですね。

インター博士

うむ。
この2つのプロトコルは、通信にあたってどちらか一方が使われる

ネット助手

どちらか一方。

インター博士

何故なら、TCPとUDPは役割が違うだ。

ネット助手

役割。
どういう風に違うんですか?

インター博士

うむうむ。
それはまぁ、先の講釈という奴だ。

ネット助手

なんだ。
ということは、今回はここでお終いってことですね。

インター博士

そうだな。
次回からは、TCPの話をする。

ネット助手

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

FCS
[Frame Chack Sequence]
サイクリック符号方式を用いたエラー発見用のビット列。
ビットが干渉などで狂ってしまったのを発見できる。
確認応答
[Acknowledgment]
通常はACKと省略される。
読みは「アック」。
反対語は否定応答[Negative Acknowledgment:NAK]。こちらの読みは「ナック」。
フロー制御
[flow control]
[flow]は流れる、あふれる、洪水などの意味。
バッファ
[buffer]
緩衝装置、クッション。
データ通信の場合は、データを処理まで一時置いておくメモリを指す。
ポート番号
[port number]
1〜65534までの数字で表される。
詳しくは先の回で。
セグメント
[segment]
トポロジや、LANの分割された範囲と同じ言葉なので混同しないように。
シーケンス番号
[sequence number]
シーケンスは、順序、順番の意味。
ネット助手ネット君の今日のポイント
  • レイヤ4は、送信元から宛先まで、正確・確実に届けるための制御を行う。
  • 確認応答・フロー制御を行い、信頼性の高いデータ転送を行う。
  • どのアプリケーションに届けるかを判別するため、ポート番号を使う。
  • データをセグメントに分割する。
  • レイヤ4はTCPとUDPの2つのプロトコルがあり、どちらか一方を使ってデータ転送を行う。

3 Minutes NetWorking No.38

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