ftp、bittorrent、adc、gnutellaなどのネットワークプロトコルを作成(実装)する方法は? 使用言語は何ですか?ドローロードのソースはどこですか?私はboost.asio、boost.spirit、ビープ音、タイプ長さの値を使用するように読んでいました。ネットワークプロトコル(仕様書)を書く(実装する)方法
答えて
既存のプロトコルを実装したり、新しいプロトコルを作成したりしていますか?私は前者を仮定します。
最初に必要なのは仕様です。標準インターネットプロトコルはRFCで指定されています。たとえば、FTPはRFC 959で指定します。あなたが言及している他のプロトコルは標準ではありませんが、依然として仕様があるかもしれません。たとえばBitTorrentには1つしかありませんが、あまり良くありません(attempt to clarify itがあります)。
2番目に必要なのは、ソケットIOを実行するためのAPIを備えた言語です。すべての深刻な言語には1つがあります。たとえば、Javaの場合、パッケージはjava.netです。あなたは、そのようなAPIを持っている限り、任意の言語を使用することができます。
次に、仕様に従うだけで座って、仕様に定義された形式でメッセージを送受信できるコードを記述するだけです。
また、既存のプロトコルの実装を探して使用することもできます。プロトコルの実装を見つけるための集中した場所はありません。あなたの言語の標準ライブラリにはいくつかのものが含まれています(例えば、JavaにはFTP、HTTP、SMTP、IIOP、そしておそらく他のものが組み込まれています)、他のものをサードパーティのパッケージとしてダウンロードすることができます。
いくつかの図書館があります。 Boost.asioはC++のソケットIOのライブラリです。これは、基本的なオペレーティングシステムAPIの上にあるレイヤーで、より簡単に使用できます。 Boost.spiritはパーサライブラリです。プロトコルを解析するためにそれを使うことができますが、これはより複雑なプロトコルのための良い動きに過ぎません。 BEEPはプロトコルであり、むしろプロトコルを構築するためのフレームワークです。それは、ほとんどのプロトコルではないBEEPの上に実装されたプロトコルであなたを助けるだけです。タグ長さ値は、一部のプロトコルで使用されるデータ・エンコーディングのスタイルですが、すべてではありません。
- 1. このリクエスト仕様書を書く良い方法は?
- 2. 問題の仕様書を書く方法
- 3. Aフレームのテスト仕様書を書く
- 4. 仕様パターンの実装方法は?
- 5. 合成仕様パターンでisGeneralizationOfを実装する方法は?
- 6. テスト仕様書を条件付きで実行する方法 - 角度プロトラクタージャスミン
- 7. ANNIE仕様書に新しい実体を追加する
- 8. シェフで再帰的に作成されたディレクトリの仕様を書く方法
- 9. `map`オブジェクトのプロパティ名にOpenAPI 3(Swagger)仕様書を書くには?
- 10. 書面仕様にガイダンスが必要
- 11. デフォルトでMinitest-Railsの仕様書テスト
- 12. Rails:このメソッドのモデル仕様を書くには?
- 13. スプリング仕様の単体テストを書くには?
- 14. Rails:仕様書でGETリクエストを記録する最良の方法
- 15. Java EE 7仕様を使用して、いくつかのフォームデータと共にファイルアップロードを実装する方法は?
- 16. アプリケーションレイヤネットワークプロトコルの書き方(実装)
- 17. ポッドのダウンロード時に実装(.m)ファイルを削除する仕様
- 18. マップに別のキーに基づいて異種のコンテンツを持つキーがある仕様を書く方法
- 19. 仕様書ではなくテストを実行するにはどうすればよいですか?
- 20. Rspec:機能仕様からApplicationControllerメソッドを実行する方法
- 21. angle-cliで1つのテスト仕様を実行する方法
- 22. C#でインタプリタを書く:命令を実装する最良の方法は?
- 23. 「クラス」定義の外にあるときにこのテンプレート仕様を書く方法
- 24. コントローラの仕様と仕様の仕様
- 25. いくつかの仕様をレールにローカライズする方法
- 26. Java EE - 誰が仕様を実装していますか?
- 27. solaces jmsはJMS 2.0仕様を実装していますか?
- 28. フォームをリモートで送信するときのフィーチャ仕様の書き方:true
- 29. Javaファイルを書き込むログクラスを実装する方法
- 30. 私の仕事の正しいSQLリクエストを書く方法
短い答えは:rfc/google、google、c/C++/javaしかし実際にはどの言語でも、gnu/sourceforge /任意のLinuxディストリビューションで、クロスプラットフォームのコンパイルからのみ必要です。 –