Господа, начните, пожалуйста, с самой сути! Умоляю вас, не надо деталей!

Артур Конан Дойль

                           Меняйте ваши мнения, сохраняйте принципы: меняйте листья, сохраняйте корни.

Виктор Гюго

Глава 1. Основы построения сетей

Понимание принципов важно при изучении любого явления или объекта, оно помогает осознать и более эффективно использовать отдельные факты и детали, связать их в стройную систему. Именно об этом говорит известное выражение «Знание нескольких принципов освобождает от запоминания множества фактов».

Когда вы приступаете к изучению конкретных сетевых технологий, таких как Ethernet, IP или ATM, то очень скоро начинаете понимать, что у этих технологий много общего. Это общее состоит в том, что разные технологии призваны решать сходные задачи. К примеру, практически в любой сетевой технологии решаются среди прочих такие задачи, как выбор эффективной системы адресации, способной компактно и в то же время однозначно идентифицировать многочисленные узлы и пользователей сети, нахождение маршрута между конечными узлами сети с произвольной структурой и т. п.

Общие задачи естественным образом породили и общие подходы к их решению. Так, например, в основе многих систем адресации лежит фундаментальный принцип иерархической организации адресов. А для нахождения рационального маршрута во многих технологиях используется принцип кратчайшего маршрута.

Понятно, что схожесть этих и других, общих для разных технологий задач, не делает их тождественными. Они имеют специфические особенности, присущие каждой технологии, так что нельзя механически перенести знания из одной технологии в другую. Например, как бы глубоко вы не разбирались в адресации, маршрутизации и мультиплексировании в IP-сетях, это не позволит вам в деталях судить о том, как решаются эти задачи в сетях ATM. Однако знание базовых принципов, на которых построены обе эти технологии, сделает процесс их изучения более легким и эффективным.

Сеть с высоты птичьего полета

Веб-серфинг как первый опыт

Скорее всего, наши читатели впервые познакомились с компьютерными сетями, получив доступ в Интернет для поиска и просмотра информации. Именно поэтому мы и начнем изучение сетей, опираясь на этот, возможно, минимальный опыт наших читателей.

Для доступа к информационным ресурсам Интернета необходимо, чтобы ваш компьютер был подключен к Сети. Мы сейчас не будем подробно останавливаться на том, что стоит за словом «подключен», отметим лишь, что это означает, что на компьютере установлены все программные и аппаратные средства, необходимые для работы в Сети, и существует физическое соединение (проводное или беспроводное) этого компьютера с одним из провайдеров Интернета, то есть компанией, компьютерная сеть которой является частью Интернета.

Для поиска и просмотра информации в Интернете на компьютере должна быть установлена программа под названием веб-браузер (web browser). Существуют различные браузеры, и с точки зрения пользователя все они работают примерно одинаково. На рис. 1.1 показано окно, которое выводит на экран новый браузер Chrome компании Google, выпущенный в сентябре 2008 года. В верхней части экрана расположено поле адреса, то есть поле, в котором вы набираете имя интересующего вас веб-сайта (web site) — источника информации, находящегося в Интернете. Пусть в данном случае вы обратились к сайту www.olifer.co.uk — информационному ресурсу авторов этой книги.

Рис. 1.1. Главное окно браузера Chrome компании Google

После того как вы набрали имя и нажали клавишу Enter, ваш компьютер отправляет в сеть запрос к указанному вами источнику информации. Запрос путешествует по Сети, пока не достигнет компьютера, на котором расположен веб-сайт www.olifer.co.uk. Этот запрос, как и все остальные запросы, поступающие на данный веб-сайт, принимается и обслуживается специальной программой, называемой веб-сервером (web server) По отношению к веб-серверу браузеры выступают клиентами. В ответ на поступивший запрос веб-сервер сайта www.olifer.co.uk передает информацию, размещенную на его главной странице, вашему браузеру, который и выводит ее на экран вашего компьютера в том виде, как показано на рисунке..

Интернет. Вид сверху

Давайте теперь попробуем взглянуть «сверху» на то, что же происходило в вашем компьютере и в Интернете в те несколько секунд (или, если вам не повезло, минут), в течение которых обрабатывался ваш запрос. Наш «птичий полет» будет проходить над картой Интернета, но представить такую карту на бумаге сегодня весьма непросто. Дело в том, что современный Интернет — это сеть, связывающая между собою сети, расположенные по всему миру (поэтому Интернет называют также сетью сетей). 20 лет назад, когда число сетей, объединенных в Интернет, исчислялось сотнями, такую карту еще можно было представить в виде рисунка на одной странице (рис. 1.2).

Рис. 1.2. Структура Интернета в 1987 году

На этом рисунке каждый овал представляет собой одну сеть, кружок — маршрутизатор, то есть коммуникационное устройство, которое передает информацию между сетями, а линии соответствуют физическим каналам связи, таким как, например, кабели. Каждая из сетей, представленных на рис. 1.2, также имеет свою структуру, которая во многом повторяет структуру Интернета, так как в ней тоже есть линии связи и коммуникационные устройства, только вместо сетей они соединяют конечные узлы. В качестве конечных узлов могут выступать самые разнообразные вычислительные устройства, отличающиеся функциональной специализацией (телефоны, компьютеры, встроенные микропроцессорные устройства), а также размерами и вычислительной мощностью (ноутбуки, персональные компьютеры, мэйнфреймы).

В зависимости от того, какую роль играют в сети конечные узлы, различают серверы, на которых хранится информация, и клиентские узлы, с помощью которых пользователи получают доступ к информации, хранящейся на серверах.

Из рисунка хорошо видно, что в 1987 Интернет не имел какой-либо регулярной структуры, сети были связаны между собой достаточно хаотичным образом и между многими из них существовало несколько возможных маршрутов обмена данными. Такая децентрализованная структура Интернета была выбрана не случайно, это был один из архитектурных принципов его построения, и этот принцип хорошо зарекомендовал себя в процессе бурного роста Интернета, поэтому и сегодня структура Интернета остается такой же хаотичной, какой была на заре его развития.

Однако сейчас визуально представить Интернет стало нетривиальной задачей, потому что Интернет превратился во Всемирную паутину, связывающую миллионы сетей. Над визуализацией Интернета работают ученые и энтузиасты, и один из вариантов такого представления, полученый в результате  анализа компьютерной программой трафика между узлами сети, показан на рис. 1.3.

Рис. 1.3. Интернет сегодня

Полученное таким образом изображение, наверное, более всего похоже на картину звездного неба, где звездами являются сети.

Другой аналогией, помогающей представить сегодняшний Интернет в целом, могла бы стать всемирная карта дорог, включающая дороги всех типов: магистральные, проселочные, городские улицы и т. п. Перекрестки дорог в этой аналогии соответствуют коммуникационным устройствам, которые направляют машины (данные) на ту или иную дорогу.

Вы можете пользоваться любой из этих аналогий, главное — чтобы она помогла вам представить современный Интернет как очень большое количество компьютеров, связанных между собой сложной сетью каналов связи с нерегулярной и избыточной структурой через промежуточные узлы — маршрутизаторы. И где-то к этой гигантской паутине подключены клиентский и серверный компьютеры из нашего примера. При этом они могут располагаться как на разных континентах, так и в одном и том же здании, принцип обмена информацией от этого не изменится, изменится только количество пройденных маршрутизаторов и каналов связи.

Путешествие пакетов по Сети

Итак, вы ввели адрес http://www.olifer.co.uk и нажали клавишу Enter. Представим, что мы наделены способностью видеть, как данные перемещаются по сети, а также отличать «свои» данные (то есть те, которые связаны с нашей операцией), от всех остальных. В первую очередь мы заметим, что данные передаются по сети не в виде сплошного потока битов, а порциями — пакетами. Каждый пакет начинается с заголовка — набора служебной информации, такой, например, как адреса отправителя и получателя.

Некоторые компьютеры становятся активным периодически, направляя в сеть один или несколько пакетов и после этого замирая на довольно длительное время — это пользовательские компьютеры, которые активизируются синхронно с действиями пользователя. Другие компьютеры постоянно активны, выбрасывая в сеть тысячи пакетов в секунду — это серверы, которые обслуживают запросы пользователей, снабжая их информацией. В целом передвижение пакетов по сети очень напоминает автомобильное движение — некоторые каналы и марштуризаторы загружены почти до предела или даже перегружены, в то время как другие свободны и простаивают.

Но вот появились и первые «наши» пакеты, пусть они будут для нас белыми и черными (рис. 1.4). Белые — это те, которые идут от нашего клиентского компьютера, а черные — те, которые ему адресованы. Но вот какая странность: первый белый пакет направился отнюдь не в сторону сервера www.olifer.co.uk, как можно было бы предположить, а быстро «свернул» к серверу, который находится в сети нашего провайдера. То же произошло с первым черным пакетом — он пришел в наш компьютер не от сервера www.olifer.co.uk, а от того же сервера провайдера.

Рис. 1.4. Прохождение пакетов через Интернет

И только после такого предварительного обмена пакетами мы, наконец, увидели цепочку белых пакетов, идущих от нашего компьютера к серверу www.olifer.co.uk, а также более многочисленные пульсирующие колонны черных пакетов, идущих от сервера в обратном направлении. Присмотревшись к содержанию черных пакетов, мы видим, что это кусочки нескольких картинок, из которых состоит первая страница сайта www.olifer.co.uk. По мере поступления черных пакетов на экране нашего компьютера из этих кусочков складывается полное изображение страницы.

Однако что же все-таки происходило в первые мгновения после нажатия клавиши Enter? Может быть, сеть дала сбой, и первый пакет просто заблудился? Или же это нормальная ситуация? Отгадка кроется в тех белых пакетах, которые потом пошли к нужному серверу. Если мы посмотрим на них внимательнее, то заметим, что заголовки всех этих пакетов содержат один и тот же адрес назначения — 69.73.175.185. Адреса такого вида называются IP-адресами. Именно IP-адрес 69.73.175.185, а не имя www.olifer.co.uk использовали маршрутизаторы Интернета, чтобы направить белые пакеты в правильном направлении. Прежде, чем отправить пакеты в Сеть, браузер должен был получить ответ на вопрос «Какой IP-адрес соответствует имени www.olifer.co.uk?» Как раз этот вопрос и содержался в самом первом белом пакете, отправленном браузером по заранее известному ему адресу сервера провайдера, который хранит таблицу соответствия имен и IP-адресов (так называемый DNS-сервер). А первый черный пакет доставил браузеру ответ DNS-сервера в форме «Это адрес 69.73.175.185».

Разрешив первую загадку, посмотрим теперь на белые и черные пакеты, которые передавались через Интернет между клиентским и серверным компьютерами. Первое, что можно о них сказать — каждый белый пакет порождал один или несколько черных пакетов в ответ. То есть между клиентом и сервером происходил диалог — клиент что-то запрашивал у сервера, а сервер отвечал. Такие диалоги в сети происходят по определенным правилам, которые называются протоколом. Диалог между браузером (веб-клиентом) и веб-сервером всегда происходит по специально разработанному для этой цели стандартному протоколу HTTP (Hypertext Transfer Protocol — протокол передачи гипертекста).

Первый белый пакет, достигший сервера www.olifer.co.uk, сообщил ему, какими возможностями по отображению информации располагает клиент, в частности, какого формата картинки он может воспроизводить на экране и поддерживает ли он Flash-анимацию. В пакете также содержался запрос к серверу относительно структуры данных, размещенных на сайте. Сервер ответил (посылая черные пакеты), что первая страница сайта www.olifer.co.uk состоит из нескольких элементов, в том числе трех картинок: packet.gif, Title_rus.gif и Title_eng.gif. Кроме того, веб-сервер передал содержание текстовых элементов страницы, а также сведения о себе, например, о том, какое программное обеспечение поддерживает этот сайт и какие режимы передачи информации он использует.

После этот браузер нашего клиентского компьютера по очереди запросил передачу каждой из трех картинок. Заметим, что передача каждой картинки потребовала пересылки достаточно большого числа черных пакетов, при этом чем больше картинка, тем больше пакетов нужно, чтобы ее передать. Это легко объяснить, если знать, что в компьютерных сетях размер пакета ограничен, как правило, значением в 1500 байт. Использование пакетов сравнительно небольших размеров — один из краеугольных принципов работы пакетных сетей. За счет этого сеть может более эффективно использовать каналы связи, так как они не монополизируются надолго одной парой абонентов (на все время передачи «длинного» пакета), а благодаря поочередной передачи «коротких» пакетов, разделяются между многими абонентами.

Современные скорости передачи битов данных по каналам связи очень высоки, например, сегодня 10 Гбит/с (гигабит равен тысяче миллионов битов) — это обычная скорость магистральных каналов Интернета. Пакеты путешествуют по сети очень быстро, среднее время оборота пакета (то есть его передачи от клиента серверу и обратно) обычно составляет от нескольких десятков до нескольких сотен миллисекунд. Поэтому страница веб-сайта на экране вашего браузера возникает чаще всего без особых задержек, несмотря на большое количество пакетов, требующихся для ее передачи через сеть. Например, первая страница сайта www.olifer.co.uk загрузилась в пробном тесте, который мы провели во время написания этих строк, за полторы секунды, а на ее передачу было затрачено около 300 пакетов. Географическое расстояние между точками, где были расположены клиентский и серверный компьютеры в этом эксперименте, составило около 8 тысяч километров. Но сказать наверняка, сколько километров проходили пакеты по каналам связи, непросто, так как выбор маршрута в Интернете выполняется каждым маршрутизатором независимо от других, и критерии такого выбора часто зависят от  решения администратора сети каждого отдельного провайдера. Проще выяснить, сколько промежуточных маршрутизаторов было пройдено — в данном случае их было 15.

На этом мы закончим наше «поверхностное» наблюдение за работой Интернета. Наверняка, эта первая попытка описать работу компьютерной сети породила у читателя множество вопросов, и это естественно. Странно, если бы было по-другому: ведь мы только начинаем изучение компьютерных сетей, и все еще впереди. После того как мы рассмотрели компьютерную сеть «с высоты птичьего полета», давайте попробуем «нырнуть на дно» сети и посмотреть более детально, что же происходит там «в глубине», на уровне элементарного соединения двух компьютеров.