2

私は、SOに関するものを含め、このテーマについて多くのことを読みました。プログラミングに関する質問ではありませんが、ここで質問してもよろしいでしょうか。私はプログラマーで、ボイス チャットを含むアプリを作成しています。

特に Skype や Google Talk ボイス チャット (VOIP) などのシステムで、NAT を介して UDP 転送がどのように機能するかを理解しようとしています。

ルーターが UDP トラフィックを正しくルーティングできる唯一の方法は、パケットを送信したのと同じ IP/ポートの組み合わせから応答が返ってきた場合だと思いました。つまり、クライアントは最初に UDP パケットを送信しない限り、サーバーから UDP パケットを取得できません。そうしないと、ルーターはパケットを送信するクライアントを認識できません。

したがって、私の理解が正しければ、Skype や Google トークなどのサービスは、ピアがお互いを見つけられるように初期設定を行いますが、その後は通信がピア ツー ピアになります。ルーターがクライアントの IP からのトラフィックを期待していない場合、クライアントからの最初のパケットを他のクライアントに直接到達させるにはどうすればよいでしょうか?

4

1 に答える 1

1

ゲーム(大学の仕事)P2Pを作っているので勉強中です。

1 NAT はどのように行うのですか? クライアントが要求を行うと、NAT はドアを介して転送を利用できるようにし (このポートは、それを送信したコンピューターのポートとは無関係であることに注意してください)、ソース IP をあなたの IP (ルーターのパブリック IP) に変更します。ここで魔法が登場します。その要求に関連付けられた IP とポート、およびメッセージの送信に使用されたルートのドアにテーブルを保存します。そのため、ルーターがリクエストを受信すると、それを作成した IP またはポートに関係なく、誰がリクエストを送信する必要があるかを確認するために、ドアとテーブルが何であるかを調べます。

2 「リモート クライアント」用に NAT を構成するにはどうすればよいですか? 不可能。ただし、クライアントは「あなたの」NATを間接的に設定できます。接続の開始を仲介するサーバーが必要です。* Client1 cliente2 がサーバーに接続すると、サーバーは client1 に cliente2 の IP とポート (NAT) を送信します。* client1 は cliente2 に接続するためのデータを持っているため、同じ接続をサーバーに送信し、cliente2 のデータを同じようにデータ サーバーに受信します。

注 1: TCP は明らかな理由で機能しません。つまり、UDP でなければなりません。注 2: データが NAT テーブルにある時間、「タイムアウト」を防ぐ方法は? 良い質問です。私が言ったように、私はそれを勉強しています笑、知っている人はここに置いてください。

フェリッピCM

于 2012-05-24T04:33:04.460 に答える