Сеть на практике


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

Предположим, что пользователь, имеющий подключение к Интернету, хочет попасть на веб-сайт Yahoo! Для этого он запускает свой веб-броузер и набирает адрес URL.

Веб-броузер должен знать, как взаимодействовать с транспортным уровнем, лежащим ниже. После преобразования запроса пользователя в соответствующую форму броузер просит транспортный уровень установить соединение с указанным IP-адресом, с номером порта 80. (Поборники точности могут заметить, что я пропустил этап определения IP-адреса по доменному имени, но это не такое большое отступление, которое только усложнило бы пример.)

Транспортный уровень анализирует запрос, поступивший от броузера. Поскольку приложение обратилось с запросом на установление соединения TCP, транспортный уровень выделяет для этого соответствующие системные ресурсы. Запрос разбивается на части допустимого размера, которые передаются ниже, сетевому уровню.

Сетевой уровень не думает о реальном запросе. Ему вручили блок данных, который он должен доставить по указанному адресу через Интернет. Как почтальон, доставляющий письма, ничего не зная об их содержимом, сетевой уровень просто упаковывает данные TCP в «конверт» с соответствующим адресом. Получившийся блок данных называется пакетом. Далее сетевой уровень передает пакеты на уровень физического протокола.

Уровень физического протокола совершенно не интересует содержимое пакета. Его не интересуют ни IP-адрес, ни маршрут движения пакета. Ему вручили блок нулей и единиц, и он должен выполнить задание по доставке их через сеть. Единственное, о чем он знает, — это как выполнить передачу. Уровень физического протокола может добавлять в пакет дополнительную информацию, которая будет использоваться на физическом уровне, создавая тем самым кадр (frame). Наконец, все это передается с уровня физического протокола в провода, в эфир или другую среду передачи информации.

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

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

На пути данных тип физического носителя может меняться. Например, линия T1 может перейти в оптоволоконную линию DS3, которая в свою очередь стыкуется с линией OC192, протянутой по всей стране. Благодаря многоуровневой организации и абстракции ни ваш компьютер, ни ваш пользователь не обязаны что-либо знать о таких вещах.

Достигнув места назначения — компьютера на другой стороне соединения, кадр начинает обратный путь по стеку протоколов. Физический уровень принимает нули и единицы и передает их на уровень физического протокола. Уровень физического протокола очищает кадры от заголовков Ethernet и передает получившиеся пакеты транспортному уровню. На транспортном уровне пакеты собираются в поток данных, который затем направляется приложению, в данном случае — веб-серверу. Приложение обрабатывает запрос и возвращает ответ, который опускается вниз по стеку протоколов и отправляется в сеть, где они, в случае необходимости, перепрыгивают через границы различных физических протоколов. Такой процесс подразумевает огромный объем работы, часто только лишь для того, чтобы вы могли получить сообщение об ошибке «404 Page Not Found» (запрошенная страница не найдена).

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

Каждый внутри другого?

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

Комментарии запрещены.