Сейчас абсолютно никого не удивишь управлением фирмой через Интернет, когда руководство находится в одной стране, сотрудники - в другой, а заказчики - в третьей. Многие минские фирмы для срочных коммуникаций используют интернет-пейджер ICQ. Однако задолго до его появления существовал еще один способ общения в режиме реального времени - IRC (Internet Relay Chat).
Первая реализация IRC была написана Jarkko Oikarinen в 1988 году в Финляндии как замена программе talk - любой, кто работал с unix'ами и linux'ами, меня поймет. IRC - это многопользовательская система чата, в которой можно общаться как в группах (channels - виртуальное место, обычно с определенной темой для общения), так и один на один. Для общения в IRC можно использовать и специально предназначенную для этого программу (наиболее популярными являются mIRC и Pirch), и обычный telnet.
Меня затронуть этот вопрос подвиг выход в свет новых RFC - возможного будущего IRC.
Однако для более полного понимания IRC необходимо рассмотреть, какие изменения были внесены, и поэтому я обратился к первой попытке его стандартизировать - RFC 1459.
Request for Comments: 1459
Internet Relay Chat Protocol
D. Reed and J. Oikarinen
May 1993
Status: Experimental Protocol
Этот документ послужил основой для многочисленных публикаций на тему "Как воспользоваться IRC, не имея специального IRC-клиента?". Как правило, все сводилось к использованию telnet'а или netcat'а, хотя можно использовать любую программу, способную работать с сокетами. Это стало возможным благодаря тому, что IRC - это протокол, основанный на использовании чистого текста (text-based protocol). Сама концепция IRC предполагает три вида взаимодействия - каждый к каждому (one-to-one), один ко многим (one-to-many) и один ко всем (one-to-all). В свою очередь, эти взаимодействия подразделяются на более мелкие: один ко многим - к списку (to a list), к группе (to a group (channel)), по маске (to a host/server mask); один ко всем - Client-to-Client, Client-to-Server и Server-to- Server. RFC 1459 устанавливает несколько ограничений на название группы (канала): в названии не может содержаться символов пробела, ^G (ASCII 7) и "," (используется как разделитель в списке), плюс к этому перед названием должен стоять префикс канала. Предусматривается два префикса канала: & и #. Далее RFC описывает те команды, которые должны быть реализованы в IRC- сервере и IRC-клиентах для взаимодействия. Т.к. основные можно узнать и без чтения RFC, просто заглянув в хэлп, то перечислю те, которыми пользуются далеко не многие (или попросту не умеют пользоваться) и/или которые в хэлпе найти нельзя, а между тем они могут быть весьма полезны: STATS, NOTIFY, NOTICE, ISON, USERHOST, MOTD, ADMIN, INFO, LIST. В своем большинстве современные IRC-сети основаны именно на данной RFC, хотя, разумеется, есть и некоторые отступления (в основном незначительные). Данный документ следует прочитать всякому, кто хочет написать свой собственный сервер для чата - как во избежание многих будущих проблем с безопасностью, так и в смысле удобства в использовании.
Request for Comments: 2810
Internet Relay Chat: Architecture
C. Kalt
April 2000
Updates: 1459
Category: Informational
Первая часть дополнений к RFC 1459. Что изменилось? Во- первых, формулировки стали более "жесткими" - сразу указывается, что можно, а чего быть не должно (стало очень похоже на четкие инструкции). Во-вторых, обозначены текущие проблемы IRC (в данном документе речь идет только об архитектуре самого протокола): расширяемость и надежность, перегруженность сетей передачи данных и пр. Переработаны и дополнены многие понятия - в общем-то, как и во всяком дополнении к теоретической работе.
Request for Comments: 2811
Internet Relay Chat: Channel Management
C. Kalt
April 2000
Updates: 1459
Category: Informational
Вторая часть теоретической доработки RFC 1459. В целом это попытка структурировать IRC, однако есть и некоторые дополнения. В качестве примера могу привести появление нового вида каналов - "safe channels", - для входа на них требуется специальная команда, причем пользователь при создании канала выбирает лишь часть названия канала (short name), а затем сервер дополняет это название еще пятью символами, в результате чего получается уникальное название канала. Зачем это надо? В общем-то, по мнению разработчиков, это должно предотвратить проблемы, возникающие при разрывах связи между серверами (network splits). Теперь предусмотрены 4 префикса каналов: &, #, +,! (на практике я еще не видел серверов, которые бы их использовали). Кроме того, как и следовало ожидать, добавились различные установки каналов (channel flags): Anonymous flag, Quiet flag и Server Reop flag, причем для каналов с разными префиксами есть свои особенности для каждого флага: на некоторых определенные флаги можно устанавливать, на некоторых нельзя - никаких четких правил, из которых можно было бы увидеть логику, я не нашел - запутаться можно элементарно (IMHO). Введены некоторые изменения в применение банов (ban) + введены исключения (exception). Насколько нововведения эффективны, покажет время.
Request for Comments: 2812
Internet Relay Chat: Client Protocol
C. Kalt
April 2000
Updates: 1459
Category: Informational
Самый интересный, на мой взгляд, документ. В нем как раз и содержится вся необходимая информация для написания собственных клиентов (в том числе и ботов (bots)).
Из внесенных изменений хотелось бы отметить изменение в командах и переработку синтаксиса.
Пример: команда STATS - по RFC 1459 она имела кучу параметров, в полезности нескольких из них я сильно сомневался (m, o и k - раздел 4.3.2 в RFC 1459 , если кому интересно). В данном дополнении все стало на свои места, и остались лишь действительно нужные параметры (опять же на мой взгляд). Кроме того, теперь команда JOIN с параметром 0 (ноль) позволяет покинуть сразу все каналы.
Наконец-то появилось ограничение на максимальную длину сообщения - 510 байт + CR+ LF = 512 байт;)
Описано использование выражений с wildcard - перевести на русский не возьмусь, не звучит. Символы {}|^ были приравнены к заглавным от []~ - уж не знаю, как это будет воплощаться в сетях типа DALnet'а. Ну и в конце RFC можно найти все возможные reply, посылаемые серверами, и их синтаксис.
Request for Comments: 2813
Internet Relay Chat: Server Protocol
C. Kalt
April 2000
Updates: 1459
Category: Informational
Последнее из дополнений к RFC 1459 - здесь можно найти практически все сведения, нужные для написания своего собственного IRC-сервера и дальнейшего внедрения его в сеть. Если вы способны это сделать, то обратите внимание на данный документ, но с оговоркой, что это еще не стандарт. Изменения/дополнения: предусматривается возможность передачи сжатых данных (compressed server to server links) - на мой взгляд, действительно важное нововведение, которое следовало бы ввести значительно раньше. Несколько изменений в командах и много-много дополнений в определениях. В общем-то, как и предполагалось.
Обобщение: все документы (RFC 2810-2813 ) есть не что иное, как попытка доработать IRC. Что сделано хорошо: появилось несколько действительно стоящих дополнений. Кроме того, строгость определений несколько приближает данные документы к тому этапу, когда можно говорить о стандарте. Что плохо: многие изменения носят так называемый "рабочий" характер - еще не известно, приживутся ли. Много информации (где-то треть) в каждом документе пересекается с остальными - на мой взгляд, необходимо все свести в один документ.
Итого: работы еще предстоит куча.
Обзор RFC: попытка взглянуть на будущее IRC
Страница: 1
Сообщений 1 страница 1 из 1
Поделиться119-10-2010 09:06
Страница: 1