Кратко
- RFC 1957 назвал два клиента, которые ожидали пробел после индикатора состояния и давали сбой без него, хотя RFC 1939 не требовал пробела при отсутствии дополнительного текста.
- Сервер UCB
popperвсегда добавлял сведения после статуса, поэтому его допустимая привычка стала входным предположением для парсеров. - Netscape требовал UIDL, а Eudora — TOP, несмотря на то что RFC 1939 относил обе команды к необязательным.
Минимальный ответ POP3 мог завершиться сразу после +OK или -ERR, если за индикатором не было пояснения. Пробел отделял дополнительный текст. RFC 1957 прямо отмечает: спорный пробел не был обязательным по RFC.
Но широко применявшийся UCB popper, позднее развивавшийся Qualcomm, всегда выдавал дополнительную информацию. Поэтому пробел присутствовал неизменно. Сервер оставался в разрешённых границах, однако его постоянство создало слишком узкий образ того, как выглядит протокол.
По данным RFC 1957, свободно копируемый Unix-клиент popclient и закрытый netApp Systems Internet Series ожидали пробел и прекращали работу, когда не находили его. Новый сервер мог выбрать законную краткую форму и оказаться несовместимым не со стандартом, а с программами, обученными на одном популярном образце.
Так расходятся соответствие и совместимость. Соответствие проверяет, входит ли поведение в множество разрешённых. Совместимость проверяет, принимают ли его реальные партнёры. Если распространённый отправитель использует лишь одну допустимую форму, а получатели принимают только её, оставленная стандартом свобода исчезает без официальной поправки.
RFC 1957 не возвёл привычку в норму. Авторы обоих клиентов были уведомлены; ожидалось, что новые выпуски перестанут требовать пробел. Одновременно документ советовал поддерживать старые версии. Сначала надо сохранить работоспособность установленной базы, но источник зависимости следует исправить, чтобы исключение не воспроизводилось бесконечно.
Вторая группа наблюдений касается возможностей. RFC 1939 поместил TOP и UIDL в раздел необязательных команд POP3. Тем не менее RFC 1957 сообщил, что Netscape требовал UIDL, а Eudora — TOP. Механика команд здесь не предмет статьи. Важен переход выбора: формально допустимое отсутствие функции стало практической причиной отказа популярного клиента.
Явного обнаружения возможностей не хватало. RFC 1939 не давал общего способа отличить сервер без необязательной команды от сервера, который не желал или не мог выполнить её в данный момент. RFC 2449 в 1998 году описал функции, обнаруживаемые только пробой, если вообще обнаруживаемые, и ввёл CAPA для объявления, в частности, TOP и UIDL. Это позднейший способ сделать различия видимыми, но не доказательство прямой причинности или всеобщего внедрения.
Масштаб выводов ограничен источником. RFC 1957 — информационный документ июня 1996 года, обновляющий стандартизируемый RFC 1939. Он фиксирует именованные случаи, а не репрезентативное исследование. В нём нет числа установок, частоты сбоев, стоимости или мотивов разработчиков. Он не объявляет popper несоответствующим и не делает необязательные команды нормативно обязательными.
Работающий код показывает реальную зависимость, но не выдаёт ей вечный мандат. Массовость помогает найти линию отказа и одновременно способна придать случайности незаслуженную власть. Задача эксплуатации — удержать связь сегодня, исправить узкое чтение и затем вернуть протоколу разнообразие, которое его текст не запрещал.
Источники
Обзор для участников
Подробный контекст профиля
Войдите с подходящим уровнем подписки, чтобы открыть полный обзор и примечания к источникам.
Только для Стратегического сообщества
Стратегическое сообщество
Открыто всем читателям. Вступите и войдите, чтобы открыть обзоры профилей.
Вступить в Стратегическое сообществоТолько для Альянса лидеров
Альянс лидеров
Для проверенных владельцев IP-активов и руководителей. Войдите, чтобы открыть обзоры Альянса.
Вступить в Альянс лидеров
