nat traversalは、ランデブーサーバーを使用して2つのノードを直接接続するために使用される一般的な用語です。ノードは、コンピューター、スマートフォン、その他のデバイスのいずれでもかまいません。3gに関する限り、データを転送する媒体の1つです。
一部のルーターはCiscoルーターなどのヘアピンをサポートしていないため、同じNAT下のピアデバイスがパブリックIPを使用して相互に接続している場合、ヘアピンがわかります。これは、パブリックIPの代わりにプライベートIPを使用すると克服できます。私はあなたのネットワークに関する技術的な詳細を知らないので、あなたの場合のヘアピンについて何か言ってください。
使用している3gの種類などの技術的な詳細で質問を更新します。その後、3gでのヘアピン留めについて言えるのは私だけです。
2gを使用してudp/tcpホールパンチングを実装しました.3台のPC(1台のランデブーサーバーと2台のノード)を使用してこれを実行しました。
1台のPCで実行されるランデブーサーバープログラムを開発します。プログラムは、2台のiPhoneデバイスのパブリックIPを交換できる必要があります。
iphoneにインストールするクライアントプログラムを開発します。iphoneをサーバーに接続します。これにより、iphoneのパブリックIPがserver.repeat2番目のiphoneに公開されます。これで、サーバーはパブリックIP/ポートを両方のiPhoneに交換します。これで、それぞれが同時に互いにパケットの送信を開始します。これにより、NATに穴が開けられます。
穴あけの詳細については、このhttp://www.brynosaurus.com/pub/net/p2pnat/を参照してください。
開発が容易なUDPホールパンチングを試してみてください。TCPホールパンチングは少し注意が必要です。UDPホールパンチングを実装すると、TCPホールパンチングを簡単に実装できます。
STUN、ICE、NATタイプ、NATマッピングについて学ぶ
https://www.rfc-editor.org/rfc/rfc5389
http://en.wikipedia.org/wiki/Network_address_translation