Новости

Обновление исправляет совместимость с Freenode после обновления этой сетью версии IRCd.

Вышел второй релиз-кандидат KVIrc 4.0

Ричард Столлман дал автограф проекту и пожелал успеха в разработке.

Image:Feed.png RSS
Главная страница >

Vypress Chat посвящается

Материал из IRC клиент KVIrc.

Перейти к: навигация, поиск

О чем это мы?

Как человек, занимающийся разработкой IRC клиента, я не могу не интересоваться другими технологиями интернет-общения. Особенно, если они тесно связаны с IRC. И вот, посчастливилось мне узнать от пользователей о такой «замечательной» программе как Vypress Chat. По-началу ничего не предвещало бури :) Прога себе как прога, люди пользуются, им нравится и все казалось бы хорошо. Но угораздило меня попасть на их официальный сайт. Дальнейшие эмоции сдержать было трудно, и они вылились в эту статью. Далее в ней по большей части пойдет обсуждение статьи о сравнении решений на базе Vypress Chat и IRC. Статья расположена по этому адресу. Надеюсь, другие пользователи воспользуются возможностями Wiki и дополнят эту статью.

Итак, начнем.

Критика Что же такое IRC?

С первыми предложениями, которые говорит сайт Vypress Chat, я согласен. Действительно, «Протокол IRC (Internet Relay Chat) входит в стандартный набор Интернет-протоколов. Он был разработан в далеком, 1989 году (опубликован как RFC четыре года спустя), именно как средство связи нескольких чат-серверов работающих в разных сегментах Интернета. Основное его достоинство — это, несомненно, возможность связывать между собой несколько территориально разрозненных серверов.» Далее же утверждается, что поэтому протокол IRC избыточен. Для тех, кто не хочет читать спецификацию протокола IRC, кратко расскажу некоторые сведения, показывающие несостоятельность фразы на сайте Vypress Chat.

Отправка сообщения в IRC на уровне протокола выглядит следующим образом:

PRIVMSG АДРЕСАТ :текст сообщения

Здесь АДРЕСАТ может быть именем канала или ника. думаю, не нужно здесь говорить что сообщение нельзя передать, не передавая текста, потому текст за двоеточием не может быть избыточным. Поле АДРЕСАТ также не может создавать избыточности (ну как-то же надо указывать кому ты говоришь). Значит «избыточными» являются 7 байт префикса PRIVMSG. А теперь вдумайтесь поглубже, можно ли этот префикс называть избыточностью? В таком случае избыточным можно назвать, например протокол HTTP (а нафиг нужны всякие cookies, запросы?).

Теперь подробней рассмотрем пути прохождения пакетов и их объем на сетевом уровне. Именно в этой части IRC обвиняют в черезмерной избыточности.

Схема прохождения пакетов при IRC соединении Схема похождения пакетов при Vypress соединении
Изображение:Irc-packet-route.png Изображение:Vypress-packet-route.png
На рисунке в центре указан свитч, рассмотрим маршрут.


- Пакет отпарвляется клиентом на свитч (синяя стрелка)
- Из свитча он направляется на сервер (вторая синяя стрелка)
- На сервере создается пакет для каждого другого клиента и все они отправляются на свитч (красная стрелка)


- Свитч рассылает пришедшие с сервера пакеты по одному каждому клиенту
- Пакет отправляется клиентом на свитч
- Свитч дублирует этот пакет каждому из клиентов (да-да, это не ошибка, каждый клиент получит по КОПИИ Multicast пакета). Причем в случае широковещательного пакета даже отключенные клиенты получат по копии. Даже если ни один из компьютеров не содит в Vypress chat'e, все они получат это сообщение когда хоть кто-нибудь запустит чат.

Здесь видно что количество данных, передаваемых на связке клиент <-> свитч одинаково как в случае IRC соединения, так и в случае Vypress соединения. Избыточность создается при использовании IRC сервера только на связке сервер <-> свитч. Практика показывает, что IRC серверами генерируется траффик от 15 мб (при 10-15 клиентах в день) до 300 мб (при 100-200) в сутки. Много это или мало? В условиях современного рынка гигабитная сетевая карта дешева (если у вас сидит в чате 200 человек, то не говорите что вам жалко скинутся по 2 рубля на сетевую карту). Даже многие новые материнские платы идут в поставке с ними. При использовании гигабитного канала сервер <-> свитч эти объемы траффика будут незаметны. Но и при использовании 100mbit соединения вы не увидете этих 15-100 мегабайт.

Однако, вы скажете «зачем мне вообще эта избыточность?». Ответ будет прост: IRC сервер использует протокол TCP с гарантированной доставкой, контролем состояния соединения. Все нагрузки испытывает только сервер. Клиенты получают стабильное надежное соединение.

Не стоит забывать и о избыточности протокола Vypress. Хотя это и избыточность другого рода. Когда, например новый пользователь входит в сеть, он отправляет каждому компьютеру (включая те, которые не сидят в чате) сети сообщение типа «ты тут?», и получает от них реплику «да, тут», или просто игнорирование сообщения если компьютер не в чате. На IRC сервере пользователь при входе на канал просто получает сообщение вида

rinet.msk.wenet.ru 353 Alexey = #kvirc :Alexey kintup aden Atom|NotHere smartly

+caro caBeHoK[aWay] Tor[absent] +KVirc

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

Да, избыточность протокола Vypress не создает гигабайты лишнего траффика. Но все дополнительные нагрузки приходятся на связку клиент <-> свитч, а не сервер <-> свитч. И при использовании потокола UDP, и даже его еще менее надежной версии UDP Multicast не гарантировано, что отправленное вами сообщение получат все адресаты, или получит его кто-нибудь вообще. На доставку сообщения могут повлиять любые внешние факторы, создающие помехи на линии. TCP соединения этому не подвержены. Именно поэтому в данный момент UDP соединения почти не используются.

Понравилась идея, высказанная авторами Vypress Chat поискать в Google эксплоиты для IRC. А они сами, интересно, пробовали это сделать или сказали для красного словца? У меня есть младший брат, который иногда, пытаясь доказать что-то, говорит «да не вру я, хочешь тому-то позвони». Рассчитывает, что, мол, звонить-то лень будет. А теперь пройдите по двум предлагаемым в статье ссылкам на Google и найдите обещанные эксплоты, которые бы работали сейчас, а не 5 лет назад. Нет, не говорите «вон он!». Вы попробуйте. Попробуйте сами проснифферить или сломать, а потом что-то утверждайте.

- IRC exploit - IRC sniffing

А фраза «Вопреки расхожему заблуждению, протокол IRC не имеет никаких встроенных средств защиты данных, таких как шифрация или криптографически надежная аутентификация, таким образом, все передаваемые в пределах локальной сети разговоры и данные, могут быть легко перехвачены любым анализатором сетевого трафика.» вообще поражает своей наглостью. Авторы, видимо, первый раз слышат об SSL. Что ж, мне жалко их, потому что эта технология действует в сфере IRC уже далеко не первый год.

И, напоследок, очень хочется заметить гениальную мысль авторов о «древности» протокола IRC. Не хочется их огорчать, но протоколы HTTP, FTP, TCP/IP ничуть не менее древние. Так зачем же они их используют, если им хочется нового. Может, все-таки, когда старое проверено временем и 100% работает, это не так уж и плохо? Таблица сравнения

О, это шедевр :) Даже комментировать не знаю как… Ниже приводится исправленная таблица. В качестве примера IRC-клиента выбран KVIrc. Изменения и комментарии выделены курсивом.

Vypress Chat KVIrc
Дата разработки сетевого протокола 1997 г. (версия 1.9 — 2003 г.) 1989 г. (последний IETF draft — 2000 г.)
Сервер платный? Нет (сервер не нужен) Для Windows платформы платный бесплатный (я понимаю, что если хочется платить, то можно и за воздух заплатить, но зачем?), для бесплатных версий UNIX — бесплатный
Клиент платный? Да – от $12 (за самую урезанную версию) и ниже (клоны для бесплатных UNIX — бесплатные) (при этом они написаны достаточно давно сторонними разработчиками и оставляют желать лучшего) Да – от $30 долларов Нет, бесплатный (KVIrc, X-Chat, irssi и другие)
Максимальное количество поддерживаемых клиентов Оптимально – не более 1000100-300 (почему-то на главной странице написано что до 300, хотя факты показывают что уже при 200 клиентах сеть становится неработоспособна) Не ограничено
Поддержка Unicode Есть Нет Есть (вы, наверно, с программами 5-летней давности сравниваете?)
Максимальная длина псевдонима пользователя 35 символов 9 символов 30 и более символов (когда в 1989 году изобретали, было действительно 9)
Максимальная длина сообщения в чате 960 Unicode символов 512 ASCII (или Unicode) символов
Сложность настройки для конечного пользователя Минимальна, работает сразу после установки Максимальна (попробуйте!) Попробовал, легко :)
Usability (удобство пользовательского интерфейса) Очень удобно Программа для настоящих профессионалов борьбы с компьютером Очень удобно. Воздержусь от комментариев, а то как бы не сматериться по поводу такого грязного камня в сторону IRC :)
Vypress Chat KVIrc
Шифрация трафика Нет Нет Да - SSL + поддержка криптования (до 9 различных криптовальных машин)
Избыточность протокола Нет ??? Да Нет (прочитайте статью сначала, если не согласны)
Сложность перехвата сообщений Средняя — сообщения передаются напрямую, по нестандартному протоколу (нестандартные протоколы - лакомый косок для сниффера!) Низкая — протокол полностью описан, существуют готовые средства Высокая, при SSL невозможно.
Поддержка IPv6 Да Нет Да
Централизованная настройка клиентов Да Нет, и мы гордимся свободой каждого настраивать свой клиент по-своему, а не как сказал админ
Ориентация на использование в локальных сетях Да Нет Решение универсально
Presence control (контроль реальной активности пользователя) Да Нет Да, используйте соответствующие сервисы
Flood control (контроль вредительской активности пользователя) Да Да
Поддержка макросов Да Да, и не только макросов, но и нормальных языков программирования
Работа в многосегментных сетях Да (по IP Multicast) Да (по TCP)
Network Congestion (подверженность сетевым проблемам) Минимальная, P2P архитектура (???). Нигде не подтверждается, а на сторонних сайтах опровергается Максимальная (см. секцию 6.3 в <a href="http://www.ietf.org/rfc/rfc2810.txt" class="external" title="http://www.ietf.org/rfc/rfc2810.txt">RFC 2810</a>) Низкая. Посмотрел. Что дальше? :)

Надеюсь, читатель оценил количество и качество сделанных исправлений в таблицах. Позволю себе оставить это без комментариев. Сетевой трафик

Цитата: «Еще одно распространенное обвинение в адрес Vypress Chat — это то, что он использует слишком много сетевого трафика и создает в сети так называемый broadcast storm (переполнение сетевого трафика широковещательными пакетами). IRC же, в силу того, что этот протокол вообще-то предназначен для Интернета, а не для локальных сетей, вообще не использует широковещательных пакетов, а потому, по мнению противников нашего чата, он гораздо лучше. Давайте разберемся.»

Да, действительно broadcast storm («цепное» нарастание сетевых пакетов) Vypress не создает. Но широковещательные сообщения используются. Вот что говорят по этому поводу авторы: «работая с использованием широковещательных пакетов, чат использует их в исключительных ситуациях, только тогда, когда это самое оптимальное решение — при отправке данных для всех (строки в чат и смене состояния)».

А теперь вернемся к нашей локалке из 300 компьютеров, из которых теперь уже, например, 100 используют вайпресс. Допустим, каждый из 10 печатает со скоростью 150 символов в минуту (ну средняя такая скорость набора). Значит, в сумме они печатают 15000 символов в минуту (≈15 килобайт). Значит каждый из 200, не участвующих в Vypress диалоге, будет получать по 15Кб только сообщений в минуту. Прибавим к ним примерно 5кБ служебных данных и получим около 20 килобайт. Казалось бы, немного. Но этот трафик всегда присутствует в сети. Более того, его можно отснифферить и увидеть человеку, не подключенному к чату, то, о чем они там говорят. Вам очень приятно общаться когда вас слушает кто угодно?

К тому же, не забывайте, что UDP Multicast пакет не имеет гарантированной доставки. То есть вас не просто слушает кто угодно, а еще и не гарантировано что ваш прямой собеседник получит предназначающееся ему сообщение. Почему запрещают использовать Vypress

По мнению авторов это

1. Vypress Chat работает по протоколу UDP, и раньше выявляет все проблемы сетевого уровня

2. В Vypress Chat нет начальников

3. В IRC легче за всеми следить

И поясняем:

1. Правда. Но если сделать сеть без глюков, то в какую цену она вам обойдется? Вы можете, конечно, протянуть оптоволокно и отличная работа UDP вам гарантирована. Но готовы ли вы за это отдать парочку-тройку своих зарплат? Стоит ли беспроблемное общение в чате таких денег?

2. Тоже правда. Именно поэтому на любой канал может зайти малолетний подросток и всех обложить матом с ног до головы. Приятно?

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

Вопрос о целях

На самом деле вопрос о целях это, пожалуй самый важный вопрос при выборе многих вещей. Начиная от коробки спичек и заканчивая автомобилем. Я не хочу сказать «Vypress это плохо, давайте все использовать IRC». Это было бы просто глупо. Мне тогда могут ответить «а зачем нам сервер, если у нас в сети 4 компьютера?». И они будут правы. Кому нужен Vypress?

Представим ситуацию. Живете вы на оной лестничной клетке со своим другом. И надоело вам ходить каждый раз в соседнюю квартиру чтобы взять фильм. Купили 30 метров витой пары, 2 сетевые карточки и сделали локалку. Потом появился новый сосед, купили свич, сделали локалку на троих. И так набралось у вас человек 10-20. Замечательно. Неплохо бы устроить в нашей локалке чат. И если вы выберете технологию клиент-сервер, то вам придется купить сервер. Хиленький, но сервер. И он будет у кого-то жужжать под столом круглосуточно и мешать спать. Зачем вам это? Лучшим выходом будет использование решений от авторов Vypress Chat. С этим я полностью согласен и спорить, конечно, не буду.

Нет, протокол Vypress Chat не менее «технологичен» (что с пеной у рта доказывают его авторы). Интересно, как бы они вообще обозначили его «технологичность», и смысл доказывать что-то? Пользователю не имеет значения как оно работает, ему важно, что работает, и с маленькой локалкой Vypress справляется. Но с большой, увы, нет. Авторам Vypress неплохо бы просто признать этот факт.

Кому нужно IRC?

Допустим, ваша локалка разрослась до 100 компьютеров. Наверняка у вас уже есть файловый сервер. Так почему бы не установить на нем и сервер для IRC? Он не будет использовать много системных ресурсов, но избавит вашу сеть от постоянных глюков и падений. С IRC сервером вы сможете подключиться и к другой локальной сети, дав людям бОльшую свободу общения.

IRC протокол проверен временем и работает. Сейчас альтернативой ему является Jabber сервер (обратите внимание, клиент-сервер), но по сервисам для общения комнатами Jabber пока далеко стоит от IRC. Так что, используйте то, что вам нужно. Ищите оптимальное решение. А я лишь пытался сказать как оно есть. Что двигало авторами статьи на сайте Vypress понятно: их программа платна и они заинтересованы в продажах. Допустим, локальная сеть на 100 человек, их программа стоит 20$, вот вам уже 2000$. Авторы этой статьи денег на своих программах не зарабатывают. И скрывать нам что-то от вас просто нет смысла. А это само прибавилось:)

P.S.: У них безбожно глючит сайт? Может они все-таки скинутся на нормальный хостинг?

P.P.S: А еще моя любимая Opera некоторых версий у них на сайте вешается:(

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

Устанавливаем IRC в локальной сети

Сравнение KVirc с mIRC и XChat

Возможности KVirc

Спецификация IRC протокола (rfc1459) на русском языке

IRC в русском интернете: признак цивилизации или дикости?

Личные инструменты
Инструменты
Наши кнопки
Размести кнопку KVirc у себя на сайте:
www.kvirc.ru - кроссплатформенный IRC клиент с богатым графическим интерфейсом и внутренним языком скриптинга
Друзья и спонсоры
  • Fireforge.net
Linux coutner