私は現在、学習目的のCで学習目的のIRCボットを構築しています。サーバーがボットに送信しているIDメッセージの処理に少し問題があります。ポート113でIDメッセージをリッスンし、ID応答を返送する必要があることはわかっています。問題は、そのメッセージをリッスンするために、作成したソケットをポート113にバインドできないことです。
ポート113またはこの問題の別の解決策にバインドする方法はありますか?また、サーバーが送信するIDメッセージにどのように応答しますか?
1024未満のポートにバインドするには、Linuxではrootアクセス、Windowsでは管理者権限が必要です。管理者ユーザーとして実行してみて、それが役立つかどうかを確認してください。それでもバインドできない場合は、113でサービスを実行しているものが他にないことを確認してください。
# Windows
netstat -a | find "listening"
# Linux
netstat -lnptu
繰り返しになりますが、使用中のポートを確認するには、root/adminとして実行する必要がある場合があります。
Identの詳細については、RFC、https: //www.rfc-editor.org/rfc/rfc1413を参照してください。これは、実際には非常に簡潔です。
また、ネットワークによっては、接続するために必ずしもIdentサービスを実行する必要がない場合もあります(ただし、これをお勧めします)。接続するサーバーによって異なりますが、サーバーが試行したIdentクエリが失敗するのを待って、サーバーの動作を確認してください。
identに応答することは、ボットが持つ特権や責任ではありません。identプロトコルの要点は、クライアントが接続しているサーバーの削除に関して、ネットワーククライアントが実行しているユーザーをマシンが識別することです。これは、クライアントが不正であることが判明した場合に責任者を特定することを目的としているため、シェルボックスの管理者ではなく、不正なユーザーに責任を負わせることができます。