奇妙な問題があります。ほとんどの NAT で動作する C++ (boost asio) P2P アプリケーションが正常に動作しています。問題は、最初の開始ポート番号を 1000 として指定すると、1000 が空いているかどうかがチェックされ、そうでない場合は 1 ずつインクリメントされ、ポートが選択されてハンドシェイクが開始されます。しかし、10000、20000、またはその他の巨大なポート番号がある場合、ポート制限されたコーン NAT ではホール パンチが機能しません。
そんなことがあるものか?コードとは何の関係もないと確信しています。最近では、私の友人のフル コーン NAT の 1 つでも機能しませんが、他の多くのフル コーン NAT では機能しています。その理由は何ですか?NAT がどのように動作するかについて、私が見逃しているものはありますか?