Благодаря высокой скорости технологического прогресса эти области очень быстро проникают друг в друга. При этом в XXI веке различия между сбором, транспортировкой, хранением и обработкой информации продолжают быстро исчезать. Организации с сотнями офисов, разбросанных по всему миру, должны иметь возможность получать информацию о текущем состоянии своего самого удаленного офиса мгновенно, нажатием кнопки. По мере роста нашего умения собирать, обрабатывать и распространять информацию, потребности в средствах еще более сложной обработки информации растут все быстрее.
Хотя компьютерная индустрия еще довольно молода по сравнению с другими производствами (например, автомобильной или авиационной промышленностью), прогресс в сфере производства компьютеров был весьма впечатляющим. В первые два десятилетия своего существования компьютерные системы были сильно централизованными и располагались, как правило, в пределах одного помещения. Часто эта комната оборудовалась стеклянными стенами, сквозь которые посетители могли полюбоваться на великое электронное чудо. Компания среднего размера или университет могли позволить себе один-два компьютера, тогда как у очень крупных организаций их число могло достигать нескольких десятков. Сама мысль о том, что через какие-нибудь 40 лет гораздо более мощные компьютеры будут иметь размеры почтовой марки и производиться миллиардами, тогда казалась чистой фантастикой.
На слияние компьютеров и коммуникаций существенно влияет принцип организации компьютерных систем. Некогда доминирующее понятие «вычислительного центра» как комнаты с большим компьютером, к которому пользователи приносят свою работу для обработки, является теперь полностью устаревшим (хотя распространены информационные центры, содержащие тысячи интернет-серверов). Старая модель единственного компьютера, служащего всем вычислительным потребностям организации, была заменена на схему, при которой задание выполняет большое количество отдельных, но связанных компьютеров. Эти системы называют компьютерными сетями. Проектирование и организация этих сетей — тема нашей книги.
Мы будем использовать термин «компьютерная сеть», чтобы означать набор автономных компьютеров, связанных одной технологией. Два компьютера называют связанными, если они в состоянии обмениваться информацией. Соединение не обязательно должно представлять собой медный провод; может использоваться волоконная оптика, микроволны, инфракрасный диапазон и спутники связи. Сети бывают различных размеров, формы и конфигураций. Они обычно соединяются вместе, чтобы создать большие сети, самым известным примером сети сетей является Интернет.
В литературе существует путаница между понятиями компьютерная сеть и распределенная система. Основное их различие заключается в том, что в распределенной системе наличие многочисленных автономных компьютеров незаметно для пользователя. С его точки зрения, это единая связанная система. Обычно имеется набор программного обеспечения на определенном уровне (над операционной системой), которое называется связующим ПО и отвечает за реализацию этой идеи. Хорошо известный пример распределенной системы — это Всемирная паутина (World Wide Web), в которой, с точки зрения пользователя, все выглядит как документ (веб-страница).
В компьютерных сетях нет никакой единой модели, нет и программного обеспечения для ее реализации. Пользователи имеют дело с реальными машинами, и со стороны вычислительной системы не осуществляется никаких попыток связать их воедино. Скажем, если компьютеры имеют разное аппаратное и программное обеспечение, пользователь не сможет этого не заметить. Если он хочет запустить программу на удаленной машине, ему придется явно зарегистрироваться на ней и явно дать задание на запуск.
На самом деле, распределенная система является программной системой, построенной на базе сети. Эта программная система обеспечивает высокую степень связности и прозрачности элементов. Таким образом, различие между компьютерной сетью и распределенной системой заключается в программном обеспечении (особенно в операционной системе), а не в аппаратуре.
Тем не менее эти два понятия имеют очень много общего. Например, как компьютерная сеть, так и распределенная система занимаются перемещением файлов. Разница заключается в том, кто вызывает эти перемещения — система или пользователь.
Хотя основной темой этой книги являются сети, многие разделы будут касаться и распределенных систем. Дополнительную информацию о распределенных системах см. [Tannenbaum, van Steen, 2007].
1.1. Применение компьютерных сетей