ログイン
編集不可のページディスカッション情報添付ファイル
"ytoku/IRC"の差分

MMA
4と5のリビジョン間の差分
2011-04-26 02:53:26時点のリビジョン4
サイズ: 4237
編集者: ytoku
コメント:
2011-04-26 02:56:22時点のリビジョン5
サイズ: 4345
編集者: ytoku
コメント:
削除された箇所はこのように表示されます。 追加された箇所はこのように表示されます。
行 57: 行 57:

=== チャンネルモード ===

=== セーフチャンネル ===

=== チャンネルマスク ===

構造から見るIRC基礎知識

RFCの概念部分に書かれている内容をかいつまんで解説します。

参考文献 RFC2810, RFC2811

ネットワーク構造

IRCはInternet Relay Chatの略であり、その名の通りリレー(バケツリレーですね)によってメッセージを届けるチャットシステムです。 複数のサーバ間でスパニングツリー状のネットワークを構成し、ネットワークにループは存在しません。 クライアントは一つのサーバに接続しておき、サーバを介してメッセージを他のクライアントに届けます。 クライアントの属するサーバが異なる場合には、サーバ同士でメッセージを交換して複数のサーバを経由して目的のクライアントまで届けます。 クライアント同士が直接通信することはありません。

サーバはクライアントにメッセージを選択的に届けるために、どのクライアントがどのサーバにいるかという情報を知らなければなりません。 そこで、クライアントの情報はラベルと呼ばれる機能で管理され、サーバ間で共有されます。

スパニングツリー
  • TODO
ラベル
  • TODO

メッセージの流れ

1対1通信

二つのクライアントが属するサーバが同一であれば、そのサーバが仲介してメッセージを届けます。メッセージは他のサーバには伝わりません。

二つのクライアントが属するサーバが異なる場合には、経路上にあるサーバをいくつか経由して目的のクライアントまでメッセージを届けます。やはり経路上にはないサーバにはメッセージは伝わりません。

例として、サーバAにログインしているクライアントxと、サーバCにログインしているクライアントyの間でメッセージをやりとりするとします。 サーバAはサーバB、さらにサーバBはサーバCとサーバDに接続されているとしましょう。 クライアントxからクライアントyにメッセージを送る場合に、その経路上にはサーバA,B,Cがあります。 よってサーバAからはサーバBに送信され、サーバBからサーバCに送信されることによってクライアントyの元までメッセージが届きます。 経路上にないサーバDにはメッセージが送られません。

対チャンネル

チャンネルに送信されたメッセージは、そのチャンネルに参加しているクライアントにのみ送られます。 そのチャンネルに参加しているユーザがいないサーバに対しては、そのサーバが途中経路になっていない限り送信されません。

チャンネル

チャンネル名

チャンネル名にはいくつかの制約があります。

  • '&'か'#'か'+'か'!'で始まる。(チャンネルプレフィックス)

  • 50文字以下
  • スペース' '、ベル文字(0x7)、コンマ','を含まない

なお、後述するようにコロン':'に特別な意味があり、チャンネルマスクのデリミタとして用いられます。

チャンネルプレフィックスは名前の一部であることに注意してください。 チャンネルプレフィックスが異なれば別のチャンネル名として扱われます。

チャンネルプレフィックスの意味

チャンネルプレフィックスは次のような意味を持ちます。「チャンネルモード」と「セーフチャンネル」については後述します。

prefix

説明

'#' シャープ

普通のチャンネル

'&' アンパサンド

サーバローカル。他のサーバに情報が送られないので、サーバ内部で独立したチャンネルになる。

'+' プラス

チャンネルモードをサポートしないチャンネル

'!' エクスクラメーション

セーフチャンネル

チャンネルモード

セーフチャンネル

チャンネルマスク

ytoku/IRC (最終更新日時 2011-05-02 14:58:36 更新者 ytoku)