ポート転送を避ける方法は?

ポート転送を避ける方法は?

私はUDPソケットでプログラムしていますC。ポートでリッスンするには、ルーターからポートを転送する必要があります。私の質問は、これを避けながらインターネットを介して通信を続けることができる方法です。ソケットを使用して通信できない場合、可能な最低レベルは何ですか?つまり、すべてのデバイスがhttpサーバーを受信できるため、httpサーバーをロック解除する唯一の方法ですか?

ベストアンサー1

通常、ISPはIPアドレスを提供し、ホームルータもIPアドレスを提供します。ネットワークアドレスの解釈(NAT)ホームネットワーク内のすべてのデバイスがルータ自体と同じアドレスを持つ単一のデバイスであるかのようにISPに偽装します。

したがって、誰かが外部からホームネットワークに接続する場合は、ルータはサービスを実行しているホームネットワークのデバイスに「ポートを転送する」必要があります。外部から見える唯一のIPアドレスは、ルータのIPアドレスです。

これを望まない場合は、唯一のオプションは、ルーターで直接サービスを実行するか、ISPからルーターを切断し、サービスを実行しているコンピューターを直接接続することです(ハードウェアがある場合)。

どのプロトコルを使用しても他の方法はありません。

ISPに費用を払って複数のIPv4アドレスを提供することもできます(費用がかかる場合があります)。あるいは、ISPがIPv6グローバルプレフィックスを提供している場合、ホームネットワーク内の各デバイスには外部からアクセスできる独自のIPv6アドレスがあります。したがって、NATやポート転送は必要ありませんが、IPv6でのみ機能します。

OTOH、ポート転送設定は黒魔術ではありませんので、ちょうどやってください。

編集する

「ウェブサイトにアクセス」するとローカルhttp顧客リモートhttpにアクセスします仕える人、ルータの NAT は、プライベートデバイスアドレスから発信するパケットの送信元アドレスを ISP の IP アドレスに書き換えます。また、ローカル装置が発信接続を開いたことを記憶し、その接続に属する受信パケットが到着すると、代わりに宛先アドレスを書き換えてローカル装置に送信する。 NATです。

だから出るローカルデバイスから接続する場合、ポート転送は必要ありません。 NATがこれを処理します。 ~のため着信接続(例:httpを実行している場合)仕える人、ルータに「ポート80を次のローカルデバイスに転送する」と通知する必要があります。

ルータの設定にアクセスせずにポートを開く方法は?

~のため着信接続できません。私が説明しようとしていたように。

編集する

UDP用のサンプルプログラムをGoogleに検索すると、常に1つあります。仕える人リスニングポートと顧客リスニングの代わりにサーバーに接続されます(サーバーとクライアントの両方が双方向でパケットを交換できます)。したがって、「ポートを聞かずに情報を受信する方法」は、サーバーではなくクライアントを作成すると、サーバーがクライアントにデータを送信できるため、クライアントが「情報を受信する」ことです。

ポート転送がないと、NAT の背後でサーバーを実行できません。それはすべてです。何度も聞いても同じです。 TCPでもUDPでもなく、「低レベルプロトコルの使用」でもありません。

ルータのGUIでポート転送を有効にしたくない場合:多くのルータはUPnPを介して一時的にポート転送を設定することがあります。ルーターにこの機能がある場合とない場合があります。

一般的なタイプのサーバーに最初にアクセスしてから、NATの背後にある他のピアと接続を確立するなど、他のトリックもあります。めまい規約)。

しかし、NATの後ろにいる場合まずサーバーに接続する必要があります「実質」インターネットから。サーバーはポートでリッスンしますが、クライアントはリッスンしません。または、ポートでリッスンするサーバーがある場合は、ポート転送を設定する必要があります。他のオプションはありません。それで生き

おすすめ記事