2011-09-17 9 views
-2

ftp、bittorrent、adc、gnutellaなどのネットワークプロトコルを作成(実装)する方法は? 使用言語は何ですか?ドローロードのソースはどこですか?私はboost.asio、boost.spirit、ビープ音、タイプ長さの値を使用するように読んでいました。ネットワークプロトコル(仕様書)を書く(実装する)方法

+0

短い答えは:rfc/google、google、c/C++/javaしかし実際にはどの言語でも、gnu/sourceforge /任意のLinuxディストリビューションで、クロスプラットフォームのコンパイルからのみ必要です。 –

答えて

2

既存のプロトコルを実装したり、新しいプロトコルを作成したりしていますか?私は前者を仮定します。

最初に必要なのは仕様です。標準インターネットプロトコルは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の上に実装されたプロトコルであなたを助けるだけです。タグ長さ値は、一部のプロトコルで使用されるデータ・エンコーディングのスタイルですが、すべてではありません。

関連する問題