TCP実装

TCPスタックをイチから実装する試みをしている。

参考書籍はこちら

ゼロからのTCP/IPプロトコルスタック自作入門|マイナビブックス
ネットワーク機能を
book.mynavi.jp

Githubはこちらのよう

GitHub - pandax381/seccamp2024
Contribute to pandax381/seccamp2024 development by creating an account on GitHub.
GitHub

これをベース?にkoba789さんが24時間で実装しており影響を受けて自分も取り組んでいる。

【前半】自作TCP/IPスタックをRustで実装するまで年を越せない【24時間耐久】 #ch789
本気のインターネットってやつを見せてやるよ。高評価とかしてってください。後半戦→ https://www.youtube.com/watch?v=LDfq0Q1qNSs参考書籍→ https://book.mynavi.jp/ec/products/detail/id=149014★KOBA789Twitter:...
YouTube

進め方

参照書籍はC言語で書かれているためRustで実装するに当たっていくつか翻訳をする必要がある。が、さすがRust言語機能が豊富なのでC言語では頑張って関数ポインタなどでインターフェース定義するところをナイーブにtraitで実装出来て便利。

元々自分はC/C++をやっていたのでこのような点に少し感動した。Rustやってよかったなぁと感じられる瞬間であった。

それはともかくこの実装の進め方だが、Koba789は24時間縛りでザーッと実装しており最終的にはHTTPサーバーまでやりきった。 全く同じにすると面白く無いので少し趣向の異なる実装をしてみようと思う。

  • 実装時間の計測
  • 各ステップ毎の参照実装を残す
  • この過程を記事に残す
  • TCPをベースにFTPを実装して通信して遊ぶ

という感じだ(本当に少しだな)。

TCPの勉強とFTPも実装出来てこういう低レイヤ実装は良いことづくしでとても良い。ついでにネットワークツールでも開発してみようか。

ただ家族サービスの時間を縫って行なうので少し時間が掛かるかもしれない。やれても1日2時間とかだし。

1月中には終えられるようにしたいところ。

実装のレポジトリはこちらに残しているので興味のある人は覗いてみてください。

GitHub - takeshiD/microtcp: hobby tcp implementation written in Rust
hobby tcp implementation written in Rust. Contribute to takeshiD/microtcp development by creating an account on GitHub.
GitHub