2009-05-22 6 views
2

固定サイズのデータ​​をTCP/IPでクライアントからサーバーに転送する際に、合計データ転送を計算する必要があります。サーバーへの接続、要求の送信、ヘッダーの受信、レスポンスの受信、データの受信などが含まれます。TCP/IPで合計データアップロード+ダウンロードを決定する方法

さらに正確には、POSTとGETメソッドを使用している間に合計データ転送を取得する方法は?

これには何らかの式がありますか?理論的なものでも(パケットの損失や接続の再試行などを考慮しないで)うまくいくでしょう。

私はRFC2616とRFC1180を試しました。しかし、それらは私の頭の上に行きます。

提案がありますか?

ありがとうございます。

+0

特定のトランザクションのカウントまたは使用されている特定のポートのトラフィックレートを調べますか? –

+0

特定のトランザクションの数。私は、クライアントからサーバーに送信するデータサイズを知っています。私はURIを知っているので、私はPOSTメソッドを直接使用するので、クライアント側の要求ヘッダーサイズも知っています。私は、応答ヘッダーサイズを仮定することができます。今ではデータ転送として考慮すべき他のものは何ですか? – fireball003

答えて

0

私は平均してリクエストとレスポンスに、ヘッダーがそれぞれ約8行、1行に約30文字あると言います。アップロードされたバイナリをBase64に変換してサイズを増やすことができます。

あなたはまた、TCPパケットヘッダをカウントしたい場合は、あなたが、その1500のデータバイト最後に

あたり16バイト(TCPヘッダ)を追加するには、約1500のMTUを仮定でき、その場合には、可能性が言わなかった

常にパケットスニッファを設定し、データサンプルの実際のバイト数を数えます。

ああ、あなたはdeflate/gzipエンコーディングも許可する必要があります。

3

再転送を無視しても、転送サイズの合計を事前に知ることはできません。

  • TCPオプションは、接続が確立されたときにホスト間でネゴシエートされます。一部のオプション(タイムスタンプなど)によってTCPヘッダーに追加のデータが追加される
  • "合計データ転送サイズ"が明確ではありません。例えば、イーサネット(登録商標)は、使用されるどのようなIPの上にもかなり多くのビットを追加する。 802.11(無線)はさらに多くの機能を追加します。だから、HDLCまたはPPPはT1を経由します。フレームリレーについては考えないでください。リンクによっては圧縮を使用するものもあります(これにより合計サイズが小さくなります)。合計サイズは、単一パケットの場合でも、測定する場所によって異なります。
  • レイヤ2での合計オクテットサイズに興味があり、事前にネゴシエートされるTCPオプションが分かっていると仮定すると、パスMTUは分かりません。接続が進行中であっても変更される可能性があります。または、パスMTU検出(ワイアード)を行っていない場合、パケットはどこかで断片化され、リモートエンドはあなたとは異なる量のデータ転送を見るでしょう。

あなたがこれを知っておく必要があり、なぜ私はわからないんだけど、私がすることを示唆している:あなただけの見積もりをしたい場合は、Wiresharkの中に一般的な接続を監視

  • 。オーバーヘッドのパーセンテージ(TCPに与えたデータのサイズとTCPのサイズとの比)を計算します。その数字を使用して推測します:病理学的な状況を除いて、それは十分に近いでしょう。
  • あなたのエンドソーが送受信したデータ量を確認する必要がある場合は、libpcapを使用してパケットストリームをキャプチャして確認してください。
+0

私はGPRS/EDGEベースの接続のための総データ転送を計算します。 KB単位で料金を請求します。では、考慮すべきことは何ですか? 私はクライアント側からアップロードするデータサイズを知っています。私はPOSTメソッドを使用するので、私は要求ヘッダーサイズを知っている、また、応答ヘッダーを想定することができます。 私の質問は です。1.データ転送で考慮すべき他の点は何ですか? 2.データのサイズとともに変化する変数(各パケットのデータパケットヘッダ以外)は何ですか? – fireball003

関連する問題