2

私はインターネットゲームプロジェクトを行っています。このプロジェクトでは、2台の通常の家庭用PC間で、インターネットを介して小さなサイズのデータ​​(1Kから50K)を送信し続けます。私が気にする鍵はレイテンシーです。

TCP、UDPが人気があることを理解しています。TCPは信頼できますが、UDPよりも低速ですが、UDPは安全ではなく、独自の障害処理コードを実装する必要があります。

2台の通常の家庭用PC間で小さなデータを送受信するために従うことができる他のプロトコルはありますか?

通常の家庭用PCの用語では、通常のブロードバンド(512kbps〜2Mkbps)と世界中(おそらく米国と日本の間)にあると思います。

もう1つの大きな質問は次のとおりです。

あるPC(英国)から別のPC(日本)にpingを実行すると、300ミリ秒の遅延が発生します。1つのプロトコルを見つけること、またはTCP / UDPを使用してこの300msの遅延未満で1KBのデータを送受信することは可能ですか?または、pingは、2つのエンドポイント間の最小遅延を知るための最速の方法である必要がありますか?

ありがとう

4

3 に答える 3

3

TCPヘッダーは32バイトですが、UDPヘッダーはわずか16バイトです。さらに、UDPにはフロー制御がないため、クライアントがサーバーに速度を落とすように要求することは決してありません。UDPはほぼ間違いなく最速になるでしょう。ICMPパケットには20バイトのヘッダーがあり、UDPよりもわずかに遅くなる可能性があります。

私の公式の推奨事項は、UDPを使用し、受信側で「パケットのドロップ」を検出することです。これが、すべてのQuakeゲームとすべてのHalf-Life/Sourceゲームの仕組みです。

英国と日本の間のpingのトピックでは、使用するプロトコルの遅延はほぼ同じになります。そのほとんどは、光速とエッジルーターの混雑によって決まります。

于 2010-02-18T18:01:06.760 に答える
1

pingコマンドは、最も軽量なオプションであるICMPを使用しているため、待ち時間に勝るものはありません。

通常、ゲームの状況では、主に速度が関係するため、UDPが使用されます。良好なブロードバンド接続があれば、TCPは問題なく、UDPにはない配信についての保証があるため、作業が楽になります。

そうは言っても、ゲームの目的では、1K、特に50Kは非常に大量のデータであり、特にこれを継続的に送信する必要がある場合はそうです。大量のデータを送信する場合は、遅延を予測して計画します。これは、多くの場合、データが到着するのを待つのではなく、ネットワーク全体で何が起こるかを予測し、データが通過したときに補正することを意味します。

于 2010-02-18T17:59:38.803 に答える
0

インターネットを介して通信する場合は、IPファミリのプロトコルを使用する必要があります。それはあなたがIPの上にあなた自身のプロトコルを作成することを妨げることはありませんが、もちろんそれは待ち時間の点で速くはなりません。できることは、ネットワークを介して送信されるペイロードを最小限に抑えるために圧縮を実装することだけです。

于 2010-02-18T18:02:52.950 に答える