■ レイヤ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で実際にこれらの制御を行うものは…。前回話したよな。
TCPとUDPですね。
うむ。
この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つのプロトコルがあり、どちらか一方を使ってデータ転送を行う。