3.3 メッセージ
サーバとクライアントは互いにメッセージを送信し、その応答が発生することもあれば、発生しないこともあります。サーバはクライアントのためにルーティングタスクを行うことが多いため、サーバ間の通信のほとんどは応答を生成しません。
各 IRC メッセージは、接頭辞(オプション)、コマンド、コマンドパラメータ(最大15個)の最大3つの主要部分から構成されることができます。接頭辞、コマンド、およびすべてのパラメータは、それぞれ1つの ASCII スペース文字(0x20
)で区切られます。
接頭辞の存在は、先頭の ASCII コロン文字(:
、0x3b
)1つで示され、これはメッセージ自体の最初の文字でなければなりません。コロンと接頭辞の間に隙間(ホワイトスペース)を入れてはいけません。接頭辞は、サーバがメッセージの本当の出所を示すために使われます。接頭辞がない場合、そのメッセージは受信したコネクションから発信されたものとみなされます。クライアントは自分からメッセージを送るときには接頭辞を使うべきではありません。もし使うなら、有効な接頭辞はそのクライアントに関連付けられた登録済みのニックネームだけです。
サーバーはメッセージを受信すると、最終的に想定される接頭辞を使用してその送信元を特定する必要があります。サーバ内部のデータベースで接頭辞が見つからない場合は破棄し、接頭辞が不明なサーバからのメッセージであることを示す場合は、そのメッセージを受信したリンクを切断しなければなりません。このような状況でリンクを落とすことは少し過剰ですが、ネットワークの整合性を維持し、将来の問題を防ぐために必要なことです。もう一つの一般的なエラー条件は、サーバー内部のデータベースで見つかった接頭辞が、メッセージが到着した場所とは異なるリンクから登録された別のソースを識別することです。メッセージがサーバリンクから受信され、接頭辞がクライアントを識別する場合、クライアントに対して KILL メッセージを発行し、全サーバに送信しなければなりません。その他の場合、メッセージが到着したリンクは、クライアントの場合は破棄されるべきで、サーバの場合は破棄されなければなりません。いずれの場合も、メッセージは破棄されなければなりません。
コマンドは、有効な IRC コマンドか、ASCII テキストで表現された3桁の数字でなければなりません。
IRC メッセージは常に CR-LF(キャリッジリターン-ラインフィード)のペアで終了する文字の行であり、これらのメッセージは最後の CR-LF を含むすべての文字をカウントして512文字を超えないものとします。従って、コマンドとそのパラメータには最大510文字が許されます。継続メッセージ行の規定はありません。現在の実装の詳細については、5 章 を参照してください。