Принцип надежности
В вычислительной технике принцип надежности — это руководство по проектированию программного обеспечения, которое гласит: «будьте консервативны в том, что вы делаете, будьте либеральны в том, что вы принимаете от других». Его часто перефразируют так: «будьте консервативны в том, что отправляете, будьте либеральны в том, что принимаете». Этот принцип также известен как закон Постеля , в честь Джона Постела , который использовал эту формулировку в ранней спецификации TCP . [1]
Другими словами, программы, которые отправляют сообщения на другие машины (или другие программы на той же машине), должны полностью соответствовать спецификациям, но программы, которые получают сообщения, должны принимать несоответствующие входные данные, если их смысл ясен.
Среди программистов для создания совместимых функций известен также принцип в форме: быть контравариантным по входному типу и ковариантным по выходному типу.
Интерпретация
[ редактировать ]RFC 1122 (1989) расширил принцип Постела, рекомендуя программистам «предполагать, что сеть заполнена злонамеренными объектами, которые будут отправлять пакеты, предназначенные для оказания наихудшего возможного эффекта». [2] Протоколы должны позволять добавлять новые коды для существующих полей в будущих версиях протоколов, принимая сообщения с неизвестными кодами (возможно, записывая их в журнал). Программистам следует избегать отправки сообщений с «законными, но неясными функциями протокола», которые могут выявить недостатки в получателях, и разрабатывать свой код «не только для того, чтобы выдержать другие плохо ведущие себя хосты, но и для сотрудничества, чтобы ограничить количество сбоев, которые такие хосты могут вызвать в общей системе». средство связи». [3]
Критика
[ редактировать ]В 2001 году Маршалл Роуз описал несколько проблем развертывания при применении принципа Постела при разработке нового протокола приложения. [4] Например, дефектная реализация, которая отправляет несоответствующие сообщения, может использоваться только с реализациями, которые допускают такие отклонения от спецификации, пока, возможно, через несколько лет она не будет связана с менее толерантным приложением, которое отклоняет его сообщения. В такой ситуации выявить проблему часто бывает сложно, а внедрение решения может оказаться дорогостоящим. Поэтому Роуз рекомендовал «явные проверки согласованности в протоколе… даже если они накладывают накладные расходы на реализацию».
В 2018 году статья Флорентена Роше и Оливье Перейры о технологиях повышения конфиденциальности показала, как использовать принцип надежности Postel внутри Tor, протокола маршрутизации чтобы поставить под угрозу анонимность луковых сервисов и клиентов Tor. [5]
В 2023 году Мартин Томсон и Дэвид Шинази утверждали, что принцип надежности Постела на самом деле приводит к отсутствию надежности, включая безопасность: [6]
Недостаток может стать стандартом де-факто. Любая реализация протокола необходима для репликации аномального поведения, иначе она несовместима. Это одновременно следствие терпимости к неожиданностям и естественное нежелание избегать фатальных ошибок. Обеспечение совместимости в этой среде часто называют стремлением обеспечить « совместимость между ошибками ».
См. также
[ редактировать ]Ссылки
[ редактировать ]- ^ Постел, Джон , изд. (январь 1980 г.). Протокол управления передачей . IETF . дои : 10.17487/RFC0761 . РФК 761 . Проверено 9 июня 2014 г.
- ^ Брейден, Р. , изд. (октябрь 1989 г.). Требования к интернет-хостам: уровни связи . IETF . дои : 10.17487/RFC1122 . РФК 1122 . Проверено 9 июня 2014 г.
- ^ Уайльд, Эрик (2012) [1999]. WWW Уайльда: Технические основы Всемирной паутины . Спрингер-Верлаг. п. 26 . дои : 10.1007/978-3-642-95855-7 . ISBN 978-3-642-95855-7 . S2CID 19897299 .
- ^ Роуз, М. (ноябрь 2001 г.). О разработке прикладных протоколов . IETF . дои : 10.17487/RFC3117 . РФК 3117 . Проверено 9 июня 2014 г.
- ^ Роше, Флорентен; Перейра, Оливье (2018). «Переход на периферию: гибкость и подтверждение трафика в протоколах луковой маршрутизации» (PDF) . Материалы симпозиума по технологиям повышения конфиденциальности . 2018 (2). Де Грютер Опен: 27–46. дои : 10.1515/popets-2018-0011 . ISSN 2299-0984 .
- ^ М. Томсон; Д. Шинази (июнь 2023 г.). Поддержание надежных протоколов . Совет по архитектуре Интернета (IAB). дои : 10.17487/RFC9413 . RFC 9413 . Информационный.
Внешние ссылки
[ редактировать ]- История принципа устойчивости (Интернета) (Ник Галл, май 2005 г.)
- Internet Protocol , page 22; J. Postel, IEN 111, August 1979.