4MBitsのネットワークがあり、データスループットを計算したい場合、これは最大転送速度からイーサネット/ IP/TCPヘッダーからのオーバーヘッドを差し引いたものを考慮しています。Webで読むと、TCPセグメントのMSS(最大セグメントサイズ)は576-20-20であり、これらの最後の2つはTCPおよびIPヘッダーのオーバーヘッドであり、データの93%になります。つまり、使用するのは私の4MBの93%はデータ転送にリンクしています。さて、リンクayerのオーバーヘッドはどこにありますか?それも追加すべきではありませんか?間違っていない場合、イーサネットヘッダーは約46バイトなので、最終的な合計は576-20-20-46 = 490になり、85%のデータスループットになりますが、何か間違ったことをしていますか?
2 に答える
ボトムアップで作業してください。通常のイーサネットフレーム(ジャンボフレームなし、VLANタグなし)は1542 bytes
合計で、ペイロードは1500 bytes
。です。オプションのないIpv4ヘッダーは20 bytes
であり、オプションのないTCPヘッダーも20 bytes
です。したがって、リンク層フレーム1460 bytes
の可能なペイロードになります。1542 byte
したがって、効率は1460/1542=0.9468223086900129
であり、最大スループットは。になり3.7872892347600517Mbps
ます。
ただし、これは通常は低くなることに注意してください。これは、TCPセッションが確立された後、そのリンクの唯一のユーザーである場合に、全二重リンクで取得できる連続ストリームの理論上の最大レートです。また、しばらくの間、わずかに高いレートで送信すると、リンクが混雑し、スロースタートのために実際のTCPスループットが大幅に低下する可能性があることに注意してください。
リンクがワイヤレス(802.11)の場合、RTS / CTSメカニズムのために計算ははるかに複雑になりますが、/2
アクティブなユーザーは1人だけであり、損失を組み込むことはできません。これは非現実的です。
一般に、プロトコルはネットワークスループットに影響を与える可能性があり、単なるパケットオーバーヘッドだけではありません。イーサネット/IP/ TCPネットワークのスループットを測定したいとおっしゃっていますが、これらのプロトコルのパケットオーバーヘッドの影響だけを考慮する必要はありません。TCPはコネクション型プロトコルであり、ACKを使用してパケットが受信されたかどうかを通知します。user1777914は、ACKについてのマークを見逃しましたが、何かに取り組んでいました。これ以上スペースを占有しませんが、パケットの送信を遅らせることができます。遅延が増加すると、アプリケーションまたはホスティングOSが応答を期待する頻度に基づいて、全体的なネットワークスループットが低下する可能性があります。
W.リチャードスティーブンスはTCP/IPに関する驚くべき本を書いています。 これは、理論上のTCPパフォーマンス、それに影響を与えるもの、およびその計算方法を説明する例外です。
Nagleアルゴリズムもレイテンシーに役立ちますが、無効にするとスループットが低下する可能性があります。