какие две части сетевого адреса используют маршрутизаторы для пересылки данных по сети
«Протокол TCP/IP»
91. Для чего нужны номера портов?
• Они отслеживают различные переговоры, одновременно ведущиеся в сети
92. Если предположить, что МАС-адреса нет в ARP-таблице, то как отправитель находит МАС-адрес пункта назначения?
• Посылает широковещательное сообщение по всей локальной сети
93. Зачем в протоколе TCP используются открытые соединения с трехсторонним квитированием?
• Для восстановления данных, если потом возникнут проблемы
94. Зачем нужна проверка, выполняемая протоколом ICMP?
• Чтобы выяснить, достигают ли сообщения пункта назначения, и если нет — для определения возможных причин этого
95. Какие протоколы использует протокол UDP для обеспечения надежности?
• Протоколы уровня приложений
96. Какова роль скользящего окна в протоколе TCP?
• Оно позволяет во время TCP-сеанса динамически согласовывать размер окна, что приводит к более эффективному использованию полосы пропускания
97. Какое из приведенных ниже определений лучше всего описывает смысл параметра «размер окна»?
• Количество сообщений, которое может передаваться в процессе ожидания подтверждения
98. Какое из приведенных ниже определений лучше всего описывает цель этажерочных структур протоколов группы TCP/IP?
• Поддерживают все стандартные протоколы физического и канального уровней
99. Какое из приведенных ниже определений наилучшим образом описывает протокол TCP/IP?
• Группа протоколов, которая может использоваться для организации взаимодействия произвольного количества взаимосвязанных сетей
100. Какой из следующих протоколов относится к транспортному уровню?
• UDP
«Сетевой уровень и маршрутизация»
101. Из-за чего возникает маршрутизация по кругу?
• После видоизменения сетевого комплекса имеет место низкая сходимость
102. Как сетевой уровень посылает пакеты от источника в пункт назначения?
• Используя таблицу IP-маршрутизации
103. Какая функция позволяет маршрутизаторам оценивать имеющиеся маршруты к пункту назначения и устанавливать предпочтительный способ обработки пакетов?
• Функция определения пути
104. Какие две части адреса используются маршрутизатором для передачи трафика по сети?
• Сетевой адрес и адрес хост-машины
105. Каково одно из преимуществ алгоритмов, основанных на использовании вектора расстояния?
• Просты в вычислении
Основные принципы работы сетевой маршрутизации
Маршрутизация в IP-сетях
Маршрутизация служит для приема пакета от одного устройства и передачи его по сети другому устройству через другие сети. Если в сети нет маршрутизаторов, то не поддерживается маршрутизация. Маршрутизаторы направляют (перенаправляют) трафик во все сети, составляющие объединенную сеть.
Для маршрутизации пакета маршрутизатор должен владеть следующей информацией:
Маршрутизатор узнает об удаленных сетях от соседних маршрутизаторов или от сетевого администратора. Затем маршрутизатор строит таблицу маршрутизации, которая описывает, как найти удаленные сети.
Если сеть подключена непосредственно к маршрутизатору, он уже знает, как направить пакет в эту сеть. Если же сеть не подключена напрямую, маршрутизатор должен узнать (изучить) пути доступа к удаленной сети с помощью статической маршрутизации (ввод администратором вручную местоположения всех сетей в таблицу маршрутизации) или с помощью динамической маршрутизации.
Динамическая маршрутизация — это процесс протокола маршрутизации, определяющий взаимодействие устройства с соседними маршрутизаторами. Маршрутизатор будет обновлять сведения о каждой изученной им сети. Если в сети произойдет изменение, протокол динамической маршрутизации автоматически информирует об изменении все маршрутизаторы. Если же используется статическая маршрутизация, обновить таблицы маршрутизации на всех устройствах придется системному администратору.
Что такое маршрутизатор (шлюз, gateway)?
Маршрутизатором, или шлюзом, называется узел сети с несколькими IP-интерфейсами (содержащими свой MAC-адрес и IP-адрес), подключенными к разным IP-сетям, осуществляющий на основе решения задачи маршрутизации перенаправление дейтаграмм из одной сети в другую для доставки от отправителя к получателю.
Маршрутизаторы представляют собой либо специализированные вычислительные машины, либо компьютеры с несколькими IP-интерфейсами, работа которых управляется специальным программным обеспечением.
Процесс IP-маршрутизации
Кадр, сгенерированный интерфейсом Ethernet 1 маршрутизатора, имеет аппаратный адрес источника от интерфейса Ethernet 1 и аппаратный адрес назначения для сетевого адаптера хоста В. Важно отметить, что, несмотря на изменения аппаратных адресов источника и назначения, в каждом передавшем пакет интерфейсе маршрутизатора, IP-адреса источника и назначения никогда не изменяются. Пакет никоим образом не модифицируется, но меняются кадры.
В крупных сетях процесс происходит аналогично, но пакету придется пройти больше участков по пути к хосту назначения.
Таблицы маршрутизации
В стеке TCP/IP маршрутизаторы и конечные узлы принимают решения о том, кому передавать пакет для его успешной доставки узлу назначения, на основании так называемых таблиц маршрутизации (routing tables).
Таблица представляет собой типичный пример таблицы маршрутов, использующей IP-адреса сетей, для сети, представленной на рисунке.
Таблица маршрутизации для Router 2
В таблице представлена таблица маршрутизации многомаршрутная, так как содержится два маршрута до сети 116.0.0.0. В случае построения одномаршрутной таблицы маршрутизации, необходимо указывать только один путь до сети 116.0.0.0 по наименьшему значению метрики.
Как нетрудно видеть, в таблице определено несколько маршрутов с разными параметрами. Читать каждую такую запись в таблице маршрутизации нужно следующим образом:
Чтобы доставить пакет в сеть с адресом из поля Сетевой адрес и маской из поля Маска сети, нужно с интерфейса с IP-адресом из поля Интерфейс послать пакет по IP-адресу из поля Адрес шлюза, а «стоимость» такой доставки будет равна числу из поля Метрика.
Для отправки пакета следующему маршрутизатору требуется знание его локального адреса, но в стеке TCP/IP в таблицах маршрутизации принято использование только IP-адресов для сохранения их универсального формата, не зависящего от типа сетей, входящих в интерсеть. Для нахождения локального адреса по известному IP-адресу необходимо воспользоваться протоколом ARP.
Специфичный для узла маршрут содержит вместо номера сети полный IP-адрес, то есть адрес, имеющий ненулевую информацию не только в поле номера сети, но и в поле номера узла. Предполагается, что для такого конечного узла маршрут должен выбираться не так, как для всех остальных узлов сети, к которой он относится. В случае, когда в таблице есть разные записи о продвижении пакетов для всей сети N и ее отдельного узла, имеющего адрес N,D, при поступлении пакета, адресованного узлу N,D, маршрутизатор отдаст предпочтение записи для N,D.
Записи в таблице маршрутизации, относящиеся к сетям, непосредственно подключенным к маршрутизатору, в поле «Метрика» содержат нули («подключено»).
Алгоритмы маршрутизации
Основные требования к алгоритмам маршрутизации:
Существуют различные алгоритмы построения таблиц для одношаговой маршрутизации. Их можно разделить на три класса:
Независимо от алгоритма, используемого для построения таблицы маршрутизации, результат их работы имеет единый формат. За счет этого в одной и той же сети различные узлы могут строить таблицы маршрутизации по своим алгоритмам, а затем обмениваться между собой недостающими данными, так как форматы этих таблиц фиксированы. Поэтому маршрутизатор, работающий по алгоритму адаптивной маршрутизации, может снабдить конечный узел, применяющий алгоритм фиксированной маршрутизации, сведениями о пути к сети, о которой конечный узел ничего не знает.
Простая маршрутизация
Это способ маршрутизации не изменяющийся при изменении топологии и состоянии сети передачи данных (СПД).
Простая маршрутизация обеспечивается различными алгоритмами, типичными из которых являются следующие:
В целом, простая маршрутизация не обеспечивает направленную передачу пакета и имеет низкую эффективности. Основным ее достоинством является обеспечение устойчивой работы сети при выходе из строя различных частей сети.
Фиксированная маршрутизация
Этот алгоритм применяется в сетях с простой топологией связей и основан на ручном составлении таблицы маршрутизации администратором сети. Алгоритм часто эффективно работает также для магистралей крупных сетей, так как сама магистраль может иметь простую структуру с очевидными наилучшими путями следования пакетов в подсети, присоединенные к магистрали, выделяют следующие алгоритмы:
Адаптивная маршрутизация
Это основной вид алгоритмов маршрутизации, применяющихся маршрутизаторами в современных сетях со сложной топологией. Адаптивная маршрутизация основана на том, что маршрутизаторы периодически обмениваются специальной топологической информацией об имеющихся в интерсети сетях, а также о связях между маршрутизаторами. Обычно учитывается не только топология связей, но и их пропускная способность и состояние.
Адаптивные протоколы позволяют всем маршрутизаторам собирать информацию о топологии связей в сети, оперативно отрабатывая все изменения конфигурации связей. Эти протоколы имеют распределенный характер, который выражается в том, что в сети отсутствуют какие-либо выделенные маршрутизаторы, которые бы собирали и обобщали топологическую информацию: эта работа распределена между всеми маршрутизаторами, выделяют следующие алгоритмы:
Показатели алгоритмов (метрики)
Маршрутные таблицы содержат информацию, которую используют программы коммутации для выбора наилучшего маршрута. Чем характеризуется построение маршрутных таблиц? Какова особенность природы информации, которую они содержат? В данном разделе, посвященном показателям алгоритмов, сделана попытка ответить на вопрос о том, каким образом алгоритм определяет предпочтительность одного маршрута по сравнению с другими.
В алгоритмах маршрутизации используется множество различных показателей. Сложные алгоритмы маршрутизации при выборе маршрута могут базироваться на множестве показателей, комбинируя их таким образом, что в результате получается один гибридный показатель. Ниже перечислены показатели, которые используются в алгоритмах маршрутизации:
Длина маршрута
Длина маршрута является наиболее общим показателем маршрутизации. Некоторые протоколы маршрутизации позволяют администраторам сети назначать произвольные цены на каждый канал сети. В этом случае длиной тракта является сумма расходов, связанных с каждым каналом, который был траверсирован. Другие протоколы маршрутизации определяют «количество пересылок» (количество хопов), т. е. показатель, характеризующий число проходов, которые пакет должен совершить на пути от источника до пункта назначения через элементы объединения сетей (такие как маршрутизаторы).
Надежность
Надежность, в контексте алгоритмов маршрутизации, относится к надежности каждого канала сети (обычно описываемой в терминах соотношения бит/ошибка). Некоторые каналы сети могут отказывать чаще, чем другие. Отказы одних каналов сети могут быть устранены легче или быстрее, чем отказы других каналов. При назначении оценок надежности могут быть приняты в расчет любые факторы надежности. Оценки надежности обычно назначаются каналам сети администраторами. Как правило, это произвольные цифровые величины.
Задержка
Под задержкой маршрутизации обычно понимают отрезок времени, необходимый для передвижения пакета от источника до пункта назначения через объединенную сеть. Задержка зависит от многих факторов, включая полосу пропускания промежуточных каналов сети, очереди в порт каждого маршрутизатора на пути передвижения пакета, перегруженность сети на всех промежуточных каналах сети и физическое расстояние, на которое необходимо переместить пакет. Т. к. здесь имеет место конгломерация нескольких важных переменных, задержка является наиболее общим и полезным показателем.
Полоса пропускания
Полоса пропускания относится к имеющейся мощности трафика какого-либо канала. При прочих равных показателях, канал Ethernet 10 Mbps предпочтителен любой арендованной линии с полосой пропускания 64 Кбайт/с. Хотя полоса пропускания является оценкой максимально достижимой пропускной способности канала, маршруты, проходящие через каналы с большей полосой пропускания, не обязательно будут лучше маршрутов, проходящих через менее быстродействующие каналы.
Коммуникационные технологии (Компьютерные сети)
Темы адресации узлов сети TCP/IP и маршрутизации пакетов данных, путешествующий по этой сети, являются очень обширными, поэтому в этой главе мы рассмотрим лишь самые общие их понятия.
Для начала давайте посмотрим, как строится глобальная сеть TCP/IP. Допустим, у нас имеется три локальных сети, две из которых построены на технологии Ethernet и одна на технологии FDDI, а также 2 сети, построенные на технологии глобальной сети FrameRelay. Сеть, построенная из комбинации таких сетей, может являться фрагментом TCP/IP сети, а может и полностью представлять всю глобальную сеть TCP/IP, если её граничные маршрутизаторы не будут иметь выхода к другим сетям. Для технологии TCP/IP все сети, входящие в её состав, даже если их технологии сами по себе не являются технологиями локальных сетей (в нашем случае это сети FrameRelay), считаются локальными подсетями, между которыми для стека TCP/IP нет принципиальной разницы, поэтому мы их также будем называть локальными подсетями. Каждая подсеть имеет свой собственный способ адресации своих узлов, входящих в данную подсеть. Эти адреса должны быть уникальны в пределах своей подсети, но могут совпадать с адресами из других подсетей. Адрес, используемый в стеке протоколов TCP/IP, называется IP-адресом. MAC-адрес, используемый для адресации узлов Ethernet-сети, является абсолютно уникальным и заложен самим производителем оборудования, а вот локальные IP-адреса узлов различных сетей, которые не взаимодействуют друг с другом, очень часто совпадают. В пределах своей локальной сети эти адреса, назначаемые системным администратором в произвольном порядке, позволяют совершенно однозначно идентифицировать их носитель – любой узел сети. Но для функционирования глобальной сети, состоящей из таких локальных подсетей, назначение каждому узлу своего уникального IP-адреса становится необходимостью. Именно по этой причине для выхода в интернет необходимо иметь свой уникальный на всю мировую сеть IP-адрес. В стеке TCP/IPэта задача решена достаточно эффективно: каждая подсеть имеет свой набор (пул) адресов своих узлов, а, кроме этого, у каждой подсети имеется также и свой собственный адрес. Таким образом, для однозначной идентификации каждого узла такой подсети используется пара № подсети-№ узла. Например, если № подсети 10.12, а № узла – 56.16, то IP-адрес данного узла будет такой: 10.12.56.16. Любой IP-адрес протокола IPверсии №4 (до сих пор эта версия наиболее распространена) состоит из 4-х байт, по одному байту на число, которое обычно представляется в десятичном формате. Если число представлять в двоичном формате, то мы должны были бы записать между точками восьмиразрядные числа IP-адреса. Таким образом, каждое из 4-х чисел может иметь 2 8 =256 различных значений от 0 и до 255. В этом случае в подсети 10.12 можно однозначно адресовать 2 16 =65536 различных узлов (за вычетом нескольких адресов, так как их значения используются для других нужд). Если подсеть мелкого масштаба, ей может назначаться другой номер, например 10.12.35, а номера узлов будут находиться в диапазоне с 0 по 255-й (за исключением двух зарезервированных номеров, то есть всего 254 узла), например 76. Таким образом, IP-адрес какого-либо узла может быть задан так: 10.12.35.76.
Итак, для перемещения и маршрутизации пакетов по глобальной сети используются IP-адреса, которые попадают в передаваемый пакет данных на сетевом уровне, а для непосредственной передачи между маршрутизаторами или самому узлу назначения используются средства и адреса той подсети, которая в данный момент играет роль переносчика передаваемых данных (эти адреса, как мы знаем, попадают в кадр при его формировании на канальном уровне).
IP-адрес и маска подсети.
Рассмотрим подробнее, как же маршрутизатор определяет, где в IP-адресе номер подсети, а где номер самого узла – IP-адрес компьютера, маршрутизатора, сетевой камеры, сетевого принтера или любого другого члена этой подсети?
Более того, как же конфигурировать маршрутизаторы огромных подсетей, которых по всему миру сравнительно немного, например, магистральные маршрутизаторы России, когда число узлов такой огромной подсети будет достигать значение миллионов? Видно, что в данном случае IP-адрес должен отводить для номера подсети совсем немного разрядов (например, один первый байт (номера подсетей будут принадлежать диапазону 1-254)), а для нумерации узлов все 3 байта (максимальное количество узлов тогда будет 16777212 узлов). Как видим, в разных случаях нам нужно совершенно разное, даже противоположное, разбиение единого IP-адреса на части номера подсети и номера самого узла данной подсети.
Можно было бы увеличить разрядность IP-адреса и сделать его состоящим из, например 8 байт, но в таком случае было бы неоправданно по информационным затратам использовать такие адреса, так как и в случае больших, и в случае малых подсетей, будут использоваться вхолостую ненужные для их адресации лишние байты, вставляемые в заголовки каждого IP-пакета, передаваемого по сети.
Замечательным решением является использование маски подсети вместе с IP-адресом. Маска подсети позволяет в каждом отдельном случае самому сетевому администратору разграничить IP-адрес на номер подсети и номер сети в нужном ему соотношении. Для того, чтобы определить номер подсети, используется последовательность единиц. В том месте, где заканчиваются единицы, начинается номер самого узла этой подсети. Рассмотрим это на следующем примере:
Допустим, IP-адрес узла такой:
189.58.23.4, или в двоичном виде 10111101.00111010.00010111.00000100
Если маска подсети будет такой: 11111111.11111111.11111111.00000000, или в десятичном виде: 255.255.255.0
Как работает интернет. Для анархистов (и не только). Часть 2. Маршрутизация
В предыдущей части мы рассмотрели возможности количественного роста компьютерных сетей и возникающие при этом проблемы. И пришли к выводу, что, чтобы уйти от этих проблем, необходим качественный скачок.
Он делается за счет ввода адреса более высокого, 3 уровня, ip-адреса. Об этом мы и поговорим в данной статье.
Чтобы не углубляться в историю развития вопроса, пропустим промежуточные шаги развития концепции (такие как классовые сети, например) и опишем сразу схему, к которой в итоге все пришло.
Ниже будет рассматриваться понятие инкапсуляции.
Визуализировать ее можно следующим образом — вы хотите отправить письмо. Вы знаете, что есть почтальоны, которые переносят письма от одной коробки к другой, а есть сортировщики, которые уже определяют, куда направить письмо, чтобы оно достигло получателя (т.е. в какую коробку далее его переложить).
Так вот, почтальонам не надо знать адрес и разбираться в каракулях кому и куда, им достаточно знать информацию — «взять в одной коробке — положить в другую». Поэтому, чтобы упростить (и ускорить) им работу, и применяется инкапсуляция — чтобы каждый участник процесса быстро и без особых затруднений находил необходимую ему информацию и мог ее изменять.
То есть вы пишете письмо на листке бумаги и кладете в конверт. На конверте пишете адрес получателя и отправителя. Далее этот конверт вы кладете во второй конверт, на котором пишете «из почтового ящика дома 8 — до коробки с письмами на почте».
Почтальон, который заберет письмо, прочитает эту инструкцию и отнесет письмо на почту. Там сортировщик возьмет письмо из коробки, откроет внешний конверт, прочитает адрес. Определит, куда его надо дальше нести, положит в новый конверт, на котором снова напишет краткие инструкции — из коробки А в коробку Б. И так далее.
Если же бы мы писали весь адрес на одном конверте, то мало того, что почтальонам приходилось бы вчитываться, чтобы определить инструкции конкретно для себя (и тратить на это время). Так еще и сортировщикам каждый раз приходилось бы не просто менять конверт с короткой инструкцией для почтальона, а заново переписывать всю полную цепочку, что также отнимало бы много времени.
Итак, каждому пользователю сети, помимо позывного, присваивается (процедуру присвоения адреса пока опустим) еще искусственный адрес, состоящий из двух частей — собственно, ip-адрес и маска подсети. А также вводится понятие маршрутизации.
Адрес (IP-адрес, адрес 3 уровня модели OSI) — это уникальный идентификатор пользователя сети (как устройства, т.е. компьютера). Фактически, когда мы в прошлой статье описывали ARP (процесс выяснения позывного, который будет использоваться для перестукивания), в качестве описания соседа-анархиста в реальных сетях выступает именно ip-адрес. То есть компьютеры не запрашивают — кто здесь Celeron с 2 гигабайтами оперативной памяти, а спрашивают — кто здесь с адресом 1.1.1.1? Ответь, какой у тебя позывной/MAC? (откуда компьютеры узнают, какой именно ip им нужен — обсудим позже).
Маска подсети — определяет, какая часть из этого идентификатора определяет не только конкретного пользователя, но и его расположение в глобальной сети.
Таблица маршрутизации — содержит соответствие между адресом (или целой группой адресов, подсетью) получателя и промежуточной точкой (т.е. ее адресом), через которую этот получатель доступен.
Таким образом, этот новый идентификатор позволяет не просто отстукивать сообщения «на деревню дедушке», но определять путь передачи и минимизировать паразитный трафик.
Тут важно упомянуть, что любой пользователь сети (компьютер) может иметь несколько адресов. Причем логический адрес (IP) в общем случае присваивается определенному физическому интерфейсу-трубе. И, хотя самой распространенной ситуацией является та, когда одной трубе соответствует один адрес — также можно настраивать и несколько адресов на один интерфейс.
Особенно это важно, когда речь идет о маршрутизаторах, о которых ниже. Когда определяется, куда пересылать сообщение, учитывается не просто кто является следующей точкой передачи (next hop), но и то, через какой интерфейс самого пользователя до этого next hop-а можно добраться.
Если же отправитель сообщения сам имеет несколько адресов, то точка исходящей отправки (т.е. через какой интерфейс пойдет сообщение) также определяет и то, какие адреса будут записаны в заголовок пакета в качестве отправителя.
Рассмотрим это на примере.
Допустим, заключенные договорились, раздали всем адреса и прочие сетевые настройки, и выбрали себе маршрутизатор (о нем ниже).
Пусть у нашего заключенного адрес 1.2.3.4 и маска подсети 255.255.255.0. Что это значит?
Далее, раз ответ положительный, то он действует ровно по тому же алгоритму, который был описан в предыдущих статьях, то есть рассылает широковещательный запрос, чтобы узнать MAC-позывной получателя, и так далее. Только вместо описания (рыжий колченогий анархист), которое мы ранее приводили в качестве примера, выступают просто ip-адреса, которые, по сути, уникальным образом характеризуют получателя. Поскольку одинаковые ip адреса в одном широковещательном домене (на одном коммутаторе) — признак ошибки! Работать сеть так не будет или будет через раз :). Данный случай нам, на самом деле, не особенно интересен, ведь он был рассмотрен ранее.
Интереснее, что происходит в обратной ситуации, когда адрес (допустим, 5.6.7.8) лежит вне сети отправителя.
В таком случае отправитель сразу (без всяких широковещательных рассылок) обращается к своей таблице маршрутизации.
Рассмотрим самый простой случай: в ней только один маршрут — по умолчанию, который как бы говорит: все, что не знаешь, куда послать (не относится к твоей сети и нет конкретного правила-маршрута, соответствующего данному получателю) — шли сюда. И в качестве адреса, осуществляющего пересылку, указывается адрес маршрутизатора.
Таким образом, наш отправитель видит, что адрес не из его сети, смотрит в таблицу маршрутизации и видит, что для пересылки в другие сети ему надо отправлять пакеты получателю с адресом 1.2.3.1.
А вот тут начинается интересное. Дальше отправитель смотрит в свою arp-таблицу, где, как вы помните, у него записаны соответствия описаний-ip-адресов и MAC-позывных. Допустим, у него есть уже соответствие для адреса 1.2.3.1 (если нет, пойдет ARP, описанный в предыдущих статьях).
Тогда он формирует пакет следующим образом.
Упаковывает (инкапсулирует) данные, добавляет к ним заголовок 3 уровня.
Полученный пакет упаковывает еще раз, добавляя к ним заголовки 2 уровня.
Что происходит далее?
Коммутатор (как мы помним, это отдельное устройства-заключенный, которое осуществляет пересылку сообщений между камерами внутри одной подсети), получив пакет, смотрит заголовки 2 уровня. И видит вполне конкретного получателя (Маршрутизатор), которому и передает данные, определив порт по FIB (таблице соответствия MAC-позывных и портов-труб).
Поскольку получатель этот и есть Маршрутизатор, то он видит в заголовке 2 уровня себя и принимает пакет. Для дальнейшей обработки распаковывает его и смотрит заголовки 3 уровня. И видит, что получателем указан некто 5.6.7.8, то есть не он. Но поскольку Маршрутизатор — маршрутизатор, он не выбрасывает этот пакет (как поступил бы любой другой компьютер-заключенный (за исключением стукачей-снифферов, которые записывают даже данные, предназначенные не им)), а начинает определять, куда же ему это сообщение переотправить.
То есть он тоже лезет в свою таблицу маршрутизации, и смотрит, попадает ли этот адрес в одну из подключенных к нему сетей, или есть ли у него маршрут до подсети, содержащей этот адрес.
Допустим, он находит у себя маршрут, который говорит, что подсеть 5.6.7.0/24 (эта запись обозначает адреса 5.6.7.0-255 и аналогична маске 255.255.255.0) находится на узле 8.9.0.1.
После этого маршрутизатор снова запаковывает пакет, добавляя к нему новые заголовки 2 уровня (заголовки 3 уровня остаются без изменений!).
В итоге в заголовках вторго уровня получается следующее. Отправитель — Маршрутизатор (он сам). Получатель — Маршрутизатор2 (позывной маршрутизатора с адресом 8.9.0.1, который Маршрутизатор получает из своей ARP-таблицы или путем ARP-запроса).
После чего Маршрутизатор передает это сообщение через свой интерфейс (с адресом, допустим, 8.9.0.2), который смотрит в подсеть, содержащую в себе адрес 8.9.0.1 (т.е. не через тот же, через который сообщение было получено).
Допустим, наша искомая сеть 5.6.7.0/24 — подключена к Маршрутизатору2 напрямую. Тогда он определяет MAC получателя по ARP-таблице, пакует данные заголовком 2 уровня, где отправитель — он сам, а получатель — уже позывной реального получателя (Сосиска), и передает.
Пользователь 5.6.7.8 (он же Сосиска), получив пакет, видит заголовок 2 уровня и понимает, что это ему. Распаковывает, видит свой ip-адрес и еще раз убеждается, что это ему. И начинает читать данные.
Обратная отправка будет идти полностью аналогично вышеописанному, за тем исключением, что таблицы маршрутизации будут просматриваться уже в обратном направлении — и не исключено, что обратно пакет пойдет совсем по другому пути (это называется асимметричная маршрутизация).
Данная схема может показаться еще более сложной, чем описанная в предыдущей статье схема с таблицами коммутации. Однако, по сути она содержит в себе циклически повторяющиеся элементы, и за счет этого теоретически может масштабироваться практически бесконечно (увеличивается лишь время доставки пакета).
Широковещательные рассылки, которые так нагружают сеть, присутствуют лишь в рамках одной подсети, потому не являются проблемой даже при значительном росте сети (разве что вы сделаете подсеть 1.0.0.0/8 и попытаетесь подключить всех пользователей в нее напрямую, не разбивая на подсети).
Также важным является следующий аспект (опущенный для простоты в примере выше). Что маршрут может быть не только по умолчанию или вести напрямую на один адрес, но указывать на целые подсети.
То есть, выше мы рассматривали подсеть 1.2.3.0/24. Однако к одному маршрутизатору (номер 1) могут быть подключены, например, подсети 1.2.0.0/24, 1.2.1.0/24, 1.2.2.0/24 ….1.2.255.0/24. И тогда на соседнем маршрутизаторе маршрут, указывающий, какие сети доступны через маршрутизатор 1, будет нужен всего один — 1.2.0.0/16 (а не 256 маршрутов), поскольку эта подсеть включает в себя все вышенаписанные. То есть благодаря подсетям можно осуществлять суммирование маршрутов.
Таким образом, применение подсетей и маршрутизации также позволяет оптимизировать размер адресных таблиц, исключая необходимость хранения всех адресов всех получателей.
На этом описанном выше принципе работы маршрутизации по сути и строится вся работа сети Интернет. К нему добавляются лишь протоколы резервирования, протоколы рассылки карты сетей (т.е. чтобы не вручную прописывать все маршруты, особенно при их изменениях, а чтобы это происходило автоматически) и так далее.
Подробнее об отдельных аспектах этого (например, как компьютер получает ip-адрес, или как он понимает, как попасть на ваш любимый сайт (мы ведь не вводим адреса), а также о вопросах безопасности, возникающих в связи с добавлением 3 уровня, мы поговорим в следующей статье.
Здесь же обратим внимание лишь еще на один момент. Как нетрудно заметить из описания маршрутизации выше, получатель не знает MAC-адрес отправителя. Это общее правило. Это, во-первых, позволяет использовать одинаковые MAC-и для сетевого оборудования, при условии, что оно используется в различных подсетях.
А во-вторых, что для нас более важно, это обеспечивает один из важных аспектов сетевой безопасности, на основе которого уже развиваются остальные.
В отличие от ip-адреса, который является абсолютно искусственным конструктом и может быть любым — MAC-адрес является физической характеристикой оборудования. То есть современное оборудование в большинстве случаев позволяет подменять его. Но если это не было сделано, то, зная MAC (зафиксировав на коммутаторе факт обращения с одного порта на другой отправителя с определенным MAC-ом) и получив доступ к оборудованию (компьютеру) и сверив MAC-адрес — можно (хоть и шатко) пришить это оборудование к делу.
Но, как мы написали выше — получатель (или любой промежуточный маршрутизатор, кроме первого) не знает вашего MAC-а, в отличие от IP. И, следовательно, чтобы его выяснить (для привязки вашего компьютера к делу), он должен проследить ваш IP до первого маршрутизатора (который даст MAC-адрес из своей ARP-таблицы) и точки физического подключения к сети (коммутатора) (он даст порт).
И даже если это будет сделано, для получения информации будет необходимо, чтобы размер лога (журнала) подключений на первом маршрутизаторе и коммутаторе был достаточен (данные не успели перезаписаться), чтобы выяснить порт и MAC. Только при соблюдении этих условий можно будет зафиксировать физический адрес вашего оборудования, для последующей сверки с изъятым. Или же чтобы использовать эту информацию, например, чтобы посмотреть, кто подключался в это время к сети, по камерам.
Тут важно заметить, что, разумеется, одной этой особенности маршрутизации абсолютно недостаточно для того, чтобы считать себя анонимным и защищенным в сети Интернет. ЭТО НЕ ТАК! Но именно дальнейшее развитие принципа инкапсуляции, позволяющего скрывать MAC-адрес от промежуточных устройств, позволяет таким средствами как TOR или VPN обеспечивать анонимность активистам. Но о них мы поговорим отдельно.
Также отметим, что мы, разумеется, рассмотрели далеко не все аспекты коммутации. Пропущены виртуальные частные сети (VLAN), различие между портами доступа и транковыми (на коммутаторах), технологии DTP и еще очень многое. По большому счету, это сделано сознательно — основной целью было обозначить какие-то общие моменты функционирования компьютерных сетей, понимая которые можно оценивать, в первую очередь, именно прикладные аспекты использования сети Интернет как средства связи с точки зрения обеспечения безопасности и анонимности. А также, при желании, использовать этот базис для уже более углубленного и подробного изучения функционирования компьютерных сетей.
Свои статьи я публикую также на сайте,