IRC

Эта статья — о протоколе прикладного уровня. Об IRC в Википедии см. Википедия:IRC. Другие значения термина «IRC» см. на странице IRC (значения).

IRC

Название |  Internet Relay Chat
Уровень (по модели OSI) |  Прикладной
Семейство |  TCP/IP
Создан в |  1988
Порт/ID |  194/TCP, 6667/TCP, 6697/TCP + TLS
Назначение протокола |  Доступ к чат-серверам
Спецификация |  RFC 1459, RFC 2810, RFC 2811, RFC 2812, RFC 2813
Основные реализации (клиенты) |  irssi, KVIrc, mIRC, X-Chat, WeeChat, Miranda IM, x3irc, Pidgin
Основные реализации (серверы) |  UnrealIRCd, ircnet-ircd, hybrid-ircd, ircd-seven
Медиафайлы на Викискладе

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

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

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

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

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

## Содержание

* 1 История и спецификации
* 2 IRC-сеть
* 2.1 Пересылка сообщений в IRC-сети
* 2.2 Роли пользователей
* 3 Клиентские приложения для IRC-сетей
* 3.1 Настольные
* 3.2 Мобильные
* 4 Специфика русскоязычного IRC
* 4.1 История вопроса
* 4.2 Обычаи современных русскоязычных сетей
* 4.3 Ники
* 4.4 UTF-8 — за и против
* 5 См. также
* 6 Примечания
* 7 Ссылки

## История и спецификации

[править | править код]

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 позволяет общаться один на один и в группе. Для группового общения существует несколько возможностей. Пользователь может отправить сообщение списку пользователей, при этом серверу отправляется список, сервер выделяет из него отдельных пользователей и отправляет копию сообщения каждому из них. Иной способ - каналы, когда сообщение отправляется серверу, а сервер отправляет его всем пользователям в канале. В обоих случаях сообщения отправляются по кратчайшему пути и видимы отправителю, получателю и входящим в кратчайший путь серверам. Кроме того, возможна отправка широковещательного сообщения. Сообщения клиентов, касающиеся изменения состояния сети (например, режима канала или статуса пользователя), должны отправляться всем серверам, входящим в сеть. Все сообщения, исходящие от сервера, также должны быть отправлены всем остальным серверам.

### Роли пользователей

[править | править код]

По отношению к серверу IRC-пользователи могут быть операторами сервера (англ. IRCops), канала (англ. chanops) и обычными пользователями[2].

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

[править | править код]

См. также: Список IRC-клиентов и Список IRC-сервисов

Скриншот общения в IRC-клиенте WeeChat

Программы, позволяющие подключаться к сетям, работающим по протоколу IRC.

### Настольные

[править | править код]

Windows:

mIRC, Miranda IM, Trillian, Pidgin (2022), KVIrc (2019), XChat (2010).

Unix и Linux:

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

Polaris, macOS:

Textual, Snak, Ircle, Adium, Colloquy, KVIrc, LimeChat, IRCCloud

AmigaOS:

AmIRC, AIRcOS, WookieChat, BenderIRC, BitchX, BlackIRC

### Мобильные

[править | править код]

Android:

AndroIrc, IRC for Android, Andchat, DaraIRC, fIRC chat, IRC radio, Yaaic, AiCiA, Droid-Life IRC, IRCCloud

Web: IRCCloud, Mibbit

MIDP:

JmIrc

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

[править | править код]

В разделе не хватает ссылок на источники (см. рекомендации по поиску).

Информация должна быть проверяема, иначе она может быть удалена. Вы можете отредактировать статью, добавив ссылки на авторитетные источники в виде сносок. (11 мая 2011)

|

Использование русского языка в IRC не опирается ни на какой стандарт.

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

### История вопроса

[править | править код]

Общение на русском языке начало вестись ещё в 1990-х годах в международных сетях, таких как DALnet[англ.] и IRCnet[англ.]. Первоначально, под влиянием UNIX-культуры, было принято кодировать буквы русского алфавита в KOI8-R. Примерно с 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-клиентов
* Баунсер
* Веб-чат
* Instant Messenger

## Примечания

[править | править код]

1. ↑ Логи на сайте ibiblio.org  (неопр.). Дата обращения: 29 августа 2006. Архивировано 2 февраля 2012 года.
2. ↑ Hossein Bidgoli. The Internet Encyclopedia, A–O (неопр.). — John Wiley & Sons, 2004. — Т. 2. — С. 314—. — ISBN 978-0-471-68996-6. Архивировано 30 мая 2022 года.

## Ссылки

[править | править код]

* irchelp.org (англ.) — документация по IRC
* ircnet.ru — помощь и статьи об IRC
* rus-net.org — всё о русском IRC
* Статистическая информация по различным IRC-сетям (англ.)
* Статистическая информация по различным IRC-сетям (англ.)
* Юрий Меркулов. Путеводитель по IRC-клиентам  (неопр.). iXBT.com (18 июля 2006). Дата обращения: 25 апреля 2008. — Путеводитель по IRC-клиентам

В другом языковом разделе есть более полная статья Internet Relay Chat (англ.).

Вы можете помочь проекту, расширив текущую статью с помощью перевода

|

Internet Relay Chat

Основные понятия|

* Бот
* Канал[англ.]
* DoS-атака
* Оператор канала
* Клиент
* Флуд
* Hostmask[англ.]
* IRC
* Netsplit
* Оператор
* Скрипт[англ.]
* Сервер
* Сервисы
* vhost[англ.]

Списки и сравнения|

* Список IRC-команд
* Список IRC-клиентов
* Сравнение IRC-клиентов

Связанные протоколы|

* IRC
* IRCX[англ.]
* MSN Chat
* P10[англ.]
* CTCP
* DCC
* XDCC
* Ident

Боты|

* Eggdrop
* Infobot[англ.]
* Mozbot

IRC-демоны|

* IRCd
* ircu[англ.]
* UnrealIRCd[англ.]
* Charybdis
* DreamForge

IRC-сервисы|

* Anope

Баунсеры и прокси|

* BitlBee
* ZNC[англ.]
* Quassel IRC

Сети|

* DALnet[англ.]
* EFnet[англ.]
* freenode
* GameSurge[англ.]
* IRC@2ch
* IRCnet[англ.]
* OFTC[англ.]
* QuakeNet[англ.]
* Rizon[англ.]
* RusNet
* SlashNET[англ.]
* Undernet

Распространённые IRC-клиенты

Графические|

* ChatZilla
* KVIrc
* Mibbit
* Miranda IM
* mIRC
* Opera
* Pidgin
* XChat
* Konversation
* Quassel IRC

Консольные|

* BitchX
* ircII
* irssi
* WeeChat

Мобильные|

* JmIrc

* Список IRC-клиентов
* Сравнение IRC-клиентов

Основные протоколы TCP/IP по уровням модели OSI

Физический|

* Ethernet
* RS-232
* EIA-422
* RS-449
* RS-485

Канальный|

* Ethernet
* PPPoE
* PPP
* L2F
* 802.11 Wi-Fi
* 802.16 WiMax
* Token Ring
* ARCNET
* FDDI
* HDLC
* SLIP
* ATM
* CAN
* DTM
* X.25
* Frame Relay
* IEEE 802.1aq
* SMDS
* STP
* ERPS
* ARP

Сетевой|

* IPv4
* IPv6
* IPsec
* ICMP
* IGMP
* RARP
* RIP2
* OSPF
* EIGRP
* GRE
* IPX

Транспортный|

* TCP (Crypt)
* UDP (QUIC)
* SCTP
* DCCP
* RDP/RUDP
* RTP
* SPX
* TLS 1.3

Сеансовый|

* ADSP
* H.245
* iSNS
* NetBIOS
* PAP
* RPC
* L2TP
* PPTP
* RTCP
* SMPP
* SCP
* ZIP
* SDP

Представления|

* XDR
* SSL
* TLS

Прикладной|

* BGP
* HTTP(S)
* DHCP
* IRC
* Gopher
* Finger
* SNMP
* DNS(SEC)
* NNTP
* XMPP
* SIP
* IPP
* NTP
* SNTP
* Электронная почта
* SMTP
* POP3
* IMAP4
* Передача файлов
* FTP
* TFTP
* SFTP
* FTPS
* WebDAV
* SMB
* Удалённый доступ
* rlogin
* Telnet
* SSH
* RDP

Другие прикладные|

* Bitcoin
* OSCAR
* MTProto
* Multicast FTP
* Multisource FTP
* BitTorrent
* Gnutella
* Skype

Список портов TCP и UDP

Схемы URI

Официальные|

* aaa
* aaas
* about
* acap
* cap
* cid
* crid
* data
* dav
* dict
* dns
* fax
* file
* ftp
* geo
* go
* gopher
* h323
* http
* https
* im
* imap
* iri
* ldap
* mailto
* mid
* news
* nfs
* nntp
* pop
* pres
* rtsp
* sip
* sips
* snmp
* tel
* telnet
* urn
* url
* view-source
* wais
* xmpp

Неофициальные|

* aim
* bolo
* btc
* bzr
* callto
* chrome
* cvs
* cs2d
* daap
* ed2k
* ed2kftp
* feed
* fish
* git
* gizmoproject
* iax2
* irc
* ircs
* itms
* lastfm
* ldaps
* magnet
* mms
* msnim
* psyc
* rsync
* secondlife
* skype
* ssh
* svn
* sftp
* smb
* sms
* soldat
* steam
* tg
* webcal
* xfire
* ymsgr

Компьютерно-опосредованная коммуникация

* Чат
* Программное обеспечение совместной работы
* Социальная сеть

Асинхронная конференция|

* Электронная почта
* Список рассылки[англ.]
* Фидонет
* Usenet
* Веб-форум
* Текстовая доска[англ.]
* Имиджборд
* Shoutbox[англ.]
* BBS
* Онлайн гостевая книга[англ.]

Синхронная конференция|

* Система мгновенного обмена сообщениями
* IRC
* LAN messenger
* Talker[англ.]
* Видеотелефония
* IP-телефония
* Веб-конференция

Публикации|

* Блог
* Микроблогинг
* Вики