外部 IP アドレスのないマシンがあり、UDP パケットを外部に送信する必要があります。NAT アクセスのみ。
これは機能しますか?
私たちの環境でこれをプロトタイプするのは本当に難しいです。本当にまだ工事中です。これをどのようにプロトタイプ化できるかについて何か考えはありますか?
世界中のほとんどのホーム ネットワーク構成は、内部 IP を持つ PC と、内部 IP を NAT するパブリック IP を持つルーターで構成されています。(UDP/TCP または外に出る必要のあるプロトコルとは無関係)
私はそれで何の問題もありません
それはうまくいくはずです。
作成されたソケットの TTL (time-to-live) を、宛先に到達するために可能なルーター ホップ数をカバーするのに十分な大きさの値に設定してください。宛先 IP に対して traceroute を実行すると、大まかなホップ数がわかります。この値は、ネットワークの状態によって変化する可能性があることに注意してください。したがって、これをより大きな値に設定することをお勧めします。TTL を設定するための構文については、ソケット IOCtl API ドキュメントを参照してください。
最後に、UDP は信頼できるプロトコルではないことに注意してください。そのため、上記の必要な手順を実行した後でも、パケットが宛先に到達しない場合があります。ただし、中間ルーターを含むネットワーク全体が企業イントラネットなどの制御された環境内にある場合、パケット ドロップの可能性は最小限に抑えられます。
UDP に加えて信頼性を追加したい場合は、パケットにシーケンス番号がスタンプされる NAK ベースのアルゴリズムを採用できます。さまざまなリソースから、UDP を介して信頼性を追加する必要がある場合は TCP を検討する必要があるとアドバイスされるかもしれませんが、私の経験では、パケット ドロップの可能性が非常に低い制御された環境でアプリを実行し、高速な接続のセットアップと切断が必要な場合は、 UDP に軽量の信頼性を追加することにはメリットがあります。また、TCP 接続は OS カーネルの貴重なスペースを占有しますが、UDP は占有しません。これは、制約のある環境で非常に多数の「接続」をサポートしたい場合にも考慮する必要があります。
一日の終わりには、自分に最適なものを見つけるために少し実験する必要があります.
プロトタイプを作成するには、Linux などを使用して NAT サーバーをセットアップし、そこから作業を開始します。シミュレートする実際のトラフィック シナリオによって、NAT の両側のどこにクライアントとサーバーを配置するかが決まります。つまり、トラフィックが ISP を通過するか、すべて制御された環境内を通過する必要があるかどうかです。
HTH