Курсы английского языка курсы турецкого языка Курсы китайского языка Курсы французского языкакитайский язык курсытурецкий язык IRC
СПб ТЕЛЕКОМ
Корзина  
Сумма: 0.00 руб.
Количество: 0 шт.
e-mail: sales@spbtelecom.ru

ICQ: 436502388
Главная Товары Услуги Как купить Поддержка Карта сайта
СЕРВЕР
ПРОФЕССИОНАЛОВ
В ОБЛАСТИ СВЯЗИ
Имя  Пароль 
Регистрация 
ПОИСК
IRC
 
Поддержка / Словарь терминов / Сетевые протоколы / IRC

IRC (англ. Internet Relay Chat — ретранслируемый интернет-чат) — сервисная система, при помощи которой можно общаться через сеть Интернет с другими людьми в режиме реального времени. Она была создана в 1988 году финским студентом Ярко Ойкариненом (Jarkko Oikarinen). В русском компьютерном сленге IRC называют «иркой», «ирцем», а также «мирк», «мирц» (кальки с названия наиболее популярного клиента — программы mIRC).

IRC начало завоевывать особенную популярность после операции «Буря в пустыне» (1991), когда сообщения со всего мира собирались в одном месте и в режиме «on-line» транслировались в IRC [1]. Подобным образом IRC использовалось и в 1991, во время путча в СССР, когда пользователи из Москвы в реальном времени сообщали всему миру о происходящем на улицах[источник?].

Описание IRC

IRC состоит из серверов. Сервер может быть соединён с другими серверами. Совокупность серверов, соединённых друг с другом, образует сеть. В мире существует множество сетей. Наиболее старые и известные — это IRCNet и EfNet, образовавшейся из расколовшейся первой irc-сети.

Для работы с IRC необходима специальная программа — клиент. Для Unix-подобных операционных систем одними из самых распространённых[источник?] являются xchat, irssi, kvirc и ircII. Для Win32-систем — mIRC, который прост в настройке и установке настолько, что 90 % пользуются именно им, и, часто, незнающие люди называют IRC «мирком».

IRC предоставляет возможность как группового, так и приватного общения. Для группового чата в IRC предназначены каналы, на которых пользователи могут собираться и вести общение. Общение напоминает общение людей в комнате - кто-нибудь говорит и все его слышат. У каждого канала есть имя, которое отражает общую тематику разговора. Это может быть как интересующая всех тема (например, #linux, #quake, #wikipedia-ru[2]), так и просто какое-нибудь объединяющее всех название (например, #ufa, #odessa). Если в первом случае разговоры обычно ведутся вокруг указанной тематики, то во втором случае разговоры ведутся на совершенно разнообразнейшие темы.

Кроме обычных пользователей сети IRC есть так называемые операторы каналов и операторы сети. Операторы канала — это модераторы, которые следят за порядком. Они могут закрыть доступ на канал без приглашения, выкинуть пользователя с канала, поставить ему бан (запрет входа на канал) и многое другое. Оператором канала в классическом случае становится тот, кто первым заходит на канал и тем самым создаёт его. У таких каналов есть постоянные операторы. Для того, чтобы они получили статус оператора при входе на канал используются обычно постоянно сидящие на канале боты (или роботы), которые имеют статус оператора и могут его раздавать определённым пользователям.

IRC-боты — это программы, которые подключаются к IRC-серверу и могут выполнять специальные операции. Кроме поддержки статуса оператора, боты могут выполнять функции доски объявлений, могут выводить информацию о заходящем на канал пользователе и множество другого. Отношение к ботам в разных сетях разное и в основном зависит от общей политики сети. Например, в IRCNet боты не приветствуются, но и нет регистрации каналов. В сети EfNet регистрации каналов также нет, но к ботам относятся равнодушно.

Операторы IRC-сети — это администраторы, управляющие работой сети в целом. В их власти выкинуть пользователя с сервера и запретить ему вход на отдельный сервер или вообще на все сервера сети. Однако, как правило, в IRC-сетях для операторов обычно тоже устанавливаются ограничения на уровне правил сети, сетевого этикета или даже на уровне IRCd/IRC-сервисов.

Технические детали

Команды

Основная статья: Список команд IRC

Большинство команд, которые вводятся в командную консоль, отличаются от тех, которые передаются по сети. Вот команды, определённые в RFC 2812:

  • NICK username — изменяет ник участника на указанный в параметре username
  • OPER username password — выдаёт права оператора пользователю, используя соответствующий O:Line.
  • QUIT — отсоединяет пользователя от сервера
  • JOIN channels [keys] — присоединяется к каналам channels используя соответствующие ключи keys если канал имеет режим +k. Каналы в списке разделяются запятыми
  • JOIN 0 — покинуть все каналы
  • PART channels [:message] — покинуть каналы channels, используя message. Если message состоит более чем из одного символа, до перед ним ставится :
  • MODE channel/username modes — меняет режимы канала channel (требуются права оператора канала) или пользователя username (большинство серверов позволяют менять свои флаги только самим пользователям). Modes представляет из себя строку в формате +flags-flags params
  • TOPIC channel [:message] — изменяет тему на message. Если не указан параметр message, то возвращает тему канала
  • NAMES [channel] — возвращает список пользователей на канале, или, если канал не указан, во всей сети
  • LIST [pattern] — возвращает все каналы. Если задан шаблон pattern, то возвращаются только шаблоны, совпадающие с ним
  • INVITE user channel — приглашает user на канал channel
  • KICK channels users [:reason] — выкидывает пользователей users с каналов channels. Возможно указать причину reason.
  • PRIVMSG channel/user :message — посылает сообщение message на канал channel или пользователю user.
  • NOTICE channel/user :message — аналог PRIVMSG. Согласно RFC 2812, на NOTICE никогда не может быть автоматических ответов.
  • WALLOPS text — посылает текст всем пользователям с режимом +w
  • WHOIS <nick,[nick,nick,...]> — показывает информацию о данном пользователе.

Режимы каналов

Операторы канала могут задавать различные режимы каналов с помощью команды MODE. В RFC 2811 определены следующие режимы:

  • +O user — обозначает создателя канала. Не должен изменяться вручную. (отсутствует во многих реализациях)
  • +o user — обозначает оператора канала.
  • +v user — даёт пользователю право говорить на модерируемых каналах (см. +m).
  • +a — анонимный канал. Имена всех пользователей скрываются как anonymous!anonymous@anonymous (отсутствует во многих реализациях)
  • +m — только пользователи с флагами +o, +h, или +v могут посылать в него сообщения.
  • +n — только находящиеся на канале пользователи могут посылать в него сообщения
  • +p/+s — канал скрывается во всех ответах сервера если пользователь не находится на этом канале
  • +t — тему канала могут изменять только операторы
  • +l limit — ограничивает количество пользователей на канале числом limit.
  • +k key — устанавливает ключ (пароль) от канала key
  • +b — вывести список банов +b на канале. Доступен всем пользователям
  • +b mask — запрещает доступ к каналу пользователей, совпадающих с маской mask.
  • +e mask — разрешает пользователям, попадающих под маску mask, заходить на канал вне зависимости от режимов +b
  • +I mask — разрешает пользователям, попадающих под маску mask, заходить на канал вне зависимости от режима +I
  • +c — оформление текста на канале запрещено (не определено в RFC)

Режимы пользователей

  • +i — невидимый пользователь
  • +s — получать извещения сервера
  • +w — получать wallops
  • +o — оператор сервера. Для получения должна использоваться команда OPER

CTCP

Основная статья: CTCP

CTCP — это особый тип сообщений. Сообщения CTCP выглядят так:

PRIVMSG target :\001command [arguments]\001

Target — это канал или пользователь, которому отправляется сообщение, \001 — это бинарный символ 0x01, command — это команда CTCP, arguments — аргументы команды. Основные команды:

  • PING — возвращает аргументы назад
  • VERSION — возвращает версию клиента
  • USERINFO — возвращает информацию о пользователе
  • CLIENTINFO — возвращает информацию о клиенте
  • SOURCE — возвращает источник, откуда можно загрузить клиент
  • TIME — возвращает время на компьютере пользователя
  • ACTION — эмулирует действие (команда /me)

Ответ на CTCP-запрос приходит в следующем виде:

NOTICE target :\001command [arguments]\001

Документы RFC

Основным документом, определяющим протокол IRC является RFC 1459 — Internet Relay Chat Protocol. Позднее были разработаны ещё несколько документов, дополняющих стандарт:

  • 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-сети

Среди международных сетей популярны:

  • DALnet(англ.)
  • EFnet(англ.)
  • Freenode, ранее известная как Open Projects Network (OPN)
  • IRCnet(англ.)
  • QuakeNet(англ.)
  • Undernet(англ.)

В названных сетях наиболее употребительным языком общения является английский. Существуют и сети, основной язык которых отличен от английского, в частности русскоязычные сети:

  • RusNet
  • DALNet.RU
  • WeNet
  • IrcNet.ru
  • ByNets (белорусская)
  • irc.by (белорусская)
  • Dal.Net.ru
  • Dogm.NET
  • IrcCity
  • SilverNet
  • UniNet

Специфика русскоязычного IRC

Использование русского языка в 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 перспективной кодировкой для всех языков, включая русский. Следует однако отметить, что одна буква кириллицы в UTF-8 занимает два байта, что не только создаёт ненужную нагрузку на сети, но и ограничивает максимальную длину одного сообщения. По стандарту, сообщение IRC не может иметь длину больше 510 байтов, из которых собственно на текст приходится никак не больше 499 (по нереалистично завышенной оценке). Следовательно, отправить в одном сообщении больше 249 русских букв оказывается невозможно. Ограничение размера сообщений вызывает ещё одну неприятность: при попытке превысить установленный предел сервер обрезает сообщения. Если срез пройдёт посередине русской буквы (то есть будет передан первый её байт, но отброшен второй), то получившаяся последовательность байтов перестанет, с точки зрения UTF-8, быть правильной строкой. Ряд клиентов (например, Xchat или mIRC) отобразят такое сообщение как 8-битное (например, в Latin-1 или Windows-1251), что сделает его полностью нечитаемым и занимающим к тому же много места на экране.

Единственным несомненным преимуществом использования UTF-8 для кодировки русского языка является возможность свободно цитировать тексты на других языках, а также использовать экзотические символы наподобие «→» и «☺». К тому же, являясь клиентом IRC-сети, в которой UTF-8 принят повсеместно, можно будет общаться сразу на многих языках, не заботясь о техническом представлении букв. Пока, однако, неизвестны многоязычные сети, явно оговаривающие необходимость использования только UTF-8, использующие UTF-8 в качестве внутренней кодировки, или каким-либо иным образом упорядочивающие кодировку символов клиентами.