dnsguide
1.0.0
インターネットには豊かな概念的基盤があり、私たちが知っているように機能することを可能にする多くの刺激的なアイデアが含まれています。本当に優れているものの 1 つは DNS です。それが発明される前は、インターネット上の誰もが (確かにその段階ではそれほど多くはありませんでしたが)、スタンフォード研究所によって管理されている HOSTS.TXT と呼ばれる共有ファイルに依存していました。このファイルは FTP 経由で手動で同期されましたが、ホストの数が増加するにつれて、変更の速度も増し、システムの実行不可能性も増しました。 1983 年、Paul Mockapetris はこの問題に対する長期的な解決策を見つけることに着手し、DNS の設計と実装を続けました。彼の創造物が数千台のコンピューターから今日私たちが知っているインターネットまで拡張することができたのは、彼の天才の証です。
DNS を深く理解すること、Rust で何か興味深いことをすること、そして自分自身のかゆみを解消することを総合した目標として、私は当初、独自の DNS サーバーを実装することに着手しました。この文書は、その旅の真実の記録ではなく、むしろ、私が最終的にたどったすべての寄り道を除いた、その旅の理想化されたバージョンです。最初の原則から始めて、完全な DNS サーバーを段階的に実装していきます。
各章には、ガイド内のその時点までの完全なコードを含む、 sample1.rs
からsample5.rs
という名前の対応するサンプルがあります。これらは、最初の章ではcargo run --example sample1
使用して実行できます。
read_qname
のセキュリティ脆弱性を修正しました。現在の Rust の慣行に準拠するようにコードを最新化し、さまざまな醜い非効率性を修正しました。