2010-12-29 7 views
4

TCP上にアプリケーションレイヤネットワークプロトコルを記述(実装)したいと思います。それをやり始める方法を教えていただけますか? オンラインチュートリアルも役に立ちます 私はsm実装のチュートリアルも必要です。私はこれに新しいと時間が少ない:( RFCは、ルールについてもっとですアプリケーションレイヤネットワークプロトコルの書き方(実装)

答えて

1

最も良い解決策は、トレント、ftp、httpのような現在のソリューションを監視することです。それはあなたにいくつかのknowlegdeを与える必要があります。あなたの想像力で

6

これは、(元々)文字列が付いていない、混乱しているか偽のステートメントを持たない非常に単純なプロトコルです(初心者のために) (多くの面で)豊富な、非線形です。

更新:私はリンクを元のRFC 821に置きましたが、これは現在廃止されています。最新の(そして有効な)SMTP用のRFCよりも読みやすくなっています。

0

私はCでこれをしないことをお勧めします。これについてもっと簡単な方法があります。 www.twistedmatrix.comを見て、Python用のWebフレームワークを見てみましょう。 Cを書くことができれば、確かにPythonは汗をかくことはできません。また、通常はC言語のような低レベル言語でのネットワークプログラミングに関連する不快感のほとんどを処理します。

0

独自のプロトコルの設計は簡単なことではありません。しかし、それをTCP/IPの上に構築すると、より簡単になります。 RFCはプロトコルに関するルールであり、正しいと指摘しました。しかし、これは一般的にプロトコルとは何か、何かを行う方法のルールと合意のセットです。ここの美しさは、あなた自身のルールを指定することです。考慮する必要のあるものには、送信するデータのタイプ、各ピースの長さ、状態(存在する場合)などがあります。例えば、HTTPは、要求または結果を定義するヘッダーと、送信されるデータを定義するペイロード(フォーム・ポストまたはhtmlページの可能性がある)を持つステートレス・プロトコルです。

したがって、送受信するデータ、データ型で定義できるデータの長さ、または期待されるデータの量を定義する必要があります。プロトコルに状態がある場合(つまり、何か他のことができる前にまず何かを送受信しなければならない場合)、その状態を定義する必要があります。それを超えて、それは簡単なネットワークプログラミング(アプリケーションでのデータの送受信)です。

例えば単純なプロトコルはこれを持っている可能性があり:

最初の2
Command 1 Byte 
Length 4 Bytes 
Data Length Bytes 

は、もう一方の端はすべてを読むことができるように必要なデータに関するメタデータが含まれているあなたのヘッダーを定義します。最後は実際のデータです。コマンドは必要ではありませんが、受け取ったバイトに応じてデータの特定のアクションを他の側で実行できるようにすることができます。データの長さは重要です。なぜなら、他のエンドは、すべてのデータがいつ読み込まれるのかを知っていなければならないからです。

この回答は本当に私が言っていることを固めるのに役立ちます。私はこれが助けて欲しい! https://stackoverflow.com/a/11658296/2498017

関連する問題