Binkp/1.0


Описание протокола

Binkp работает через двунаправленный символьный канал, не допускающий ошибок при передаче даннных. Любые данные, записываемые каждой из сторон в канал, имеют следующий общий формат:

   binkp's frames:

    +---------------------- 0=data block, 1=message(command)
    |                +---- data block size / msg's argument size
    |                |
    7 6543210 76543210
   +-+-------+--------+--- ..... ---+
   | |   HI      LO   |             | -- data block / msg's argument
   +-+-------+--------+--- ..... ---+
   |<-    2 bytes   ->|<- 32K max ->|

Заголовок кадра -- два байта, определяющие тип и длину (в байтах) данных, следующих за заголовком. Если старший бит заголовка сброшен, то все данные поступившие с кадром следует дописать к текущему принимаемому файлу. (Если такой файл уже открыт, иначе -- отбросить) В противном случае, данные следует разобрать как команду, меняющую состояние протокола. Первый байт данных, поступивших с кадром -- номер команды. Оставшиеся -- аргумент. Аргументы команд -- произвольный набор символов, не обязательно ограниченный '\0'. Команда без аругментов (например, M_OK) может выглядеть примерно так:

    7 6543210 76543210 76543210
   +-+-------+--------+--------+
   |1|      0        1|       4|
   +-+-------+--------+--------+
    |                |        +----- номер команды (аргументов нет)
    |                +-------- длина кадра без заголовка -- 1 байт
    +- это команда
Команды, которые понимает binkd/0.8, и их аргументы:

Типичная сессия между двумя binkd

вызвающая система посылает вызываемая система посылает
M_NUL "SYS ..." M_NUL "SYS ..."
M_NUL "ZYZ ..." M_NUL "ZYZ ..."
M_NUL "LOC ..." M_NUL "LOC ..."
M_NUL "VER ..." M_NUL "VER ..."
M_ADR "2:2/2.2@fidonet" M_ADR "3:3/3.3@fidonet"
M_PWD "password" (ждем пароля от remote)
M_OK "" или M_ERR "Bad password"
(ждем M_OK) M_FILE "file2 200 42342434 0"
M_FILE "file1 100 423424244 0" data
data data
data data
M_EOB (получили file1 целиком, подтверждаем)
(получили file2 целиком, подтверждаем) M_GOT "file1 100 423424244"
M_GOT "file2 200 42342434" data
M_EOB

© Copyright 1996-97 by Dima Maloff
$Id: binkp.html,v 1.5 1998/10/08 07:31:48 maloff Exp $