How does Team Viewer establish a Remote Desktop Connection?

ewanm89 の投稿を詳しく説明すると、TeamViewer は UDP ピンホール処理を使用します。

UDP はステートレス プロトコルです。 これは、パケットが受信されたか、または宛先に到達したかを (プロトコル レベルで) 検証することなく、ターゲットに発射されることを意味します。 ファイアウォールは、UDPパケットを探し、送信元と送信先、およびタイムスタンプを記録するように設計されています。 もし、送信パケットと一致する受信パケットがあれば、ファイアウォールのアクセスリストに特定のルールがなくても、通常パケットを通過させることができる。 これは、エンタープライズグレードのデバイスではロックされることがありますが、一般に、世の中のファイアウォールの90%はリターントラフィックを許可します。

ピンホールするために、マシン(ビューア)はメインTeamViewerサーバーに戻るTCP接続を持っています。 ターゲットマシン(クライアント)にも、メインのTeamViewerサーバーへのTCP接続があります。 接続]をクリックすると、マシンはメインサーバーにその意図を伝えます。 その後、メインサーバーはクライアントマシンの IP アドレスを提供します。 その後、マシンはクライアントに対して UDP パケットを発射し始めます。 クライアントは、あなたが接続するつもりであることを通知され、あなたのIPを与えられます。

ファイアウォールが「P2Pフレンドリー」であれば、両方のファイアウォール(あなたとクライアントの)がトラフィックを許可し、ファイアウォールに「穴をあける」ことになります。 具体的には、送信先が変わったからといって、送信パケットのパブリックポートを変更しないようファイアウォールに要求します。パケットの送信元が変わっていない限り、ファイアウォールは同じパブリックポートを再利用しなければなりません。 ファイアウォールがこのようなフレンドリーな振る舞いをしない場合、この方法はうまくいかない。

もちろん、TeamViewerは、メインサーバーが両者にIP情報を送信する前に、ピン/パスワードのチェックを行うことでセキュリティを追加しますが、このアイデアは理解できると思います。

コメントを残す

メールアドレスが公開されることはありません。