詳細な説明は Wikipedia を参照の事.
ネットワークでは,IPアドレスはよく話に登りますが,意外とポートについては話に登らない場合があります.
TCP/IPは,基本的には[IPアドレス:ポート番号]が一つの通信端点です.この通信端点で通信を行います.
TCP/IP受信側,概ねサーバとして動き,クライアントからの通信を待ち受ける場合は,ポート番号を事前に仕様として決めて使う場合が殆どですが,他方,クライアント側は,ポート番号はOSの自動割り当てを使う場合が多いです.この様な場合で,二台以上の機器が互いにサーバを持っており互いに通信しあうケースでは,サーバとして待ち受けるポート番号がエフェメラルポートに被っていると,OSの自動割り当てと被るケースがあります.
Linux のエフェメラルポートは,IANAが提言する範囲からズレています./proc/sys/net/ipv4/ip_local_port_range を見て確認したほうが良いでしょう.「ここは空いているはず...」と思ったポート番号でも,エフェメラルポートの範囲内に入っていると,「あれ? bind に失敗する...」と言うトラブルにハマる可能性があるので,空いていると思ったポート番号の bind に失敗して,他の(関係無さそうな)プロセスがそのポート番号を使用していたら,エフェメラルポートに被っているかを確認すると良いでしょう.
サーバソフトウェアで,独自にポート番号を定義する必要がある場合は,Wikipedia の情報に照らすと,5001〜32767の範囲で定義すれば,少なくともエフェメラルポートとは被らなさそうです.