Binkp

Материал из свободной русской энциклопедии «Традиция»
Перейти к навигации Перейти к поиску
Binkp
binkp
Уровень:
Прикладной
Семейство:
TCP/IP
Создан:
1996
Порт:
24554/TCP
Назначение:
Передача файлов в FTN-сетях
Спецификация:
FSP-1011
Реализация:
Реализации:
FTNMail
Клиенты:
binkd, argus, bforce
Расширяемость:
Дополнительные команды и опцииСвойство «Чем расширяется» типа «Страница» со значением «Дополнительные команды и опции» содержит недопустимые символы или неполно и может привести к неожиданным результатам при семантическом аннотировании или запросе.
Основные расширения:
шифрование, сжатие данных, nodupe mode, MD5-аутентификация

Binkpсетевой протокол прикладного уровня, разработанный для передачи файлов[1] в Фидонете или в других FTN-сетях, происходящей при посредстве TCP-соединения. Как правило, для связи по данному протоколу используют TCP-порт 24554, поскольку именно этот номер зарегистрирован в каталоге IANA (Internet Assigned Numbers Authority).

Существуют две версии протокола Binkp: оригинальная (1.0) и дополненная (1.1). Кроме того, разработано множество расширений протокола. Протокол и бо́льшая часть его расширений оформлены в качестве стандартов и предложений FTSC.

История создания[править | править код]

После того, как Интернет начал становиться всё более распространённым и доступным, возникла потребность использовать его для междугородних линков в Фидонете вместо обычных телефонных сетей и сети «Искра-2». Реализации виртуальных модемов (rlfossil, vmodem) решали задачу недостаточно эффективно. В ifcico была реализована возможность прямой связи между фидошными мейлерами по TCP, но по-прежнему использовались протоколы, предназначенные для не дающего гарантии доставки транспорта (EMSI, zmodem), а потому неэффективные для применения поверх TCP.[2]

В такой ситуации в 1996 году Дмитрий Малов разработал специализированный протокол binkp и поддерживающий его мейлер binkd. Этот протокол и мейлер могли работать только поверх TCP, они не предназначены для работы по обычным телефонным линиям, и именно поэтому (благодаря отсутствию затрат на коррекцию ошибок) работают по TCP весьма эффективно. В этом состояло преимущество binkp перед остальными протоколами, и binkp достаточно быстро потеснил все остальные варианты фидонетовских связей поверх Интернета: так, к концу 1998 года, если судить по флагам в нодлисте, binkp уже́ был наиболее распространённым из протоколов Fido over IP. Кроме того, протокол binkp был изначально документирован, а его реализация (binkd) — свободная кроссплатформенная программа, что тоже являлось существенным преимуществом binkp и binkd перед другими протоколами фидонетовского соединения поверх Интернета.

Впоследствии появились реализации протокола binkp и в других мейлерах (Argus, bforce).

Смысл номера порта[править | править код]

Номер порта (24554), по-видимому, был выбран, как число 59999, у которого поменяны местами старший и младший байт (то есть в сетевом пакете записаны так, как они хранятся в компьютерах intel-архитектуры).

Структура протокола[править | править код]

Взаимодействие происходит в одной TCP-сессии (благодаря чему протокол может работать через NAT). Стороны обмениваются между собой кадрами ограниченного размера (не более 32K, по умолчанию 4K). В каждом кадре могут передаваться либо данные, либо управляющая команда. За счёт этого достигается двунаправленность протокола: во время отправки файла одна из сторон может вклинить в поток данных специальный кадр с командой подтверждения приёма файла, таким образом приём и передача происходят практически независимо друг от друга, но одновременно в одном TCP-сеансе.

Кроме того, изначально было введено понятие потока. То есть, отправляющая сторона не ожидает подтверждения приёма предыдущего файла для отправки следующего. Это существенно повышает эффективность протокола по сравнению с другими аналогичными. Также в протокол были заложены возможности его последующего развития — добавления новых опциональных возможностей, либо изменение версии протокола (поддерживаемые версии и набор опциональных расширений стороны объявляют друг другу в начале сеанса связи).

Основные расширения[править | править код]

По мере развития протокола в него были добавлены многие новые возможности. Вот основные из них:

  • Возможность дополнения очереди на отправку без обрыва соединения (это основное отличие binkp 1.1 от 1.0), в частности, возможность отработки файловых запросов.
  • Возможность безопасной передачи пароля по открытым каналам связи с использованием хеша MD5.
  • Возможность шифрования всего трафика.
  • Возможность компрессии трафика.
  • Защита от повторной передачи файла в случае обрыва связи при подтверждении приема (ND-mode).

Описание протокола binkp[править | править код]

В обсуждении разработчиков (см. area://Ru.binkd?msgid=2:463/68+4a373c27) выяснилося, что представленное в FTSC описание протокола binkp/1.0 имеет ряд недостатков, подчас уместнее полагаться на составленное и поддерживаемое разработчиками описание ([1]).

См. также[править | править код]

Примечания[править | править код]

  1. В основном передаются архивированные пакеты с почтою; протокол binkp 1.1 предусматривает также передачу файлов по файловым запросам (по фрекам).
  2. Неэффективность состоит в том, что в эти протоколы изначально была заложена избыточность в целях коррекции ошибок — а ведь TCP гарантирует безошибочную доставку пакета данных, так что поверх него эта избыточность протокола становится излишнею.