Из-за него дрожат мои жилы и пульс».
«Тебе следовало бы выбрать другой путь, -
Ответил он, созерцая мой плач, -
Ты должен уйти из этого дикого места;
Потому что здесь чудовище, которого ты не переносишь,
Не позволяй никому попадаться ему на пути,
Потому что это нарушит его покой и он убьет смельчака…»
Данте. «Ад», Песнь 1. Как Данте встретил Вирджилия (транскрипция Генри Вадсворта Лонгфеллоу (Henry Wadsworth Longfellow))
«Зри: вот он, зверь, пред кем я отступил;
Спаси меня, мудрец, в беде толикой —
Я весь дрожу, и стынет кровь средь жил».
«Ты должен в путь идти другой, великий, —
Он отвечал, мой плач прискорбный зря, —
Чтоб избежать из сей пустыни дикой.
Сей лютый зверь, враждой ко всем горя,
На сей стезе – идущему преграда;
Ввек не отстал, души не уморя».
Данте Алигьери. «Божественная комедия» / Пер. с итал. М.: Просвещение, 1988
В компьютерных науках всегда соблюдается универсальное правило, которое утверждает, что не существует полностью масштабируемых решений. Другими словами, это означает, что если процесс с самого начала был предназначен для работы на небольших системах, то, не внося в него каких-либо изменений, его нельзя применить на большой системе, и наоборот. Системы управления базами данных, спроектированные для обработки нескольких десятков тысяч записей, оказываются бесполезными при необходимости обработать миллион записей. Текстовый процессор, предназначенный для обработки больших текстов, эквивалентных многостраничным книгам, становится неуправляемым и чересчур странным при его использовании для обработки электронной почты. Перечисленное – не просто артефакты искусства программирования (или его отсутствия). Это неизбежное следствие общего подхода к проектированию систем программирования, основанного на предположениях относительно области их будущего применения и тесно связанных с ними допущений, закладываемых при проектировании подобных систем. Лучшие конструктивные решения основаны на достаточно гибких предположениях, позволяющих сохранять работоспособность систем в самых различных, невероятных условиях. Но в любом случае это всего лишь предположения.
На долю протоколов TCP/IP выпал необыкновенный успех. Еще в конце 1990-х годов коммуникационных протоколов было больше. Но в результате конкурентной борьбы остальные протоколы были вытеснены. Не всегда это оценивается как катастрофа. Операционная система Windows 95 хотя и не по умолчанию, но достаточно хорошо поддерживала протоколы TCP/IP. Другими словами, в этой операционной системе протоколы TCP/IP в качестве основных протоколов по умолчанию не устанавливались. Во время ее создания в мире сетей доминировали протоколы IPX компании Novell и NetBIOS компаний Microsoft и IBM. Уже через каких-то три года ни один из этих протоколов в операционных системах по умолчанию не устанавливался. Операционная система Windows 98 по умолчанию поддерживает протоколы TCP/IP, отражая потребности обслуживаемых сетей.
Набор протоколов TCP/IP стал главным в операционных системах компании Microsoft только благодаря решению компании сохранить за собой лидирующие позиции в области поддержки сетей. В то время такой выбор казался довольно естественным и очевидным. Возможно, что кто-то доверился широкому распространению протоколов TCP/IP среди серверов UNIX, которые можно встретить повсюду в корпорациях и университетах. Или, может быть, так произошло благодаря наблюдавшемуся в то время экспоненциальному развитию Всемирной паутины (собранию гипертекстовых и иных документов, доступных по всему миру через сеть Интернет), основанной на стеке протоколов TCP/IP. Так или иначе, но оба ответа игнорируют главный вопрос, который лежит в основе сложившегося положения дел: «Почему?» Почему протоколы TCP/IP наиболее часто устанавливают на UNIX-серверах? Могут ли другие протоколы быть использованы в сети? Короче говоря, почему именно TCP/IP?
Конечно, успеху стека протоколов TCP/IP способствовало много факторов (в особенности следует отметить их практически свободное распространение и успешную реализацию BSD). Но, вне всякого сомнения, наиболее важную роль в организации сетей на их основе сыграло то, что можно сформулировать как «глобальный замысел, локальная маршрутизация».
Протокол NetBIOS не предусматривает концепции внешнего мира, непосредственно окружающего локальную сеть читателя. Для обработки данных других сетей в протоколе IPX предусмотрена возможность работы с сетями, отличающимися от локальной сети пользователя. Но при этом требовалось, чтобы каждый клиент заблаговременно находил и определял полный маршрут к адресату. Напротив, при использовании протокола TCP/IP каждому хосту достаточно лишь знать ближайшую очередную машину, входящую в полный путь пересылки данных. При этом предполагается, что все наиболее существенные действия по пересылке данных сеть выполнит сама. Если TCP/IP можно сравнить с общеизвестной почтовой службой отправки писем адресату, то протокол IPX является эквивалентом почтовой службы, которая требует обязательного указания почтальону маршрута движения к адресату. Кроме того, протокол IPX недостаточно хорошо масштабируется.
Читать дальше
Конец ознакомительного отрывка
Купить книгу