что данные хост должен послать данные еще раз несколько позже. Если устройство довольно медленное, то последнее может приводить к неоправданному расходу пропускной способности шины! Поэтому в USB2.0 предусмотрен специальный тип пакетов ping, предназначенных для проверки состояния готовности устройства. Благодаря этому механизму, хост может не производить повторную посылку пакета данных пока не получит информацию о готовности устройства.
В случае если какой-либо пакет требует повторной передачи (ответный handshake пакет не получен) хост может попытаться произвести повторную посылку или прием пакета. Ответ handshake STALL означает что произошла ошибка, требующая вмешательства ПО для восстановления состояния устройства. При успешном получении пакета данных хост так же отвечает устройству АСК.
Процедура передачи пакета (как мы видели) делится на три стадии: token, data и handshake. Весь этот механизм обеспечивает гарантированную доставку пакетов в течении не гарантированного времени. На практике это означает что ошибки передачи выливаются в увеличенное время, поэтому устройства кторым необходим непрерывный поток данных не содержащих ошибки (например такие как устройства зсписи CDROM) должны иметь достаточно большой внутренний буфер для компенсации временных задержек, кроме того они должны стараться держать этот буфер заполненным (в частности начинать процесс записи только после того, как получат от хоста достаточный объем данных). Кроме того, на примере CDR/W, скорость записи на диск должна быть не слишком высокой чтобы подкачка оставшихся данных в буфер могла быть произведена за время записи данных, уже находящихся в буфере. Понятно что выполнение этих условий сильно зависит от скорости передачи, общего количества передаваемых данных и объема буфера и в принципе поддается оценке в каждом конкретном случае. Поэтому если мы хотим избежать "игры в Русскую рулетку" нам следует выбрать скорость записи ниже средней скорости передачи bulk через шину USB. Последнее, в силу того что каналы bulk не имеют выделенной специально под каждый канал полосы пропускания на шине а конкурируют за нее в процессе работы, вообще говоря не избавляет нас от возможных проблем, связанных с наличием других устройств (которые могут в самый неподходящий момент захотеть передать большой объем информации). Тут невольно хочется вспомнить времена старого доброго однозадачного DOS. Следующий рисунок иллюстрирует транзакции типа bulk.
