Linuxとネットワークの世界へのトレーニングプロジェクトとして、C++でIPスタックを実装したいと思います。Linux IPスタックがどのように機能するかについてはある程度の知識がありますが、前述したように、パフォーマンスに重点を置くのではなく、優れた設計のC++で何かを実装したいと思います。
C ++で書かれたIPスタックの書かれたデザイン(いくつかのUML +シーケンス図)をどこで見つけることができるか知っている人はいますか?
Linuxとネットワークの世界へのトレーニングプロジェクトとして、C++でIPスタックを実装したいと思います。Linux IPスタックがどのように機能するかについてはある程度の知識がありますが、前述したように、パフォーマンスに重点を置くのではなく、優れた設計のC++で何かを実装したいと思います。
C ++で書かれたIPスタックの書かれたデザイン(いくつかのUML +シーケンス図)をどこで見つけることができるか知っている人はいますか?
TCP/IP スタック用の UML 設計はほとんど存在しないと考えていましたが、検索するといくつかの参考文献が見つかりました。ただし、これらはどれも非常に広範囲に及ぶようには見えず、私が本当にお勧めするものもありません.
OO 言語で IP スタックのソース コードを見つけることができれば、有用なクラスを抽出して、独自のモデルの作成を開始できるはずです。
明らかに、動作するソース コードを作成することが究極の最終手段ですが、ネットワーク プロトコルについて学びたい場合は、RFC や優れた本 (Comer や Stevens など) を読んで、独自のモデルをゼロから作成することに勝るものはありません。他の誰かの UML を使用してコードを作成することは、ネットワーク プロトコルについて学習するという演習の目的に反するように思われます。RFC を理解せずに、モデルがどれほど優れているかをどうやって知ることができますか?
Moy による "OSPF Complete Implementation" という素晴らしい本があります。この本には C++ コードが含まれていますが、そのモデル インターフェイスと LSA の全体にわたっていくつかのクラス ダイアグラムも含まれています。
これらのいずれかが良い例かどうかはわかりませんが、Linux および FreeBSD の IP スタックのソース コードをいつでも確認できます。
Douglas E. Comer と David L. Stevens によるInternetworking with TCP/IP, Volume II: Design, Implementation, and Internalsのコピーを入手することをお勧めします。ソース コードを TCP/IP 実装に提示し、多くの解説を付けて説明します。
「TCP/IP Illustrated, Volumes 1-3」は、この主題に関する権威ある著作です。そういえば、元の BSD スタックは第 2 巻に基づいて実装されていました。第 1 巻では、プロトコルについて詳細に説明されています。RFC 標準ドキュメントは、平均的なプログラマーにも簡単にアクセスできます。これらのドキュメントは古いため、準拠した最新の実装が必要な場合は、RFC 標準ドキュメントが必要になります。長年にわたり、標準には多くの追加と変更が行われてきましたが、IPv6 は大きなものの 1 つです。
もう 1 つ考慮する必要があるのは、(通常は) IP 層の基礎となるイーサネット プロトコルです。本はありますが、どれもお勧めできるほど読んでいません。これらの規格は、IEEE から自由に入手できます。 http://standards.ieee.org/getieee802/802.11.html