Wavelet Transfer Protocol
Wavelet Transfer ProtocolПротокол WTP относится к прикладному уровню модели OSI и используется для взаимодействия WTP-клиента и WTP-сервера. В протоколе WTP предусмотрено всего три типа запросов: WTP_BANR, WTP_LIST и WTP_DATA, названия которых говорят сами за себя. В ответ на запрос WTP_BANR сервер пришлет приветственное сообщение наподобие "Welcome to WTP server!". В ответ на запрос WTP_LIST сервер пришлет список файлов и директорий. И, наконец, в ответ на запрос WTP_DATA сервер пришлет указанный файл (изображение). WTP - транзакционно-ориентированный протокол, реализованный поверх TCP. Для каждого запроса необходимо создавать отдельное TCP соединение, которое должно быть закрыто после получения ответа от сервера. Упрощенно модель взаимодействия клиента и сервера по протоколу WTP выглядит так:
В терминологии протокола TCP, отправка клиентом сегмента FIN в п. 3 называется половинным закрытием соединения. Для этих целей в API сокетов служит функция shutdown(). Сегмент FIN служит в протоколе WTP как маркер конца запроса клиента или ответа сервера. Это существенно, т.к. в самом теле WTP запроса не указывается размер и сервер бы не имел возможности узнать где заканчивается клиентский запрос. Вообще, всем у кого еще нет книги У. Стивенса "UNIX: разработка сетевых приложений" советую ее обязательно приобрести, ибо лучшей книги по сетевому программированию просто не существует! Вернемся к протоколу WTP. Как уже было сказано, протоколом определяется три типа запросов, которым соответствуют следующие коды:
Ответ сервера всегда начинается с кода ошибки, который может принимать следующие значения:
За кодом ошибки всегда следует соответствующее текстовое описание вида:
Теперь перейдем к непосредственому описанию формата запроса и ответа в протоколе WTP. WTP_BANR - запрос
WTP_BANR - ответ
WTP_DATA - запрос
WTP_DATA - ответ
WTP_LIST - запрос
WTP_LIST - ответ
Формат DIRECTORYКак видно из предыдущей таблицы, имена файлов и директорий упаковываются в структуру DIRECTORY. Устроена она крайне просто. Если очередной элемент в ней - это директория, тогда вслед за байтом 0x01 (признак директории) следует null-terminated строка с ее именем. Если очередной элемент - это файл, тогда вслед за байтом 0x02 (признак файла) следует 4 байта, содержащие размер файла, а затем уже следует null-terminated строка, содержащая его имя. Замечание: все многобайтные значения в протоколе WTP сохраняются в т.н. сетевом порядке (network byte order). Другими словами, старший байт сохраняется по младшему адресу. СкачатьВо время разработки и отладки программ Wavelet Explorer и WTPD появилась необходимость в некоторой простой утилите, позволяющей работать с WTP-сервером на низком уровне. Другими словами, был необходим простой и удобный отладочный инструмент для работы с протоколом WTP. Хотя сейчас необходимость в такой программе отпала, в некоторых ситуациях она может очень пригодиться. Программа wtp - это очень простой WTP-клиент под windows. Программа работает по следующему принципу: сначала содержимое исходного файла отправляется на указанный сервер, а затем полученный от него ответ сохраняется в целевом файле. Таким образом можно вручную составить любой WTP - запрос (предварительно сохранив его в файле), а затем проследить за реакцией сервера. Программа wtp доступна для скачивания и распространяется в соответствии с лицензией GNU GPL.
Copyleft © 2003-2008 Александр Симаков Хостинг предоставлен Министер Казино Последнее обновление: 15 марта 2008 |