Наука
Регистрация
Advertisement
Об IRC в Википедии смотрите страницу Википедия:IRC.

Шаблон:Карточка протокола

IRC (англ. Internet Relay Chat) — протокол прикладного уровня для обмена сообщениями в режиме реального времени.

Разработан в основном для группового общения, также позволяет общаться через личные сообщения и обмениваться данными, в том числе файлами.

IRC использует транспортный протокол TCP и криптографический TLS (опционально).

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

Ввиду технической простоты реализации протокол 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 example

Пример 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 -> SERVICE либо PASS -> NICK -> USER

PASS[]

Параметры: <password>

Устанавливает пароль соединения.

Возможные отклики сервера:

  • ERR_NEEDMOREPARAMS
  • ERR_ALREADYREGISTRED

NICK[]

Параметры: <nickname>

Изменение ника.

Возможные отклики сервера:

  • ERR_NONICKNAMEGIVEN
  • ERR_ERRONEUSNICKNAME
  • ERR_NICKNAMEINUSE
  • ERR_NICKCOLLISION
  • ERR_UNAVAILRESOURCE
  • ERR_RESTRICTED

SERVICE[]

Параметры: <nickname> <reserved> <distribution> <type> <reserved> <info>

Регистрация нового клиента-сервиса.

Возможные отклики сервера:

  • ERR_ALREADYREGISTRED
  • ERR_NEEDMOREPARAMS
  • ERR_ERRONEUSNICKNAME
  • RPL_YOURESERVICE
  • RPL_YOURHOST
  • RPL_MYINFO

USER[]

Параметры: <user> <mode> <unused> <realname>

Используется в начале соединения для определения нового пользователя.

Возможные отклики сервера:

  • ERR_NEEDMOREPARAMS
  • ERR_ALREADYREGISTRED

OPER[]

Параметры: <name> <password>

Получение статуса оператора.

Возможные отклики сервера:

  • ERR_NEEDMOREPARAMS
  • RPL_YOUREOPER
  • ERR_NOOPERHOST
  • ERR_PASSWDMISMATCH

MODE[]

Параметры: <nickname> *(<"+" / «-»> <flag>)

Изменение состояния пользователя — добавление/удаление флагов; команда доступна только операторам.

Возможные отклики сервера:

  • ERR_NEEDMOREPARAMS
  • ERR_USERSDONTMATCH
  • ERR_UMODEUNKNOWNFLAG
  • RPL_UMODEIS

QUIT[]

Параметры: [ <Quit Message> ]

Выход пользователя из сети.

Возможные отклики сервера: отсутствуют.

SQUIT[]

Параметры: <server> <comment>

Выход сервера из сети; команда доступна только оператору сервера либо серверу при возникновении ошибки.

Возможные отклики сервера:

  • ERR_NOPRIVILEGES
  • ERR_NOSUCHSERVER
  • ERR_NEEDMOREPARAMS

Работа с каналами[]

JOIN[]

Параметры: <channel> *(", " <channel>) [ <key> *(", " <key>) ])

Вход в канал.

Возможные отклики сервера:

  • ERR_NEEDMOREPARAMS
  • ERR_BANNEDFROMCHAN
  • ERR_INVITEONLYCHAN
  • ERR_BADCHANNELKEY
  • ERR_CHANNELISFULL
  • ERR_BADCHANMASK
  • ERR_NOSUCHCHANNEL
  • ERR_TOOMANYCHANNELS
  • ERR_TOOMANYTARGETS
  • ERR_UNAVAILRESOURCE
  • RPL_TOPIC

PART[]

Параметры: <channel> *(", « <channel>) [ <Part Message> ]

Выход из канала.

Возможные отклики сервера:

  • ERR_NEEDMOREPARAMS
  • ERR_NOSUCHCHANNEL
  • ERR_NOTONCHANNEL

MODE[]

Параметры: <channel> *((„-“ / „+“) *<modes> *<modeparams>)

Изменение режима канала; в команде допускается не более трех режимов с параметрами.

Возможные отклики сервера:

  • ERR_NEEDMOREPARAMS
  • ERR_KEYSET
  • ERR_NOCHANMODES
  • ERR_CHANOPRIVSNEEDED
  • ERR_USERNOTINCHANNEL
  • ERR_UNKNOWNMODE
  • RPL_CHANNELMODEIS
  • RPL_BANLIST
  • RPL_ENDOFBANLIST
  • RPL_EXCEPTLIST
  • RPL_ENDOFEXCEPTLIST
  • RPL_INVITELIST
  • RPL_ENDOFINVITELIST
  • RPL_UNIQOPIS

TOPIC[]

Параметры: <channel> [»: " <topic> ]

Изменение или просмотр темы канала.

Возможные отклики сервера:

  • ERR_NEEDMOREPARAMS
  • ERR_NOTONCHANNEL
  • RPL_NOTOPIC
  • RPL_TOPIC
  • ERR_CHANOPRIVSNEEDED
  • ERR_NOCHANMODES

NAMES[]

Параметры: [ <channel> *(", " <channel>) [ <target> ] ]

Просмотреть список имен пользователей, подключенных к серверу target и присутствующих в канале channel.

Возможные отклики сервера:

  • ERR_TOOMANYMATCHES
  • ERR_NOSUCHSERVER
  • RPL_NAMREPLY
  • RPL_ENDOFNAMES

LIST[]

Параметры: [ <channel> *(", " <channel>) [ <target> ] ]

Просмотр списка каналов/статуса указанных каналов.

Возможные отклики сервера:

  • ERR_TOOMANYMATCHES
  • ERR_NOSUCHSERVER
  • RPL_LIST
  • RPL_LISTEND

INVITE[]

Параметры: <nickname> <channel>

Пригласить пользователя в канал.

Возможные отклики сервера:

  • ERR_NEEDMOREPARAMS
  • ERR_NOSUCHNICK
  • ERR_NOTONCHANNEL
  • ERR_USERONCHANNEL
  • ERR_CHANOPRIVSNEEDED
  • RPL_INVITING
  • RPL_AWAY

KICK[]

Параметры: <channel> *(", " <channel>) <user> *(", " <user>) [<comment>]

Удаление пользователя из канала.

Возможные отклики сервера:

  • ERR_NEEDMOREPARAMS
  • ERR_NOSUCHCHANNEL
  • ERR_BADCHANMASK
  • ERR_CHANOPRIVSNEEDED
  • ERR_USERNOTINCHANNEL
  • ERR_NOTONCHANNEL

Отправка сообщений[]

PRIVMSG[]

Параметры: <msgtarget> <text to be sent>

Отправка личного (приватного) сообщения.

Возможные отклики сервера:

  • ERR_NORECIPIENT
  • ERR_NOTEXTTOSEND
  • ERR_CANNOTSENDTOCHAN
  • ERR_NOTOPLEVEL
  • ERR_WILDTOPLEVEL
  • ERR_TOOMANYTARGETS
  • ERR_NOSUCHNICK
  • RPL_AWAY

NOTICE[]

Параметры: <msgtarget> <text>

Команда используется аналогично PRIVMSG, но без получения автоматического ответа.

Работа с серверами[]

MOTD[]

Параметры: [ <target> ]

Установка т.наз. «сообщения дня».

Возможные отклики сервера:

  • RPL_MOTDSTART
  • RPL_MOTD
  • RPL_ENDOFMOTD
  • ERR_NOMOTD

LUSERS[]

Параметры: [ <mask> [ <target> ] ]

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

Возможные отклики сервера:

  • RPL_LUSERCLIENT
  • RPL_LUSEROP
  • RPL_LUSERUNKOWN
  • RPL_LUSERCHANNELS
  • RPL_LUSERME
  • ERR_NOSUCHSERVER

VERSION[]

Параметры: [ <target> ]

Версия программы-сервера.

Возможные отклики сервера:

  • ERR_NOSUCHSERVER
  • RPL_VERSION

STATS[]

Параметры: [ <query> [ <target> ] ]

Статистика по серверу.

Возможные отклики сервера:

  • ERR_NOSUCHSERVER
  • RPL_STATSLINKINFO
  • RPL_STATSUPTIME
  • RPL_STATSCOMMANDS
  • RPL_STATSOLINE
  • RPL_ENDOFSTATS

LINKS[]

Параметры: [ [ <remote server> ] <server mask> ]

Имена серверов, подключенных к указанному/текущему.

Возможные отклики сервера:

  • ERR_NOSUCHSERVER
  • RPL_LINKS
  • RPL_ENDOFLINKS

TIME[]

Параметры: [ <target> ]

Локальное время сервера.

Возможные отклики сервера:

  • ERR_NOSUCHSERVER
  • RPL_TIME

CONNECT[]

Параметры: <target server> <port> [ <remote server> ]

Попытка подключить текущий сервер к указанному через указанный порт.

Возможные отклики сервера:

  • ERR_NOSUCHSERVER
  • ERR_NOPRIVILEGES
  • ERR_NEEDMOREPARAMS

TRACE[]

Параметры: [ <target> ]

Путь к указанному серверу.

Возможные отклики:

  • ERR_NOSUCHSERVER
  • RPL_TRACELINK
  • RPL_TRACECONNECTING
  • RPL_TRACEHANDSHAKE
  • RPL_TRACEUNKNOWN
  • RPL_TRACEOPERATOR
  • RPL_TRACEUSER
  • RPL_TRACESERVER
  • RPL_TRACESERVICE
  • RPL_TRACENEWTYPE
  • RPL_TRACECLASS
  • RPL_TRACELOG
  • RPL_TRACEEND

ADMIN[]

Параметры: [ <target> ]

Информация об администраторе указанного/текущего сервера.

Возможные отклики сервера:

  • ERR_NOSUCHSERVER
  • RPL_ADMINME
  • RPL_ADMINLOC1
  • RPL_ADMINLOC2
  • RPL_ADMINEMAIL

INFO[]

Параметры: [ <target> ]

Информация о сервере.

Возможные отклики сервера:

  • ERR_NOSUCHSERVER
  • RPL_INFO
  • RPL_ENDOFINFO

Работа с клиентами-сервисами[]

SERVLIST[]

Параметры: [ <mask> [ <type> ] ]

Список доступных сервисов.

Возможные отклики сервера:

  • RPL_SERVLIST
  • RPL_SERVLISTEND

SQUERY[]

Параметры: <servicename> <text>

Аналогично PRIVMSG.

Работа с данными пользователей[]

WHO[]

Параметры: [ <mask> [ «o» ] ]

Данные пользователей, ники которых соответствуют указанной маске.

Возможные отклики сервера:

  • ERR_NOSUCHSERVER
  • RPL_WHOREPLY
  • RPL_ENDOFWHO

WHOIS[]

Параметры: [ <target> ] <mask> *(", " <mask>)

Данные об определенном пользователе.

Возможные отклики сервера:

  • ERR_NOSUCHSERVER
  • ERR_NONICKNAMEGIVEN
  • RPL_WHOISUSER
  • RPL_WHOISCHANNELS
  • RPL_WHOISCHANNELS
  • RPL_WHOISSERVER
  • RPL_AWAY
  • RPL_WHOISOPERATOR
  • RPL_WHOISIDLE
  • ERR_NOSUCHNICK
  • RPL_ENDOFWHOIS

WHOWAS[]

Параметры: <nickname> *(", " <nickname>) [ <count> [ <target> ] ]

Данные пользователя, отсутствующего в сети, то есть уже не существующего.

Возможные отклики сервера:

  • ERR_NONICKNAMEGIVEN
  • ERR_WASNOSUCHNICK
  • RPL_WHOWASUSER
  • RPL_WHOISSERVER
  • RPL_ENDOFWHOWAS

Прочие команды[]

KILL[]

Параметры: <nickname> <comment>

Разрыв соединения с указанным пользователем со стороны сервера.

Возможные отклики сервера:

  • ERR_NOPRIVILEGES
  • ERR_NEEDMOREPARAMS
  • ERR_NOSUCHNICK
  • ERR_CANTKILLSERVER

PING[]

Параметры: <server1> [ <server2> ]

Проверка активности клиента/сервера на другой стороне соединения.

Возможные отклики:

  • ERR_NOORIGIN
  • ERR_NOSUCHSERVER

PONG[]

Параметры: <server> [ <server2> ]

Ответ на сообщение PING от сервера server серверу server2.

Возможные отклики:

  • ERR_NOORIGIN
  • ERR_NOSUCHSERVER

ERROR[]

Параметры: <error message>

Используется сервером для сообщения об ошибке.

Клиентские приложения для IRC-сетей[]

Наиболее популярные приложения для различных ОС:

Windows:

mIRC, Miranda IM, Trillian, Pidgin, KVIrc, XChat

Unix и Linux:

Quassel, Kopete, Irssi, XChat, Konversation, KVIrc, Pidgin, ircII

Mac OS X:

Snak, Ircle, Adium, Colloquy, KVIrc

AmigaOS:

AmIRC, AIRcOS, WookieChat, BenderIRC, BitchX, BlackIRC

Android:

androIRC, Andchat, DaraIRC, fIRC chat, IRC radio, Yaaic, AiCiA, Droid-Life IRC

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

Question book-4
В этом разделе не хватает ссылок на источники информации.
Информация должна быть проверяема, иначе она может быть поставлена под сомнение и удалена.
Вы можете отредактировать эту статью, добавив ссылки на авторитетные источники.
Эта отметка установлена 11 мая 2011 года.

[[Категория:Наука:Статьи с разделами без ссылок на источники Ошибка: неправильное время]]К:Наука:Статьи без источников (страна: ) Использование русского языка в 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 перспективной кодировкой для всех языков, включая русский. Следует однако отметить, что одна буква кириллицы в 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 сервера внутри сети I2P.

См. также[]

  • IRC-сервисы
  • Список IRC-клиентов
  • Баунсер
  • Веб-чат
  • IRC игра
  • Instant Messenger

Примечания[]

Ссылки[]

Шаблон:IRC

Основные протоколы TCP/IP

Прикладной уровень
HTTP, SMTP, FTP, DHCP, SSH, IRC, SNMP, DNS,
IMAP, NNTP, SIP, SMTP, TELNET, BitTorrent, rlogin
Транспортный уровень
TCP, UDP, SCTP, DCCP, RUDP
Сетевой уровень
IPv4, IPv6, ARP, ICMP, IGMP
Канальный уровень
Ethernet, 802.11 WiFi, Token ring, FDDI, PPP,
SLIP, ATM, DTM, Frame Relay, SMDS
Физический уровень
RS-232, EIA-422, RS-449, EIA-485

Шаблон:URI scheme


  1. Википедия IRC адрес
  2. Викисловарьадрес
  3. Викицитатникадрес
  4. Викиучебникадрес
  5. Викитекаадрес
  6. Викиновостиадрес
  7. Викиверситетадрес
  8. Викигидадрес

Выделить IRC и найти в:

  1. Вокруг света адрес
  2. Академик адрес
  3. Астронет адрес
  4. Элементы адрес
  5. Научная Россия адрес
  6. Кругосвет адрес
  7. Научная Сеть
  8. Традицияадрес
  9. Циклопедияадрес
  10. Викизнаниеадрес
  1. Google
  2. Bing
  3. Yahoo
  4. Яндекс
  5. Mail.ru
  6. Рамблер
  7. Нигма.РФ
  8. Спутник
  9. Google Scholar
  10. Апорт
  11. Онлайн-переводчик
  12. Архив Интернета
  13. Научно-популярные фильмы на Яндексе
  14. Документальные фильмы
  1. Список ru-вики
  2. Вики-сайты на русском языке
  3. Список крупных русскоязычных википроектов
  4. Каталог wiki-сайтов
  5. Русскоязычные wiki-проекты
  6. Викизнание:Каталог wiki-сайтов
  7. Научно-популярные сайты в Интернете
  8. Лучшие научные сайты на нашем портале
  9. Лучшие научно-популярные сайты
  10. Каталог научно-познавательных сайтов
  11. НАУКА В РУНЕТЕ: каталог научных и научно-популярных сайтов

  • Страница 0 - краткая статья
  • Страница 1 - энциклопедическая статья
  • Разное - на страницах: 2 , 3 , 4 , 5
  • Прошу вносить вашу информацию в «IRC 1», чтобы сохранить ее

Комментарии читателей:[]

Advertisement