Чат — основная форма общения в современном мире. Даже с близкими людьми мы можем общаться в мессенджерах чаще, чем разговаривать вживую. Подавляющее большинство популярных решений являются централизованными и проприетарными, то есть они управляются узким кругом лиц, а большинство их внутренних процессов абсолютно неподвластно конечному пользователю. Существуют и свободные проекты, например, XMPP (Jabber), Matrix, ActivityPub и еще немалое количество менее популярных проектов и протоколов.
Свободные проекты отличаются полной открытостью исходного кода клиентской и серверной частей — любой желающий может развернуть полноценную экосистему на своих мощностях без какой-либо зависимости от основных разработчиков. Человек с навыками программирования может провести аудит исходного кода, чтобы оценить уровень безопасности, а также самостоятельно изменить любую часть программы, или вовсе написать свой клиент под нужный протокол.
![](https://habrastorage.org/getpro/habr/upload_files/73c/253/8a1/73c2538a1e6c2d49222a2dc7b65f6d2b.png)
Время рождения протокола "ирки", "ирц", или IRC — всё одно — хорошо ощущается по одному факту: у IRC нет официального логотипа. Видимо, в конце 80-ых уделяли мало внимания красивой обложке программного обеспечения. Несмотря на это, IRC — настоящий титан своей ниши среди современников того времени: синхронизированная работа нескольких серверов в рамках одной IRC-сети, различные роли пользователей (операторы, администраторы, несколько категорий доступа для рядовых юзеров), групповые чаты, личные сообщения, простота разработки ботов, крайне низкое потребление системных ресурсов сервера.
Эта статья посвящается протоколу IRC (Internet Relay Chat), который старше многих читателей. IRC берет свое начало в 1988 году и законно является первым массовым стандартизированным мессенджером! Архитектурно он считается устаревшим, но предлагаю взглянуть на него с другой стороны — это самый минималистичный из массовых протоколов общения!
К слову, электронная почта также является безнадежно устаревшей, но благодаря открытости протокола мы по сей день имеем тысячи независимых серверов и миллионы пользователей, которые регулярно проверяют свой почтовый ящик. Пока господа капиталисты тянут одеяло каждый на себя, стараясь закабалить пользователей в своих ламповых социальных сетях, абстрагируясь от остального мира, свободные массовые протоколы уверенно удерживают нишу всемирного взаимодействия. Те же Apple и Microsoft мирятся с потребностью уникального инструмента и предоставляют пользователям свои сервера электронной почты. Уместно вспомнить и Вконтакте, который в 2021 году вдруг начал рекламировать свою электронную почту.
Незаметно для себя, мы привыкли к СМС-подтверждениям регистрации и повсеместную привязку аккаунтов к номеру телефона (считайте, что к паспортным данным). Мессенджер, который вовсе может работать без регистрации — из области фантастики! Вразрез современным настроениям, протокол IRC позволяет войти в общий чат или использовать личные сообщения без какой-либо регистрации: ни пароля, ни логина, только никнейм и — добро пожаловать.
IRC настолько анархистско-минималистичный, что им можно пользоваться без клиентов, а для написания бота не потребуется никакого API. Подключиться к серверу и написать пару ласковых слов можно при наличии утилиты вроде telnet или netcat, которые позволят писать напрямую в сокет IRC-сервера.
Пример подключения через telnet
![](https://habrastorage.org/getpro/habr/upload_files/24b/f9b/280/24bf9b28028ce6d6f162c47b6c7c6722.jpg)
Для практического использования такой подход не пойдет, потому что в глаза бросается большое количество служебной информации, а также регулярный ответ на пинги от сервера сильно отвлекает (при пропущенном пинге происходит принудительное отключение по таймауту).
Благодаря возрасту протокола, сегодня доступно большое количество различных клиентов, обеспечивающих комфортное использование IRC. Самые популярные: HexChat, Quassel IRC, Konversation и Kvirk, также существует много симпатичных клиентов под смартфоны (в этом опыт небольшой, могу посоветовать только Revolution). В век JavaScript и повсеместного использования веб-браузеров нельзя обойтись без веб-клиента, самые видные из которых: The Lounge, KiwiIRC и qwebirc. Особым спросом пользуется консольный клиент без графической оболочки WeeChat.
Я младше протокола, но каждый день с удовольствием его использую. И мог бы решить, что рехнулся, но посмотрите: масса современных клиентов поддерживаются по сей день. Это означает, что IRC кому-то нужен.
Не будем сильно вдаваться в ретроспективу и перечислять возможные компьютеризированные сферы общества девяностых и начала нулевых, где использовался IRC — он использовался везде ввиду отсутствия аналогов. Главный вопрос: где IRC используется сегодня.
При вынашивании темы, я планировал рассказать о IRC в качестве чата в корпоративной сети, который прост в использовании и администрировании. Однако, сегодня ассортимент чатов для офисов так велик, что тратить время рассказами про офисный IRC в 2021 году — пустая трата времени.
Реально "иркой" пользуются люди, которые начали делать это еще во времена ее популярности — отсюда большая распространенность IRC среди бывалых программистов. Наверняка каждый встречал где-либо упоминание freenode (или libera chat), а также поддомены irc.
у самых разных ай-ти проектов (в большей степени у свободных, которые нуждаются в активном общении внутри сообщества). Было бы упущением не упомянуть RusNet — самую крупную русскоязычную IRC-сеть общей тематики.
Если обратить внимание на то, какие средства общения популярны в скрытых сетях, в частности, в I2P, можно удивиться — за мелкими исключениями IRC до сих пор является монополистом. С одной стороны объяснение простое: скрытыми сетями пользуется та же горстка гиков, что и другими IRC-серверами, но давайте взглянем на это под другим углом...
Регистрация практически в любой современной социальной сети, почтовом сервисе или мессенджере подразумевает получение кода подтверждения через СМС. Когда-то это вызывало много возмущений, но теперь даже нахваленные Signal и Telegram привязываются к номеру телефона. Я не понимаю о какой приватности может идти речь, когда аккаунт ассоциирован с моими паспортными данными. Даже если вы используете левые сим-карты для регистрации, сам факт того, что требуется сим-карта — тревожный звонок. Анекдот из жанра "1984", где было Министерство любви, занимающееся пытками: у нас повсеместно развернулись филиалы Министерства приватности.
Пользователи скрытых сетей уважают приватность в высшем ее проявлении, то есть заботятся о своей анонимности (рассуждения на эту тему "всё ли в даркнете — криминал" отражены в отдельной статье).
На контрасте с популряными мессенджерами, IRC заставляет задуматься над современными трендами: оправдывает ли защита от спама привязку каждого аккаунта к паспортным данным пользователя, более того, если сервис позиционирует себя ориентированным на приватность? Скрытые сети в этом вопросе выступают мерной линейкой, демонстрируя максимально возможную анонимность в общении.
Но не всё так радужно — есть и ложка дёгтя. Главным образом IRC потерял свою популярность из-за отсутствия оффлайн-сообщений. Мы привыкли заходить в любой мессенджер и получать сообщения, отправленные нам в период оффлайна, но в IRC не всё так просто для обычного пользователя. Протокол не предусматривает отправку сообщения пользователю, которого нет в сети в настоящий момент. Название Internet Relay Chat хорошо отображает суть — IRC является всего лишь релеем, транзитным звеном, а не сервером хранения сообщений.
Проблема с сообщениями решается элементарно — баунсером. Баунсер является прослойкой между пользователем и сервером. Он позволяет читать историю чатов и получать личные сообщения за период фактического отсутствия. Профиль пользователя имеет статус "в сети", когда пользователь подключен к баунсеру, либо висит в статусе "отошел", когда пользователь фактически отключен.
![](https://habrastorage.org/getpro/habr/upload_files/a62/a4d/443/a62a4d4434d4876666c1e29ec325a685.png)
На скриншоте приведен веб-интерфейс ZNC — наиболее популярного решения, которое устанавливается на любой VPS в пару команд. Баунсер ZNC является многопользовательским, то есть может обслуживать множество клиентов. При использовании баунсера, конечный пользователь для подключения использует не адрес IRC-сервера, а адрес ZNC, указывая регистрационные данные от аккаунта баунсера.
Для комфортного одновременного использования IRC с разных устройств (ПК, лэптоп, смартфон) можно использовать Quassel Core, который является аналогом ZNC, но ориентирован на повышенное качество синхронизации между устройствами пользователя (для подключения используется кроссплатформенный клиент Quassel Client).
Для создания публичного архива чатов попробуйте IRCaBot — легковесный логгер на C++ с функциональным веб-интерфейсом.
Вторая по важности проблема — отсутствие медиа: ни передачи файлов, ни красочных стикеров, ни видеоконференций. Стандартный размер сообщения IRC не превышает килобайта, поэтому бессмысленно даже пытаться передавать медиа-файлы внутри настоящих сообщений (клиент отправляет не более одного сообщения в секунду, поэтому с массовой отправкой мелких сообщений тоже не получится). Для передачи файлов предусмотрен протокол DCC (Direct client-to-client), который подразумевает прямое соединение пользователей. В большинстве случаев это невозможно из-за отсутствия прямой доступности пользователей относительно друг друга, либо из-за отсутствия поддержки протокола клиентским приложением одной из сторон. В конечном счете для передачи файлов чаще всего используют сторонние файлообменники. Если делать ремарку к скрытым сетям — отсутствие медиа вовсе можно считать плюсом, так как медиа-файлы — это дополнительные метаданные, гипотетически являющиеся утечкой чувствительных данных о пользователе.
Последний упрек общественности в адрес IRC — отсутствие шифрования. Это обвинение в сторону IRC столь же оправдано, как и в адрес большинства современных мессенджеров. Безопасность подключения к серверу давно решена использованием TLS (такое же шифрование используется при открытии сайтов по протоколу HTTPS), что защищает от перехвата и анализа трафика по пути следования от пользователя до сервера. В случае скрытых сетей никто не может прослушивать трафик априори, поэтому TLS-шифрование для IRC-серверов, например, в I2P, не требуется вовсе.
На стороне сервера все сообщения передаются (или хранятся) в открытом виде (также, как личные сообщения во Вконтакте, Facebook, Инстаграм и далее по списку). Это значит, что администратор может видеть содержимое передаваемых сообщений. Для решения данной проблемы существует несколько плагинов для сквозного шифрования от пользователя до пользователя: OTR (хорошо поддерживается в HexChat), Blowfish (тестировал в Quassel), а также другие подобные инструменты, которые можно найти через поисковые системы при соответствующем запросе. Если пользователи используют сквозное шифрование, на стороне сервера сообщения проходят в зашифрованном виде и угроза мониторинга сообщений снимается.
![](https://habrastorage.org/getpro/habr/upload_files/aed/af6/af5/aedaf6af598dfd56a37b15bcd6be113e.jpeg)
Если захотелось попробовать IRC, но не знаете куда зайти — заходите в ILITA IRC. ILITA — это сеть серверов, созданная в 2016 году (отсылка к элитарности является иронией). Ее главное отличие от остальных заключается в том, что связь между серверами сети осуществляется через I2P, что не позволяет серверам с разным уровнем анонимности друг друга скомпрометировать. Адреса для подключения можно найти на веб-страницах:
I2P:
http://irc.ilita.i2p/
Yggdrasil:
http://[324:71e:281a:9ed3::41]/
Tor:
http://ilitafrzzgxymv6umx2ux7kbz3imyeko6cnqkvy4nisjjj4qpqkrptid.onion/
По настроению ознакомьтесь с видео про IRC, в котором рассказываются общие факты и также упоминается ILITA IRC.