Твоя подружка IRC`a. Часть 1

Развитие Интернета и его сервисов породило множество способов общения: WWW-чаты, ICQ, Jabber, электронную почту и форумы. Но одним из самых интересных и экономных способов является IRC (Internet Relay Chat). Именно ему будет посвящён этот цикл статей.

Из истории IRC
Для начала – краткая историческая справка. Официальной датой появления IRC является лето 1988 года, когда Jarkko «WiZ» Oikarinen написал первый IRC-сервер и первый IRC-клиент в университете Oulu в Финляндии. Джаркко стремился расширить функции BBS, которые он администрировал, чтобы позволить людям общаться аналогично Usenet и real-time-чатам. Собственно, первым, что было реализовано, стал как раз чат, который он написал со своими друзьями, Jyrki Kuoppala и Jukka Pihl. Поначалу они протестировали сервер на единственной машине, на которой Jarkko отправил самому себе сообщение: «День рождения IRC – Август 1988 года» (да я, оказывается, ровесник IRC). Адрес первого в мире IRC-сервера был «tolsun.oulu.fi». После того, как количество пользователей увеличилось, Jarkko приобщил к делу друзей из университетов Хельсинки и Тампера, которые тоже открыли свои IRC-серверы. В скором времени к сети присоединились и другие университеты. Постепенно, с совершенствованием клиента, Jarkko осознал, что возможности IRC превысили возможности BBS. С помощью учащихся из университетов Денвера и Орегона в США он вскоре организовал уже IRC-сеть, причем «коллеги» из США использовали другую программу, написанную Vijay Subramaniam, первым не-финном в проекте. Первая IRC‑сеть была названа Funet, позже она слилась со скандинавским Nordunet.
В ноябре 1988 года IRC окончательно распространился по всему Интернету. В середине 1989 года в мире было около 40 IRC‑серверов. Также в 1989 году был написан знаменитый ircII, автор – Michael Sandrof. В июле 1990 в среднем было по 12 пользователей на 38 серверах.
В том же 1990 году была основана новая сеть, по причине разработки новой версии ircd-сервера – 2.6. Сеть назвали ChNet (около 25 серверов без пользователей), она существовала несколько месяцев, после чего была закрыта из-за разногласий среди программистов.
Об истории IRC можно писать ещё многое… В сообществе происходили расколы, конкуренция тогда ещё немногочисленных серверов, появление новых и «гибель» старых сетей… Однако несмотря на всё это, IRC совершенствовалась, появлялись новые сети, более удобные клиенты, в сообщество приходили новые люди…

Что такое IRC?
IRC – технология, позволяющая объединять территориально отдалённые IRC-серверы в IRC-сеть, так, что пользователи всех этих серверов находились бы в единой среде для обмена сообщениями «пользователь-пользователь» (a`la ICQ) и «пользователь-группа пользователей» или, проще говоря, для общения «в привате» и «на каналах». IRC-серверы ретранслируют сообщения по IRC-сети к пользователям на других серверах – отсюда и название. Также «IRC» используется как обобщенное название чата, построенного по этой технологии.
Для начала рассмотрим общую схему IRC-сети. Для этого посмотрим на рис. 1. По определению, IRC-сеть – это один или несколько IRC-серверов, которые объединены (слинкованы) в одну сеть и создают единую среду для общения. В сети должен быть головной сервер, на котором будут установлены основные сервисы: ChanServ (сервис, отвечающий за каналы, их регистрацию и т.д.), NickServ (отвечает за пользовательские ники) и MemoServ, предоставляющий возможность оставлять сообщения на IRC-сервере какому-либо пользователю, находящемуся в данный момент времени за пределами этой сети.

Рисунок 1. Схема работы IRC-cети

К головному серверу линкуются (присоединяются) остальные IRC-серверы, которые тем самым синхронизируются с ним, чтобы исключить появления на разных серверах двух одинаковых ников или каналов. В случае временной разлинковки серверов (netsplit) и последующим их объединении (netjoin), могут произойти довольно неприятные явления, такие как коллизия ников (nick collision): если в обе части разделившейся сети успеют зайти пользователи с одинаковыми никами, то в этом случае их выкинет из IRC-сети. Пользователи могут подключаться (с помощью специальной программы-клиента) к любому серверу этой сети, но чаще всего они подключаются к территориально близкому к ним. Таким образом, структура IRC-сети древовидная, а сеть основывается на клиент-серверном принципе.

Основные понятия
Под IRC-сервером понимается программа, обычно стоящая на отдельном компьютере, который помимо всего прочего выполняет другие серверные функции (раздача интернет-трафика пользователям, обеспечение работоспособности форума и прочее) или же на обычной рабочей станции, благо IRC-сервер не слишком требователен к аппаратным ресурсам компьютера. Эта программа выполняет две основные задачи: предоставление пользователям возможности подключения к IRC-сети и ретрансляцию сообщений пользователям на других IRC‑серверах в этой сети.
Для подключения к сети нужен IRC‑клиент – программа, с помощью которой пользователь может подключиться к IRC-серверу и общаться на каналах и «в привате» с другими пользователями. По сути, это промежуточное звено между пользователем и IRC-сетью, предоставляющее пользователю простой и понятный интерфейс для общения в IRC. На данный момент доступны множество IRC-клиентов под различные операционные системы, среди которых можно можно выделить кросплатформенные проекты (X-Chat, KVirc и Opera, в которую встроен простой, но вполне приемлемый для неискушённых пользователей клиент), и клиенты исключительно под Windows, такие как mIRC, HydraIRC, Miranda-Im (помимо ICQ и других протоколов, Миранда поддерживает и IRC). Подробнее об IRC-клиентах будет рассказано в одной из следующих статей цикла.

Рисунок 2. Один из IRC-клиентов – mirc

Чтобы общаться в IRC-сетях, вам нужен ник (Nick или Nickname) – это имя, под которым вы будете известны в сети в данный момент и по которому вам можно будет отправить личное (приватное) сообщение. Каждый подключенный к IRC-сети пользователь имеет свой уникальный ник в пределах этой IRC-сети. Ник выбирается пользователем самостоятельно при подключении к серверу, а если на этапе подключения сервер сообщает, что ник уже используется другим пользователем, то IRC-клиент автоматически подставит альтернативный или добавит к нему подчеркивание или число. Кроме того, можно сменить ник на любой другой, не переподключаясь к серверу.
Одной из важных деталей для IRC является канал – это определённая группа пользователей, своего рода комната для общения. Каналы существуют в пределах всей IRC‑сети и имеют имена (обычно начинающиеся с символа #). Сообщения, посланные в канал, получают все пользователи, находящиеся на нём (даже если все они подключены к разным серверам одной IRC-сети). На каналах существует своеобразная иерархия пользователей, но о ней расскажем чуть позже. Зная имя канала, пользователь может зайти на него и покинуть его добровольно, но может быть и «выпихнут» принудительно оператором при нарушении каких-либо правил или неподобающем поведении.
Раз уж речь зашла об операторе канала, то стоит пояснить, что это за человек. Оператор канала – это пользователь, имеющий права администрирования канала, он может устанавливать баны (запрещение на вход на этот канал), применять kick (то самое принудительное «выпинывание» (от англ. kick – пинок, удар) с канала), давать или отбирать у других статус оператора, менять тему канала (topic), а также изменять множество других настроек данного канала.
Заканчивая краткий обзор терминов IRC, коснёмся понятия «IRC-сервисы» – это служебные модули IRC, выполняющие такие общесетевые функции, как регистрация ников и каналов и администрирование IRC-сети. Для пользователей сервисы выглядят в виде обычных ников, с ними можно «пообщаться» в привате на языке их команд. Примером стандартных сервисов являются: NickServ, ChanServ, MemoServ.

Кто есть кто?
Как и обещалось, поговорим об иерархии в IRC. Начнём с самого верха.
IRC-Оператор – это владелец IRC-сервера, он обладает наибольшими возможностями в сети: может ставить запреты на вход на любой канал, «выкидывать» кого угодно откуда угодно, имеет право давать и снимать права оператора канала. Вместе с огромными возможностями на него ложиться не меньшая ответственность: «иркоп» должен следить за поведением пользователей на основных каналах (таких, как #main), должен помогать неопытным пользователям в различных вопросах, а также на его совести решение проблем, связанных с захватом ников или каналов. IRC-Оператор не принадлежит ни к одному каналу, он, можно сказать, «бог» IRC, т.к. в большинстве правил «ирковых» сетей прописано: «ИркОп всегда прав».
Спустимся чуть ближе к земле: следующее «звание» – основатель канала. В некоторых сетях он обозначается специальным знаком перед ником – «~», – но не во всех сетях введено отображение полной иерархии, так что он может обозначаться как «@». В его возможности входит полный контроль за каналом: назначение операторов, установка банов, раздача пинков (kick`ов), смена режимов канала (об этом – в одной из статей цикла), а также глобальное управление каналом – смена основателя или закрытие.
Немного отличается от основателя канала администратор (обычно имеет перед ником «&», но в некоторых сетях, при отключенной полной иерархии, – «@»), имеющий почти все права создателя канала за исключением прав закрытия, передачи другому пользователю и т.д. Администратор, как и основатель, обеспечиваются защитой сервиса ChanServ от кика или бана, кроме них и IRC-Оператора такой защиты никто не имеет.
Идём далее. Оператор канала предназначен для контроля за пользователями, он – последняя инстанция, которая может «навешивать» или же снимать баны. Кроме того, оператор может менять некоторые режимы работы канала – ну, и возможность «выпнуть» кого-либо с канала не забыта. Оператор канала обычно обозначается символом «@» перед ником.
И вот мы приблизились к последнему типу пользователей, которые могут что-либо делать – полу-оператор (обозначается символом «%» перед ником). Единственное, что он может делать, – выкидывать равных себе или нижестоящих пользователей с канала.
Остались последние звенья в иерархии: пользователи с правом голоса (обозначаются символом «+» перед никнеймом), которые могут разговаривать на модерируемых каналах (об этом – опять же в следующих статьях).
И последний, кто остался, – это простой пользователь (его ещё иногда называют «нормалом»). Он, кроме как говорить на каналах, ничего не может. Стоит отметить, что нижестоящий ничего не может сделать тому, кто его выше – для того и была создана вся эта структура.
Продолжение следует...


Рекомендуем почитать: