構造から見る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にはメッセージが送られません。