食わず嫌いのためのネットワークアーキテクチャ入門

この記事は、SFC生研究紹介 Advent Calendar 2018 - Adventar

3日目です。

 

皆さんこんにちは、にゃつめです。私は普段村井研にてネットワークアーキテクチャ(L2〜L4)の研究を行っています。

 

...という文言を自己紹介に用いているのですが、

  • SFC生にそもそもここをメインでやってる人がほとんどいない
  • 研究室外の人には字面から具体的な「何をやっているのか」が想像しにくい

といったところから、「結局お前何者なんだよ」となりがちです。

村井研には数多のKG(研究軍団だったりグループだったり)が存在しますが、そのうちアーキテクチャを扱っているKGはわずか2つ、ネットワークアーキテクチャメインなのはたった二人というなんとも寂しい界隈と化してしまっています...

 

そこでこの記事では、どういうことをやっているのか、どんな知識が必要なのかを触りだけ、広く浅く取扱いたいとおもいます。

 

 インターネットざっくり解説

線をつなぐだけじゃだめ

みなさんが普段使っているインターネットですが、「どうやってつながっているのか」を考えたことはありますか?

実は、インターネットはただ線を繋げただけでは通信を行うことができません。

 

例えば、糸電話を想像してみてください。仮に糸(コネクション)がしっかり張られていたとしても、向こうが英語、こちらは日本語で話したりしていては会話は成立しませんよね。「日本語で話すよ〜」ということを(暗示的にしろ)約束しておかなければなりません。この約束をプロトコルといいます。有名なところでいうとTCP/IPなどは聞いたことが有るのではないでしょうか。

 約束事は共有するもの

折角プロトコルを定めても、会社ごとに別のプロトコルを利用しているようでは全く意味がありません。そこで、昔のえらい人が全てのベンダーに「これを雛形にしてください」というのを作りました。この統一された規格の事をOSI参照モデルといいます。このワードは、ネットワークに1ミリでも関わっている人なら誰でも知ってるワードなので、よく覚えておきましょう!

OSI参照モデル

では、とりあえずOSI参照モデルを見てみましょう。

f:id:nyatsume:20181206163213j:plain


このように、通信に必要な行程を7階層に分けたものです。上の階層から順番に、通信に必要なデータを成形し、物理層からパケット(送信したいデータ)を流す...という流れになっています。長くなってしまうので、各階層の詳しい解説は割愛します。

ここまでで興味を持ってくれた人は、ぜひ

3 Minutes Networking

を読んでみてください!わかりやすく、詳しく説明してくれているのでおすすめです。

下位レイヤーって難しそう...

アーキテクチャ」という言葉を聞いて、「CPUのはんだ付けでもやってるのでは?」と聞いてくる人も一定数いるのですが、そういった物理層以下の研究をやっているひとは(少なくともうちのグループには)ほとんどいません。ではどの層をやっているのかを、先程のOSI参照モデルで見てみましょう。

f:id:nyatsume:20181206165303j:plain

この辺りです。物理層を扱うこともあります。

 

...ん?案外高くね?

と思った皆さん、その通り!このあたりの研究では、(殆どの場合)0と1のみの機械言語や、アセンブリ言語といったものを解読する必要はありません!C言語などのおなじみの言語で記述でき、出力も英語です!そんなに敷居は高くないよ!!

 必要な道具・知識

まず必要な道具ですが

  • PC

これだけです!

サーバーとかの特別な機材を買わなければいけないのでは?と思われがちですが、最近ではVMなどの仮想環境で擬似的にサーバーを立てることが可能なので、実験環境を手軽に構築できるようになりました。

 

次に知識ですが、これに関してはやっていくうちに必然的に覚えていくので最初はあまり気にする必要はありません。最初のうちに習得したいスキルとしては

などですかね。言ってしまえばわかんなくなったらggれば大丈夫です。そのときに覚えれば。

私もやり始めた1年前はC言語すらわからない状態からはじめましたが、半期ほど在籍したタイミングで大枠のテーマが決まるレベルまでの理解はできたので、理解までの時間も特段長いということはないかと思います。

おまけ・自身の研究について

ここまで見てくれたあなた、どうもありがとうございます。いつでもうちの研究室にきてください。歓迎しますよ。

 

最後に少しだけマニアックな話を。現在私は、レイヤ4のロードバランサに関する研究を行っています。

 

f:id:nyatsume:20181206182135j:plain

 

  図でいうとこの辺ですね。ソフトウェアの性能にハードが追いつかないというイメージが一般的かと思いますが、ネットワークの世界はその逆、つまりハードウェアの性能にソフトウェアが追いつかない事が多いです。折角高速に通信を行えるデバイスが生まれても、そのパケットを高速にソフトウェアが捌けないと結局は通信は低速になってしまいます。高速にパケットを複数のサーバーにバラけさせるソフトウェアを開発してるんだなにゃつめは...という認識をしていただければ大丈夫です。

 

以上、簡単なネットワークの入門記事を書かせていただきました。もしこれを読んで少しでも興味を持っていただけたなら幸いです。みんなRGに来てネットワークの研究、しよう!

参考文献

qiita.com