Кратко

  • В апреле 1983 года Andrew G. Malis описал в RFC 852 дополнительный режим для хостов при IMP типа C/30. Вместо блокировки всех новых сообщений хоста на срок до пятнадцати секунд IMP мог отклонить сообщение, для которого не хватило ресурсов в течение двух секунд, и вернуть ответ Type 9 с конкретной причиной.
  • Выигрыш во времени менял очередность. Более позднее сообщение могло быть принято до того, как хост узнал об отказе по раннему. Для одинаковых приоритета, источника и адресата сеть соблюдала порядок приёма, поэтому программе, которой требовался первоначальный порядок подачи, приходилось управлять им самой либо оставаться на обычном режиме.

У служащего возникла сложная заявка. Он отправился искать нужную папку и закрыл приём всего отдела. За первой заявкой стояла вторая — простая и совсем о другом. Ей всё равно пришлось ждать. Так действовала граница между хостом и интерфейсным процессором сообщений, IMP, описанная в RFC 852. Если IMP не мог сразу собрать ресурсы для принятой от хоста заявки, дальнейший ввод от этого хоста перекрывался. Ресурсы зависели от вида, длины и назначения сообщения. Причина задержки могла быть узкой, а очередь получалась общей.

Обычное ожидание допускало пятнадцать секунд. Предложение Malis давало хосту выбор короткого режима: если за две секунды IMP не находил нужные ресурсы, он отказывал именно этому сообщению, возвращал ответ Incomplete Transmission типа 9 с причиной и продолжал искать ресурсы. Хост мог заняться другими отправлениями, а отвергнутое предложить снова позже. Быстрый ответ означал свободу подать новую работу. Первое сообщение при этом оставалось не принятым сетью; повтор требовал отдельного действия.

Выбор кодировался подтипом. Обычное сообщение Type 0 с подтипом 0 пользовалось стандартным контролем и могло ждать до пятнадцати секунд. Подтип 1 сохранял эти механизмы при пределе в две секунды. Для пакетов без управления и гарантии доставки существовали подтип 3 со старым пределом и 4 с коротким. Программа хоста, выбирая короткий вариант, обязана была понимать ответы Type 9. RFC 852 относился к IMP типа C/30 с доступом хоста по 1822 или 1822L. Ранее описанный в Report 1822 неблокирующий интерфейс так и не был реализован; новый текст приглашал разработчиков программ хостов обсудить другую конструкцию.

Причины отказа показывали, где именно задержалась работа. Новые коды Type 9 различали установление соединения, сквозное управление потоком, нехватку буфера у IMP назначения, перегрузку пути и нехватку ресурсов у локального IMP. Первые случаи могли затронуть одно соединение или пункт назначения, оставив другие свободными. Локальная нехватка буферов и записей таблицы шире: почти все сообщения, кроме неуправляемых пакетов, сталкивались с ней. Одинаковая запись «сеть занята» стёрла бы разницу, важную для следующей попытки.

У потока была конкретная вместимость. На одно соединение допускалось восемь сообщений без окончательного ответа IMP; девятому места не оставалось. Для сообщения длиннее 1008 бит, без 96-битного заголовка, требовалось заранее выделить буфер у IMP назначения. Если удалённый буфер занят, короткое сообщение или сообщение для другого соединения могло пройти. Двухсекундный предел не заставлял все ресурсы внезапно появиться. Он не позволял одной заполненной очереди держать весь хост у порога.

Плата проявлялась в порядке. Сеть обеспечивала последовательную доставку сообщений с одинаковыми приоритетом, источником и адресатом в порядке, в котором IMP их принял. Подача хостом и ответы IMP шли не синхронно. Пока отказ по первой заявке возвращался, хост мог подать вторую; IMP принимал её. Когда первая приходила повторно, она уже оказывалась позади второй. Поэтому RFC 852 советовал не применять короткий режим, если приложению был строго необходим последовательный порядок доставки силами подсети.

Окно стало закрываться на меньшее время, но учёт усложнился. IMP сообщал, почему отказал, и вновь принимал чужую работу. Хост хранил отклонённое сообщение, выбирал момент повтора и следил, не обогнали ли его последующие. Это была сделка между временем ожидания и обязанностью вести очередь. В 1983 году такую сделку можно было выразить одним подтипом на границе двух машин.