連載第1回
|
|
まずは相手を知ることから。 |
あちこちで名前をよく聞くのに、どんなシロモノなのかよく分からない。こういう言葉は結構ありますよね。例えば「デリバティブ」とかも、そんな単語かもしれません。「天候デリバティブ」とかいわれると、筆者の場合、クエスチョンマークが頭の上にたくさん並びます。もちろん金融商品らしいことまでは分かるのですが、その中身がどうなっているのか、イマイチぴんと来ない感じです。「TCP」という言葉も、これと似たような分かりにくさを持っているような気がします。
TCPの働きを一言でいえば、下位レイヤ、つまり共通で利用する機能の中でも、「正確で確実な通信をするための仕組み」ということができます。
コンピュータネットワークと聞くと、それ自体がとても正確に機能する印象がありますが、実際は「たまに問題が起こるけど、それをうまくカバーして、正確な通信ができるようにしている」のに近いといえます。
例えば、コネクタではときどき接触不良が起こるかもしれません。もし近所に雷が落ちたら、そこからの大きな雑音で、通信中のデータが書き換わってしまうかもしれません。このほかにも、その時々の状況によって、いろんな問題が発生します。そんなときでも、できる限り悪い影響を取り除いて、正確で確実な通信ができるよういろんな手を尽くす。TCPはそんなことをしています。
ネットワークでどんな問題が起こるのか、ここでは伝言ゲームに例えてみたいと思います。伝言ゲームはご存じですよね? ある決められた言葉を、何人もの人が伝言として伝えていき、最後の人がその言葉を大声でいって、最初の言葉と合っていればOKというゲームです(図3)。
図3 伝言ゲームではちょっとした間違いが起こることも |
伝言ゲームをしてみると、大部分の言葉は正しく伝わりますが、ときどき、なぜか違った言葉になることがあります。これは伝言中に言葉が間違って伝わった例です。特に周囲がうるさい場合には間違えやすいでしょう。また、何度も速いスピードで繰り返していると、たくさんある伝言の中の1つを伝え忘れる人が出てきたり、反対に同じ言葉を2度伝えてしまう人も出てくるでしょう。あるいは、2つを入れ違えてしまったり、モタモタして次の人に伝えるのが遅れてしまうかもしれません。
話を伝える人、伝えられた話を聞く人、さらにはその周りの状況によって、伝言ゲームの情報ネットワークは、ときどきデータを誤ったり、スムーズな通信をすることができない場合もあるわけです。実は、コンピュータ同士のネットワークも、これと似たような状況が起こるんです。
TCPは難しいというけれど、この伝言ゲームに例えて考えれば、問題を解決するアイデアは結構すんなり理解できると思います。
このアイデアを大ざっぱにいえば「データに番号を付ける」「お互いに受け取り確認をする」「忙しいときは、ちょっと待ってと伝える」「ゆっくり始める」です(図4)。コンピュータ同士の通信といっても、何だか人間的でしょう?
「データに番号を付ける」
1.2.3.4.・・・・
|
「お互いに受け取り確認をする」OK?
Yes!
|
「忙しいときは、ちょっと待ってと伝える」WAIT |
「ゆっくり始める」 Restart slowly |
図4 TCPの基になっているアイデア |
データに番号を付けると何ができるでしょうか。まずデータが順番どおりに来ているのかが分かります。そしてさらに、データに抜けや重複がないかも分かります。もし順番が入れ違っていたら、それは単に番号どおりに並べ替えればいいですね。データの抜けがあったら、もう1回送ってくれるようにリクエストすればいいですし、重複があったら1つ捨てればOKです。番号があるだけで、かなり信頼感が生まれるんですね。
お互いの受け取り確認も大切です。データの番号を使って「○番受け取ったよ」と知らせてあげれば、送信したデータをちゃんと受け取ってもらったことが分かります。また、ちょっと忙しくて受け取れなさそうなら、「ちょっと待って」と伝えます。お互いに声を掛け合うことで、1つの仕事を着実に進めていく。この辺も、何だか人間の行動とよく似ていますね。
もう1つ面白いのは「ゆっくり始める」です。いきなりドーンと最高スピードで走り始めたら、ほかの人がついて行けなかった。そんなことがないよう、様子を見ながら、だんだんスピードを上げていくんです。こうすれば総崩れにならずに済みますね。さらにこの方法は、ゆっくり始めて少しずつスピード上げていくことで、そのときの状況に応じた、最も速い速度を見つけて通信することにもなります。
こうして見ると、TCPといっても、普通の人間の理解を超えた、超ムズカシイことをやっているわけではなさそうでしょう? もちろん、実物のTCPはこんなに単純ではありません。できるだけ効率よくサクッと通信する工夫など、いろんな知恵もたっぷり詰め込んであります。でも、元の元にあるアイデアは、意外に分かりやすいものなんです。
プロトコルの迷宮を歩く楽しみへ |
|
関連リンク | |
連載:TCP/IPアレルギー撲滅ドリル【超実践編】(上位レイヤ編) 連載:インターネット・プロトコル詳説 連載:ルータの仕組みを学ぼう ホストのネット接続は正しく行われているか? 〜netstatによるネットワーク設定の確認〜 |
「Master of IP Network総合インデックス」 |
- 完全HTTPS化のメリットと極意を大規模Webサービス――ピクシブ、クックパッド、ヤフーの事例から探る (2017/7/13)
2017年6月21日、ピクシブのオフィスで、同社主催の「大規模HTTPS導入Night」が開催された。大規模Webサービスで完全HTTPS化を行うに当たっての技術的、および非技術的な悩みや成果をテーマに、ヤフー、クックパッド、ピクシブの3社が、それぞれの事例について語り合った - ソラコムは、あなたの気が付かないうちに、少しずつ「次」へ進んでいる (2017/7/6)
ソラコムは、「トランスポート技術への非依存」度を高めている。当初はIoT用格安SIMというイメージもあったが、徐々に脱皮しようとしている。パブリッククラウドと同様、付加サービスでユーザーをつかんでいるからだ - Cisco SystemsのIntent-based Networkingは、どうネットワークエンジニアの仕事を変えるか (2017/7/4)
Cisco Systemsは2017年6月、同社イベントCisco Live 2017で、「THE NETWORK. INTUITIVE.」あるいは「Intent-based Networking」といった言葉を使い、ネットワークの構築・運用、そしてネットワークエンジニアの仕事を変えていくと説明した。これはどういうことなのだろうか - ifconfig 〜(IP)ネットワーク環境の確認/設定を行う (2017/7/3)
ifconfigは、LinuxやmacOSなど、主にUNIX系OSで用いるネットワーク環境の状態確認、設定のためのコマンドだ。IPアドレスやサブネットマスク、ブロードキャストアドレスなどの基本的な設定ができる他、イーサネットフレームの最大転送サイズ(MTU)の変更や、VLAN疑似デバイスの作成も可能だ。
|
|