ネットワーク上でサービスを実行しているすべてのコンピュータを検出する


2

私は現在ファイル同期プロトコルを書いています(趣味だと思います、私は 知っている そこにはたくさんのファイルシンクロナイザがあります)そして私は自動的に物事をネットワーク上で同期させる方法を作りたかったです。私はこれがUDPを介して達成されることができると聞いたが、私はそれを達成する方法に全く気付いていない。

UDPを使用している場合でも、192.168.X.0 - 192.168.X.255にpingを送信する必要がありますか?それともUDPはそれを回避する方法を見つけますか?ファイアウォールを迂回してネットワーク上の各コンピュータにアクセスし、特定のUDPポートへの着信トラフィックを許可する必要がないようにする方法はありますか。

私はこれをとても曖昧にしていることを許してください。プロトコルを実装しようとするのは今回が初めてです。

回答:


2

あなたが使用することができます nmap ホストをスキャンして、特定のポートでサービスをリッスンしているかどうかを確認します。


状況はほとんどありません UDP より好ましい TCP

  • UDPは双方向通信にはあまり適していません。あなたはあなた自身の質問/回答の関連付けを作り上げなければなりません。データを一方向に送信する場合でも、受信者に確認応答を要求することがよくあります。これは、反対方向に送信されるデータです。
  • UDPは信頼できません。パケットが紛失または複製された場合は、困難です。
  • UDPはパケットで移動します。あなたのパケットが大きすぎて体系的に捨てられているなら、タフです。
  • UDPでは、分散型サービス拒否攻撃を容易にするなど、セキュリティ上の問題が発生します。このため、多くのファイアウォールはそれをブロックまたは厳しく制限しています。
  • TCPを使用するプロトコルはほとんどないため、デフォルトで閉じられているファイアウォールでは、それを通過させないでください(DNSを除き、厳密に制限されています)。
  • UDPは輻輳管理をしません。ネットワークにあふれた場合、パケットはランダムに破棄されます。一方TCPは、借方をネットワークが負担できる範囲に制限します。

あなたはマシンにUDPパケットを送って、そしてもちろん何かが答えるかどうか見ることができます。あなたもUDPを送ることができます 放送 そしてそれがどこまで行くかを見るか、UDPを送信します マルチキャスト そしてそれが届くことを願っています。

宛先マシンでアクションをトリガーするためのネットワークパケット(UDPまたはTCP)には2つの要件があります。まず、パケットの経路上にあるすべてのルーターとファイアウォールが、パケットを宛先まで通過させる必要があります。第二に、宛先マシンで待機しているアプリケーションがなければなりません。これはあなたのシンクロナイザー、またはのようなサービススターターかもしれません inetd または、シンクロナイザが埋め込むであろう高レベルプロトコル用のサーバ HTTP(S) または SSH

パケットがファイアウォールによってブロックされている場合、原則としてこれを回避する方法はありません。そうでなければ、ファイアウォールはその仕事をしていません。もちろん、実際には、ファイアウォールには穴があります。 UPnP ()。あなたは、UDP経由ではなく、TCP経由でファイアウォールを迂回することができる可能性があります(特にHTTPS経由で、一般にファイアウォールは選択的にブロックすることができないので許可する必要があります)。

目的のポートで待ち受けているものが何もない場合も、ターゲットマシンを制御してアプリケーションを実行させることはできません。これはSSHのような一般的なジェネラリストプロトコルを介して便乗する利点です。ただ1つのサービスを有効にするだけで、その後それをやり直すことができます。ファイル同期を含みます。


3

ローカルネットワークだけに興味があり、クライアントがサーバのポート番号を知っていると仮定すると、クライアントはUDPメッセージをブロードキャストすることができ、それにサーバはユニキャストメッセージで応答し、通信を確立します。

または、Bonjour / Zero Conf、UPnP(Universal Plug 'n Play)などの既存の検出プロトコルを使用してデバイスを見つけることを検討することもできます。

ファイアウォールは別の問題であり、いずれにせよあなたは発見パケットに対して開かれていることを確認しなければなりません。


優れているので、UDPメッセージは基本的に私のネットワークの全員を特定のUDPポートで攻撃するでしょうか。また、これらの発見プロトコルはどのように機能しますか?それらを自分のアプリケーションに書き込むのですか、それともルーターベースですか?ドキュメンテーションを読むことは私がすでにしていた以上に私をさらに混乱させました:-(
Naftuli Kay

はい - ブロードキャストはネットワーク上の全員に同じポート上で行われます。発見プロトコルの働きに関して - 他の誰かがそれに答えることができることを願っています。私はそれらを使ったことがない。
Jamie Cox
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.