Введение
Протокол обмена мгновенными сообщениями AOL
Протокол TOC, или протокол Talk to OSCAR, использовался некоторыми сторонними клиентами AOL Instant Messenger и рядом клиентов, разработанных самой AOL. Примерно 19 августа 2005 года AOL прекратила поддержку этого протокола и больше не использует его ни в одном из активно поддерживаемых клиентов мгновенных сообщений, таких как клиенты для Windows и Mac для систем AOL Instant Messenger и ICQ. Однако ранее AOL выпустила несколько собственных TOC-клиентов, включая TiK и TAC, написанные на Tcl/Tk, TNT, написанный на Emacs Lisp, все из которых имеют открытый исходный код, а также Java-клиент, первоначально названный TIC, который впоследствии стал веб-апплетом Quick Buddy. AOL также открыто предоставила спецификацию протокола TOC разработчикам в надежде, что они предпочтут его проприетарному протоколу OSCAR, который используется самой AOL. В июле 2012 года AOL отключила серверы TOC2, и подключение к AIM с использованием этого протокола стало невозможным. TOC был протоколом на основе ASCII, в то время как OSCAR – двоичный. Кроме того, TOC обладал меньшим набором функций, чем OSCAR. OSCAR обеспечивает такие возможности, как значки контактов, передача файлов и показ рекламы.
Как это работает
TOC выступал в роли оболочки для протокола OSCAR. По сути, сервер TOC был ничем иным, как клиентом OSCAR, который случайно прослушивал сокет и транслировал сообщения между двумя протоколами. При входе в систему клиент TOC указывал сервер авторизации OSCAR (предположительно, один из двух), который сервер TOC использовал от имени клиента. TOC использовал FLAP для инкапсуляции своих сообщений, как и OSCAR, однако FLAP был модифицирован таким образом, что его можно было реализовать на том же порту, что и HTTP-сервер. По умолчанию сервер TOC работал в HTTP-режиме, неотличимом от обычного веб-сервера. Если подключающийся клиент вместо HTTP-запроса отправлял строку "" с двумя последующими символами перевода строки (CRLF), TOC переключался в режим чтения сообщений FLAP. Получив профиль пользователя, клиент должен был повторно подключиться к TOC и использовать его как HTTP-сервер, который размещал профиль пользователя в формате HTML. После подключения существовало два основных формата сообщений для обмена данными внутри FLAP. Сообщения от клиента к серверу отправлялись в формате, напоминающем командную строку в стиле Unix: команды с аргументами, разделенными пробелами, с использованием кавычек и экранирования обратным слешем. Сообщения от сервера к клиенту были значительно проще: они отправлялись в виде ASCII-строк, разделенных двоеточиями, подобно многим конфигурационным файлам Unix. Таким образом, написать клиент было довольно легко, поскольку входящие сообщения было очень просто разбирать, а исходящие команды – генерировать. Это отличалось от OSCAR, который из-за двоичного представления данных мог быть сложнее для понимания.
Топ-класс 2
Протокол TOC2 является обновленной версией протокола TOC, или протокола "Talk to OSCAR". Его существование никогда не было задокументировано AOL, и он используется лишь в нескольких клиентах AOL Instant Messenger. Некоторые клиенты начинают предлагать плагины для TOC2 в связи с недавним закрытием AOL серверов TOC. Как и его предшественник, TOC2 является ASCII-протоколом и лишен некоторых функций OSCAR, но, в отличие от TOC, TOC2 поддерживает отображение значков контактов и получение файлов (но не отправку). TOC2 работает по сути так же, как и TOC, являясь оболочкой для OSCAR. Перенос кода из TOC в TOC2 также удивительно прост. Из-за сходства между TOC1.0 и TOC2.0, их лучше определять по различиям, которых немного: В TOC1.0 подключение с пустым списком контактов приводило к тому, что другие не могли видеть вас онлайн. Это исправлено в TOC2.0. В TOC1.0 существует команда toc add deny, но отсутствует команда toc remove deny. TOC2.0 также исправляет это. Процесс входа в систему в основном такой же, как в TOC1.0, но с несколькими новыми параметрами: версия (число), и код, созданный на основе имени пользователя и пароля. Назначение числа неизвестно. Значение по умолчанию — 160, и, похоже, изменение этого значения не оказывает никакого эффекта. Механизмы разрешений и запретов были переработаны и стали проще и функциональнее в TOC2.0. Команды toc2 add permit, toc2 remove permit, toc2 add deny и toc2 remove deny присутствуют и доступны в любое время. Также улучшены команды для работы со списком контактов. Управление группами стало проще благодаря командам toc2 new group и toc2 del group. Кроме того, можно добавлять или удалять несколько контактов одновременно и выбирать группы, в которые они входят. Внесены также некоторые изменения в синтаксис, а некоторые команды получили дополнительные параметры. Назначение этих параметров пока не определено. Помимо этого, единственное отличие от TOC заключается в том, что в большинстве команд добавлена цифра "2", как в запросах CLIENT > SERVER, так и наоборот. Например, IM IN2, UPDATE BUDDY2 и т.д. TOC2 также ограничивает количество ScreenNames, которые могут войти с одного IP-адреса (10).
In TOC1.0, connecting with an empty buddy list would make it so that others are not able to see you online. This has been corrected in TOC2.0. In TOC1.0, there is a toc add deny command, but no toc remove deny. TOC2.0 corrects this as well. The sign on process is basically the same as TOC1.0, but with a few new parameters: version, a number, and a code created based on the username and password. The purpose of the number is unknown. The default is 160 and it seems to have no effect if changed. Permitting and denying have been revamped and are much easier and full featured in TOC2.0. The commands toc2 add permit, toc2 remove permit, toc2 add deny, and toc2 remove deny are all present and accessible at any time. Buddy list commands have also been improved. Group management is easier with the toc2 new group and toc2 del group commands. Also, it is possible to add or remove more than one buddy at a time, and choose the groups they are in. A few syntax changes have also been made, and parameters have been added to some commands. The uses of these parameters are still undetermined. Aside from this the only changes from TOC are the fact that a '2' was added on most commands both CLIENT >SERVER and vice versa. E. g. IM IN2, UPDATE BUDDY2, etc. TOC2 also limits the number of ScreenNames that can log in from a single IP address (10).