Что такое IRC каналы
История и спецификации
IRC был разработан в 1988 в качестве замены программы MultiUser Talk. Основная спецификация - RFC 1459 (1993). Ее дополняют несколько спецификаций 2000 года:
- RFC 2810 - Internet Relay Chat: Architecture
- RFC 2811 - Internet Relay Chat: Channel Management
- RFC 2812 - Internet Relay Chat: Client Protocol
- RFC 2813 - Internet Relay Chat: Server Protocol
IRC-сеть
Согласно спецификациям протокола, IRC-сеть - это группа серверов, соединенных между собой. Простейшей сетью является одиночный сервер.
Сеть должна иметь вид связного дерева, в котором каждый сервер является центральным узлом для остальной части сети.
Клиентом называется все, что подключено к серверу, кроме других серверов. Различают два типа клиентов:
- пользовательские;
- сервисные.
Пример IRC-сети (буквами обозначены серверы, цифрами - клиенты)
Пересылка сообщений в IRC-сети
IRC предоставляет возможность как группового, так и приватного общения. Для группового общения существует несколько возможностей. Пользователь может отправить сообщение списку пользователей, при этом серверу отправляется список, сервер выделяет из него отдельных пользователей и отправляет копию сообщения каждому из них. Более эффективным является использование каналов. В этом случае сообщение отправляется непосредственно серверу, а сервер отправляет его всем пользователям в канале. Как при групповом, так и при приватном общении сообщения отправляются клиентам по кратчайшему пути и видимы только отправителю, получателю и входящим в кратчайший путь серверам.
Например, если клиенты 1, 2 и 3 (в примере) находятся в одном канале, то сообщение от клиента 1 будет отправлено на сервер A, затем клиенту 2 и на сервер B, который отправит его клиенту 3. Серверы C, D и E этого сообщения не увидят.
Кроме того, возможна отправка широковещательного сообщения. Сообщения клиентов, касающиеся изменения состояния сети (например, режима канала или статуса пользователя) должны отправляться всем серверам, входящим в сеть. Все сообщения, исходящие от сервера, также должны быть отправлены всем остальным серверам.
Пользовательские режимы
- i - невидимый пользователь
- s - получать извещения сервера
- w - получать широковещательные сообщения
- o - оператор сервера
Состояния каналов
Оператор канала может менять его состояние с помощью команды, добавляя/удаляя различные флаги как каналу, так и отдельным пользователям в канале.
Пользовательские флаги
- O user - обозначает создателя канала (вручную изменить невозможно)
- o user - обозначает оператора канала
- h user - обозначает полуоператора канала
- v user - даёт пользователю право отправлять сообщения в модерируемый канал
Флаги канала
- a - анонимный канал (имена всех пользователей скрываются)
- i - доступ в канал только по приглашению
- m - модерируемый канал (только пользователи с флагами +o, +h, или +v могут посылать в этот канал сообщения)
- n - только находящиеся в канале пользователи могут посылать в него сообщения
- q - «тихий» канал (ограничение на отправку серверных сообщений)
- p/s - приватный/секретный канал (не отображается в общем списке каналов, в него можно попасть только зная имя канала)
- r - если в канале в течение определенного времени отсутствуют все операторы, сервер сам назначает операторов из числа пользователей в канале
- t - тема канала может быть изменена только оператором канала
- k - пароль канала
- l - лимит пользователей в канале
- b mask - запрет на доступ к каналу пользователей, совпадающих с маской mask
- e mask - разрешает пользователям, попадающих под маску mask, заходить на канал вне зависимости от флага b
- i mask - разрешает пользователям, попадающих под маску mask, заходить на канал вне зависимости от режима i
Команды
Регистрация и подключение
PASS
Параметры:
Устанавливает пароль соединения.
Возможные отклики сервера:
- ERR_NEEDMOREPARAMS
- ERR_ALREADYREGISTRED
NICK
Параметры:
Изменение ника.
Возможные отклики сервера:
- ERR_NONICKNAMEGIVEN
- ERR_ERRONEUSNICKNAME
- ERR_NICKNAMEINUSE
- ERR_NICKCOLLISION
- ERR_UNAVAILRESOURCE
- ERR_RESTRICTED
SERVICE
Параметры:
Регистрация нового клиента-сервиса.
Возможные отклики сервера:
- ERR_ALREADYREGISTRED
- ERR_NEEDMOREPARAMS
- ERR_ERRONEUSNICKNAME
- RPL_YOURESERVICE
- RPL_YOURHOST
- RPL_MYINFO
USER
Параметры:
Используется в начале соединения для определения нового пользователя.
Возможные отклики сервера:
- ERR_NEEDMOREPARAMS
- ERR_ALREADYREGISTRED
OPER
Параметры: Получение статуса оператора. Возможные отклики сервера: Параметры: Изменение состояния пользователя - добавление/удаление флагов; команда доступна только операторам. Возможные отклики сервера: Параметры: [ Выход пользователя из сети. Возможные отклики сервера: отсутствуют. Параметры: Выход сервера из сети; команда доступна только оператору сервера либо серверу при возникновении ошибки. Возможные отклики сервера: Параметры: Вход в канал. Возможные отклики сервера: Параметры: Выход из канала. Возможные отклики сервера: Параметры: Изменение режима канала; в команде допускается не более трех режимов с параметрами. Возможные отклики сервера: Параметры: Изменение или просмотр темы канала. Возможные отклики сервера: Параметры: [ Просмотреть список имен пользователей, подключенных к серверу target и присутствующих в канале channel. Возможные отклики сервера: Параметры: [ Просмотр списка каналов/статуса указанных каналов. Возможные отклики сервера: Параметры: Пригласить пользователя в канал. Возможные отклики сервера: Параметры: Удаление пользователя из канала. Возможные отклики сервера: Параметры: Отправка личного (приватного) сообщения. Возможные отклики сервера: Параметры: Команда используется аналогично PRIVMSG, но без получения автоматического ответа. Параметры: [ Установка т.наз. «сообщения дня». Возможные отклики сервера: Параметры: [ Сведения о пользователях, подключенных к сети/подсети, соответствующей указанной маске/серверу. Возможные отклики сервера: Параметры: [ Версия программы-сервера. Возможные отклики сервера: Параметры: [ Статистика по серверу. Возможные отклики сервера: Параметры: [ [ Имена серверов, подключенных к указанному/текущему. Возможные отклики сервера: Параметры: [ Локальное время сервера. Возможные отклики сервера: Параметры: Попытка подключить текущий сервер к указанному через указанный порт. Возможные отклики сервера: Параметры: [ Путь к указанному серверу. Возможные отклики: Параметры: [ Информация об администраторе указанного/текущего сервера. Возможные отклики сервера: Параметры: [ Информация о сервере. Возможные отклики сервера: Параметры: [ Список доступных сервисов. Возможные отклики сервера: Параметры: Аналогично PRIVMSG. Параметры: [ Данные пользователей, ники которых соответствуют указанной маске. Возможные отклики сервера: Параметры: [ Данные об определенном пользователе. Возможные отклики сервера: Параметры: Данные пользователя, отсутствующего в сети, то есть уже не существующего. Возможные отклики сервера: Параметры: Разрыв соединения с указанным пользователем со стороны сервера. Возможные отклики сервера: Параметры: Проверка активности клиента/сервера на другой стороне соединения. Возможные отклики: Параметры: Ответ на сообщение PING от сервера server серверу server2. Возможные отклики: Параметры: Используется сервером для сообщения об ошибке. Наиболее популярные приложения для различных ОС: AmIRC, AIRcOS, WookieChat, BenderIRC, BitchX , BlackIRC
AndroIRC, Andchat , DaraIRC, fIRC chat, IRC radio, Yaaic, AiCiA, Droid-Life IRC
Использование русского языка в IRC не опирается ни на какой стандарт. Однако, имеется ряд обычаев и соглашений, возникших в процессе эволюции различных русскоязычных IRC-сообществ. Первые русскоговорящие каналы возникли ещё в 1990-х годах в международных сетях, таких как DALnet и IRCNet. Первоначально, под влиянием UNIX-культуры, было принято кодировать буквы русского алфавита в KOI-8 . Примерно с 1995 года начался приток пользователей Windows, которые зачастую вообще не имели понятия, что такое кодовая страница и не делали различия между кириллицей и Windows-1251 . Данное противоречие вызвало много конфликтов. Стихийно возникшее в те времена соглашение помещало вопрос о кодировках в ве́дение конкретных каналов. Это было очень неудобно для пользователей, однако на тот момент иного выхода не было. Отчасти именно эта проблема стимулировала примерно с 2000 года усиленное формирование отдельных русскоязычных сетей, где вопросы кодировки могли бы решаться централизованно. Традиционно, в международных IRC-сетях клиенты посылают и принимают сообщения, состоящие из байтов ; при этом вопрос об интерпретации не ASCII-байтов оставляется на усмотрение клиентов. Все сколь-нибудь развитые русскоязычные сети, при всех их различиях, придерживаются иного принципа: клиенты посылают и принимают сообщения, состоящие из символов
. То есть, если правильно настроенный
клиент отправляет на канал букву «Ы», то все подключенные к каналу правильно настроенные клиенты будут принимать тоже букву «Ы», независимо от того, как каждый из них предпочитает её кодировать. На практике это обычно реализуется наличием на сервере нескольких TCP-портов , на каждом из которых используется определённая кодировка. Список этих портов принято помещать в MOTD (приветствие сервера). Таким образом, вопрос о «правильной настройке» клиента сохраняется, однако для пользователя выбрать порт подключения несравненно проще, нежели заниматься установкой таблиц перекодировок символов, возможность чего, кстати, и не во всяком клиенте предусмотрена. Иногда (хотя и не обязательно), серверное ПО позволяет переключить кодировку без отсоединения от сервера - хотя по ряду причин такое изменение кодировки работает неаккуратно. Как правило, каждая сеть использует свою внутреннюю кодировку (чаще всего это Windows-1251 и почти никогда UTF-8; почему - см. ниже), при этом данные, передаваемые или принимаемые клиентами, с кодировками отличными от внутренней, подвергаются перекодировке (немедленной при приёме, проводимой в момент формирования входящего сообщения - при передаче). Исторически использование букв кириллицы в никах было невозможно. Однако самая большая рускоязычная IRC-сеть RusNet позволяет пользоваться и регистрировать кириллические ники. Сторонники интернационализации обычно считают UTF-8 перспективной кодировкой для всех языков, включая русский. Следует однако отметить, что одна буква кириллицы в UTF-8 занимает два байта , что создаёт некоторую дополнительную нагрузку на сети и ограничивает максимальную длину одного сообщения. По стандарту, сообщение IRC не может иметь длину больше 510 байтов, из которых собственно на текст приходится никак не больше 499 (по нереалистично завышенной оценке). Следовательно, отправить в одном сообщении больше 249 русских букв оказывается невозможно. Ограничение размера сообщений вызывает ещё одну неприятность: при попытке превысить установленный предел сервер обрезает сообщения. Если срез пройдёт посередине русской буквы (то есть будет передан первый её байт, но отброшен второй), то получившаяся последовательность байтов перестанет, с точки зрения UTF-8, быть правильной строкой. Ряд клиентов (например, Xchat или mIRC) отобразят такое сообщение как 8-битное (например, в Latin-1 или Windows-1251), что сделает его полностью нечитаемым и занимающим к тому же много места на экране. Единственным несомненным преимуществом использования UTF-8 для кодировки русского языка является возможность свободно цитировать тексты на других языках, а также использовать экзотические символы наподобие «→» и «☺». К тому же, являясь клиентом IRC-сети, в которой UTF-8 принят повсеместно, можно будет общаться сразу на многих языках, не заботясь о техническом представлении букв. Пока, однако, неизвестны многоязычные сети, явно оговаривающие необходимость использования только UTF-8, использующие UTF-8 в качестве внутренней кодировки, или каким-либо иным образом упорядочивающие кодировку символов клиентами. Большинство команд, которые вводятся в командную консоль, отличаются от тех, которые передаются по сети. Вот команды, определённые в RFC 2812 : Использование русского языка в IRC не опирается ни на какой стандарт.Однако, имеется ряд обычаев и соглашений, возникших в процессе эволюции различных русскоязычных IRC-сообществ. Первые русскоговорящие каналы возникли ещё в 1990-х годах в международных сетях, таких как DALnet и IRCNet. Первоначально, под влиянием UNIX-культуры, было принято кодировать буквы русского алфавита в KOI-8 .Примерно с 1995 года начался приток пользователей Windows, которые зачастую вообще не имели понятия, что такое кодовая страница и не делали различия между кириллицей и Windows-1251 .Данное противоречие вызвало много конфликтов, включая «религиозные войны» .Стихийно возникшее в те времена соглашение помещало вопрос о кодировках в ве́дение конкретных каналов.Это было очень неудобно для пользователей, однако на тот момент иного выхода не было.Отчасти именно эта проблема стимулировала примерно с 2000 года усиленное формирование отдельных русскоязычных сетей, где вопросы кодировки могли бы решаться централизованно. Традиционно, в международных IRC-сетях клиенты посылают и принимают сообщения, состоящие из байтов ; при этом вопрос об интерпретации не ASCII-байтов оставляется на усмотрение клиентов.Все сколь-нибудь развитые русскоязычные сети, при всех их различиях, придерживаются иного принципа: клиенты посылают и принимают сообщения, состоящие из символов
.То есть, если правильно настроенный
клиент отправляет на канал букву «Ы», то все подключенные к каналу правильно настроенные клиенты будут принимать тоже букву «Ы», независимо от того, как каждый из них предпочитает её кодировать. На практике это обычно реализуется наличием на сервере нескольких TCP-портов , на каждом из которых используется определённая кодировка. Список этих портов принято помещать в MOTD (приветствие сервера).Таким образом, вопрос о «правильной настройке» клиента сохраняется, однако для пользователя выбрать порт подключения несравненно проще, нежели заниматься установкой таблиц перекодировок символов, возможность чего, кстати, и не во всяком клиенте предусмотрена.Иногда (хотя и не обязательно), серверное ПО позволяет переключить кодировку без отсоединения от сервера - хотя по ряду причин такое изменение кодировки работает неаккуратно. Как правило, каждая сеть использует свою внутреннюю кодировку (чаще всего это Windows-1251 и почти никогда не UTF-8; почему - см. ниже), при этом данные, передаваемые или принимаемые клиентами, с кодировками отличными от внутренней, подвергаются перекодировке (немедленной при приёме, проводимой в момент формирования входящего сообщения - при передаче). Исторически использование букв кириллицы в никах было невозможно.Однако некоторые современные серверы позволяют это делать.Считать ли буквы кириллицы, визуально похожие на буквы латиницы, той же самой буквой?Если считать, то какие именно и как именно?Разные сети имеют разную политику насчёт всего этого. Сторонники интернационализации обычно считают UTF-8 перспективной кодировкой для всех языков, включая русский.Следует однако отметить, что одна буква кириллицы в UTF-8 занимает два байта , что создаёт некоторую дополнительную нагрузку на сети и ограничивает максимальную длину одного сообщения.По стандарту, сообщение IRC не может иметь длину больше 510 байтов, из которых собственно на текст приходится никак не больше 499 (по нереалистично завышенной оценке).Следовательно, отправить в одном сообщении больше 249 русских букв оказывается невозможно.Ограничение размера сообщений вызывает ещё одну неприятность: при попытке превысить установленный предел сервер обрезает сообщения.Если срез пройдёт посередине русской буквы (то есть будет передан первый её байт, но отброшен второй), то получившаяся последовательность байтов перестанет, с точки зрения UTF-8, быть правильной строкой.Ряд клиентов (например, Xchat или mIRC) отобразят такое сообщение как 8-битное (например, в Latin-1 или Windows-1251), что сделает его полностью нечитаемым и занимающим к тому же много места на экране. Единственным несомненным преимуществом использования UTF-8 для кодировки русского языка является возможность свободно цитировать тексты на других языках, а также использовать экзотические символы наподобие «→» и «☺».К тому же, являясь клиентом IRC-сети, в которой UTF-8 принят повсеместно, можно будет общаться сразу на многих языках, не заботясь о техническом представлении букв.Пока, однако, неизвестны многоязычные сети, явно оговаривающие необходимость использования только UTF-8, использующие UTF-8 в качестве внутренней кодировки, или каким-либо иным образом упорядочивающие кодировку символов клиентами. п
·о
·р
IRC канал (Internet Relay Chat) - это протокол, позволяющий пользователям общаться друг с другом в реальном времени посредством набора слов на клавиатуре (chat). IRC была написана в 1988 году как улучшение UNIX-программы talk и развился в отдельный протокол. С IRC сейчас работают тысячи пользователей Интернет по всему миру. IRC может служить как и для развлечения, так и для вполне серьезных дел: помощи и консультации в работе, передачи информации и прочего. IRC использовался во время октябрьского путча 93 года, некоторые российские писатели-фантасты периодически устраивают пресс-конференции на определенных каналах. IRC состоит из серверов. Сервер может быть соединен с другими серверами. Совокупность серверов, соединенных друг с другом образует сеть. Для работы с IRC необходима специальная программа-клиент. После подключения к серверу можно найти нужного человека и общаться с ним. Можно также подключиться к каналу. Общение на канале напоминает общение людей в комнате. Кто-нибудь говорит и все его слышат. У каждого канала есть имя, которое отражает общую тематику разговора. Это может быть как интересующая всех тема (например, ), так и просто какое-нибудь объединяющее всех название (например, ). Если в первом случае разговоры обычно ведутся вокруг указанной тематики, то во втором случае разговоры ведутся на совершенно разнообразнейшие темы. Кроме обычных пользователей сети IRC есть, так называемые, операторы каналов и операторы сети. Операторы канала - это «хозяева» канала. Они могут закрыть доступ на канал без приглашения, лишить любого пользователя возможность говорить на канале, выкинуть пользователя с канала, поставить ему бан (невозможность зайти на канал) и многое другое. Иными словами, это управляющие, которые следят за порядком на канале. Оператором канала в классическом случае становится тот, кто первым заходит на канал и тем самым создает его. Но на данный момент такие случаи очень редки. В основном сейчас существует множество постоянных каналов. У таких каналов есть постоянные операторы. Для того, чтобы они получили статус оператора при входе на канал используются обычно постоянно сидящие на канале боты (или роботы), которые имеют статус оператора и могут раздавать его определенным пользователям. Боты - это программы, которые подключаются к IRC-серверу и могут выполнять специальные операции. Кроме поддержки статуса оператора, боты могут выполнять функции доски объявлений, могут выводить информацию о заходящем на канал пользователе и множество другого. Отношение к ботам в разных сетях разное и в основном зависит от общей политики сети. Операторы сети - это администраторы, управляющие работой сети в целом. В их власти выкинуть пользователя с сервера и запретить ему вход на отдельный сервер или вообще на все сервера сети. Однако операторам запрещено вмешиваться во внутренние дела каналов - для этого существуют операторы каналов. Фактически операторы могут вмешиваться только если в результате действий какого-либо пользователя нарушается нормальная работа сети.MODE
QUIT
SQUIT
Работа с каналами
JOIN
PART
MODE
TOPIC
NAMES
LIST
INVITE
KICK
Отправка сообщений
PRIVMSG
NOTICE
Работа с серверами
MOTD
LUSERS
VERSION
STATS
LINKS
TIME
CONNECT
TRACE
ADMIN
INFO
Работа с клиентами-сервисами
SERVLIST
SQUERY
Работа с данными пользователей
WHO
WHOIS
WHOWAS
Прочие команды
KILL
PING
PONG
ERROR
Клиентские приложения для IRC-сетей
Специфика русскоязычного IRC
История вопроса
Обычаи современных русскоязычных сетей
Ники
UTF-8 - за и против
См. также
Примечания
Ссылки
Internet Relay Chat
Основные понятия
Админ Бот Канал DoS-атака Оператор канала Клиент Флуд Ghost Hostmask IRC
Kickban Netsplit Сеть Оператор Скрипт Сервер Сервисы vhost
Списки и сравнения
Список IRC-команд Список IRC-клиентов Сравнение IRC-клиентов
Связанные протоколы
IRC
IRCX
Технические детали
Команды
Режимы каналов
Специфика русскоязычного IRC
История вопроса
Обычаи современных русскоязычных сетей
Ники
UTF-8 - за и против
См. также
Примечания
Ссылки
Основные понятия
Админ Бот Канал DoS-атака Оператор канала Клиент Флуд Ghost Hostmask IRC
Kickban Netsplit Сеть Оператор Скрипт Сервер Сервисы vhost
Списки и сравнения
Список IRC-команд Список IRC-клиентов Сравнение IRC-клиентов
Связанные протоколы
IRC
IRCX