В вычислении , то принцип надежности является руководством по проектированию программного обеспечения , которое гласит: «быть консервативной в том, что вы делаете, либеральными в том, что вы принимаете от других». Его часто перефразируют так: «будьте консервативны в том, что вы отправляете, будьте либеральны в том, что вы принимаете». Этот принцип также известен как закон Постела в честь Джона Постела , который использовал эту формулировку в ранней спецификации TCP . [1]
Другими словами, программы, которые отправляют сообщения на другие машины (или на другие программы на той же машине), должны полностью соответствовать спецификациям, но программы, которые получают сообщения, должны принимать несоответствующий ввод, если смысл ясен.
Среди программистов принцип создания совместимых функций известен также в форме контравариантности в типе ввода и ковариантности в типе вывода .
Интерпретация
RFC 1122 (1989) расширил принцип Постела, рекомендуя программистам «предполагать, что сеть заполнена злонамеренными объектами, которые будут посылать пакеты, разработанные так, чтобы иметь наихудший эффект». [2] Протоколы должны позволять добавлять новые коды для существующих полей в будущих версиях протоколов, принимая сообщения с неизвестными кодами (возможно, регистрируя их). Программистам следует избегать отправки сообщений с «законными, но неясными функциями протокола», которые могут выявить недостатки в приемниках, и разрабатывать свой код «не только для того, чтобы выжить в других неправильно функционирующих хостах, но и для сотрудничества, чтобы ограничить количество нарушений, которые такие хосты могут вызвать для общего доступа. средство связи ». [3]
Критика
В 2001 году Маршалл Роуз охарактеризовал несколько проблем развертывания при применении принципа Постела при разработке нового протокола приложения. [4] Например, дефектная реализация, которая отправляет несоответствующие сообщения, может использоваться только с реализациями, которые допускают эти отклонения от спецификации, пока, возможно, через несколько лет она не соединится с менее терпимым приложением, которое отклоняет свои сообщения. В такой ситуации часто бывает сложно определить проблему, а развертывание решения может быть дорогостоящим. Поэтому Роуз рекомендовал «явные проверки согласованности в протоколе ... даже если они накладывают накладные расходы реализации».
С 2015 по 2018 год в серии интернет- проектов Мартин Томсон утверждает, что принцип устойчивости Постела на самом деле ведет к недостаточной надежности, в том числе безопасности: [5]
Недостаток может стать стандартом де-факто. Для воспроизведения аномального поведения требуется любая реализация протокола, в противном случае он не сможет взаимодействовать. Это является как следствием применения принципа устойчивости, так и результатом естественного нежелания избегать условий фатальной ошибки. Обеспечение функциональной совместимости в этой среде часто называют стремлением «обеспечить совместимость с ошибками».
В 2018 году в статье Флорентина Роше и Оливье Перейры о технологиях повышения конфиденциальности было показано, как использовать принцип устойчивости Postel в протоколе маршрутизации Tor для компрометации анонимности onion-сервисов и Tor-клиентов. [6]
Смотрите также
Рекомендации
- ^ Постел, Джон , изд. (Январь 1980 г.). Протокол управления передачей . IETF . DOI : 10,17487 / RFC0761 . RFC 761 . Проверено 9 июня 2014 года .
- ^ Брейден, Р. , изд. (Октябрь 1989 г.). Требования к Интернет-хостам: уровни связи . IETF . DOI : 10,17487 / RFC1122 . RFC 1122 . Проверено 9 июня 2014 года .
- ^ Уайльд, Эрик (2012) [1999]. WWW Уайльда: Технические основы всемирной паутины . Springer ‑ Verlag. п. 26 . DOI : 10.1007 / 978-3-642-95855-7 . ISBN 978-3-642-95855-7.
- ^ Роуз, М. (ноябрь 2001 г.). О разработке прикладных протоколов . IETF . DOI : 10,17487 / RFC3117 . RFC 3117 . Проверено 9 июня 2014 года .
- ^ Томсон, Мартин (май 2019 г.). Вредные последствия принципа устойчивости . IETF . Проверено 4 октября 2019 года .
- ^ Роше, Флорентин; Перейра, Оливье (2018). «На грани: гибкость и подтверждение трафика в протоколах луковой маршрутизации» (PDF) . Материалы симпозиума по технологиям повышения конфиденциальности . De Gruyter Open (2): 27–46. ISSN 2299-0984 .
Внешние ссылки
- История принципа устойчивости (Интернет) (Ник Галл, май 2005 г.)
- Интернет-протокол , стр. 22; Дж. Постел, IEN 111, август 1979 г.