7

DSL の 2 つの異なる NAT で正常に動作する p2p チャット アプリケーションを開発していますが、3G USB インターネット接続に関しては失敗します。

3g ネットワークの NAT をバイパスすることは不可能であり、Skype や torrent などの既知の p2p アプリケーションも 3g ネットワークをバイパスできないことがわかりました。これらの問題が発生すると、中央サーバーを介してデータが送信されます。

3g ネットワークのアーキテクチャを知りたいです。プライベート IP はなく、ポート ペアはパブリック IP のみで、ポートが利用可能で、1 つのパブリック ポートを多くのデバイスに割り当てることができると聞きましたが、正しいですか? もしそうなら、サーバーはどのようにデータを 3g ネットワークに送信しますか?

4

5 に答える 5

2

ウィキペディアは、ポート共有が存在する場合でも、キャリア グレードの NATをP2P アプリケーションでトラバースできると主張しています。

上記の手法は、CGN 内でうまく機能します。CGN は、ポートのオーバーロード動作を利用することもできます。つまり、同じポート値を持つ個別の内部エンドポイントを同じパブリック エンドポイントにマップできます。これは、5-uple {プロトコル、パブリック アドレス、パブリック ポート、リモート アドレス、リモート ポート} の単一性を壊さないため、許容されます。TCP ポートの保持は、CGN ポートが過負荷になり、プロトコルの健全性の問題にならない場合にもつながる可能性があります。TCP のポート オーバーロードにより、CGN は、TCP エンド ツー エンド通信の保証を維持しながら、より多くのホストを内部的に適合させることができます。

ただし、その段落については引用されていません。

于 2013-11-11T22:26:45.240 に答える
2

3G ネットワークの NAT をバイパスできないのはなぜですか?

それは統計に要約されます。接続を確立するには、相手がいるポートにパケットを送信する必要があり、相手もあなたがいるポートにパケットを送信する必要があります。間違ったポート番号に送信したり、間違ったポート番号に送信したりすると、失敗して接続が確立されません。両方が同時にポートにバインドし、相手の IP アドレスに向けてパケットを送信する場合、65535 分の 1 (65535 は IP アドレスのポート数) の確率で、パケットをポートに送信します。ポートにパケットが送信される確率は、およそ 65535 分の 1 です。したがって、接続を確立する確率は (1/65535) * (1/65535)、つまり (1 / 65535^2) です。

新しいアウトバウンド接続ごとに、ルーターは 1024 から 65535 の間の間隔でランダムに新しいポート番号を提供するため、後続の接続のポート番号を知ることはできません。したがって、サーバーに IP とポート番号を尋ねると、正しいIPを教えてくれるかもしれませんが(電話の電源を切るか、そのようなことをしない限り、IPアドレスは頻繁に変更されません)、ポート番号は変更されます. ポート番号を推測しようとすると ( (65535-1024-1) / (65535-1024) )、または選択可能なポート番号の数が ( 65535-1024)。

したがって、ポート番号が予測可能でない限り (多くの 4G ネットワークではそうではありません)、あなたはうんざりしています - チャンスはありません.

于 2015-09-24T23:48:06.643 に答える
0

通信事業者の場合、内部クライアントと同じ外部ポートを選択しない場合があります。これにより、TCP と UDP の両方のホール パンチングが中断されます。ここを参照してください:

3G で UDP ホール パンチングが通過しない

于 2013-11-11T22:38:26.557 に答える