CoNeCo|コンピュータネットワーク with Colab
CoNeCo|コンピュータネットワーク with Colab
Google Colabで作りながらコンピュータネットワークを学ぶための教材です。
大学生~大学院生から初級エンジニアを想定し、初学者向けに作られています。
作って学べる
従来の座学では、プロトコルの名前や仕様を覚えるだけになりがちで、退屈で頭に入りにくい面がありました。
自分でコーディングすることで、体感しながらコンピュータネットワークの基本を学べます。
シンプルな設計
既存のネットワークシミュレータは高機能な一方で、技術的あるいはコスト的にハードルが高く初学者向けではありませんでした。
そこで初学者向けにシンプルに設計された学習用のシミュレータを新たに開発しました。
環境整備が不要
通信の実験をするには、複数のデバイスが必要になり、またOS等の環境による違いもあり、敷居が高くなりがちでした。
Colabでのシミュレーションにより学習するため、環境整備がほとんど不要です。
CC-BY-SA
シミュレータのコードについては、CC-BY-SAライセンスとします。改変・改良などして利用してくださって構いません。
あ学習用としてのシンプルさを優先した設計のため、実際のプロトコルの挙動とは異なる場合があります。
ある程度のテストは行っていますが、動作保証はできかねます。
また使い方などに関するお問い合わせにはお答えしきれません。
第12回
輻輳とウインドウ制御
-
本章ではネットワークの混雑を表す輻輳と、それを防ぐためのTCPのウインドウ制御について学習します。
-
Tahoe, Renoなどの古典的な輻輳制御アルゴリズムの実装を通して、ウインドウ制御の考え方を学びます。
-
混雑による輻輳と遅延増大を確認し、多くの人やサービスが共同で利用するネットワークの性質について学びます。
第13回
待ち行列と通信品質
-
本章ではメモリでの転送待ち遅延とスケジューリングと通信品質の関係について学習します。
-
機器のメモリを表すキューと、適切な順番でパケットを読み出すスケジューラを実装します。
-
電話やファイル転送などアプリケーションの特性に応じた優先制御や、ユーザ間の公平性を保つ仕組みを学びます。
第14回
アプリケーションとデータ転送
-
本章ではテキストやファイル、メールなどを転送するアプリケーションプロトコルについて学習します。
-
TCP以下のレイヤが汎用的だったのに対して、アプリケーションごとに最適なプロトコルが開発されていることを学びます。
-
ファイル転送などを題材に、日常的に利用しているアプリケーションの動く仕組みについて学びます。
第15回
暗号化と鍵交換
-
本章ではインターネットのセキュリティを支える暗号化と鍵交換の仕組みについて学習します。
-
HTTPSにおいて必須となるSSL/TLSの鍵交換を行うハンドシェイクの流れを実装します。
-
ネットワークにおけるセキュリティの重要性と、暗号化の基本的な技術について学びます。