В прошлых постах мы разобрали как устроены локальные сети, теперь мы хотим эти сети объединить.
Для того, чтобы мы могли из небольших локальных сетей создать большую (интерсеть) - нам понадобятся маршрутизаторы.
Как Вы заметили это достаточно серьезное устройство. А значит надо его разобрать на примере нашей нитки.
Допустим ребята с банками на нитках связавшие их между собой в "сети" играют во дворе. Причем таких групп "сетей несколько". Однако общаться ребята могут только с теми, к чей сети они привязаны. Чтобы они могли общаться с ребятами из других сетей, они привязывают нитку с банкой, и зовут присоединиться к ним другого ребенка, в качестве помощника (маршрутизатора). И так делают и остальные группы ребят. Теперь в каждой такой ниточной сети есть свой маршрутизатор.
Маршрутизатор делает вот что. Сперва он узнает имена всех ребят из сети к которой он привязан, чтобы отсылать им сообщения. Ну так же как и другие. Этим он от остальных ребят ничем не отличается. Затем он знакомиться со всеми ребятами, которые также являются маршрутизаторами из других сетей, и протягивает к нескольким самым ближним отдельную баночную связь. Затем ребята рассказывают друг-другу о том с кем они связаны. А также каких других маршрутизаторов они знают. Ну и предлагают свой вариант кому нужно передавать сообщение, чтобы оно пришло быстрее адресату. То есть участнику одной из сети.
С этих пор деток мы не беспокоим :)
Сетевой уровень предполагает взаимодействие между компьютерами. И маршрутизатор - такой же компьютер, но заточенный под свои задачи - посылать пакеты своим маршрутизаторам. Он получает кадр с хоста или другого маршрутизатора (узла сети) и достает оттуда пакет сетевого уровня. В пакете записано кто-же должен этот пакет получить. Он с помощью специальных пакетов обменивается данными с другими маршрутизаторами. Поэтому ему не составляет труда доставить пакет по кратчайшему пути. Для передачи пакета ближайшему соседу он создаст кадр и положит в него пакет. Затем отправит его так же как и любому другому устройству сети. Однако здесь кроется кое какая проблема. Устройства-то разные. И связаны каждый со своим маршрутизатором. Поэтому возникает куча сложностей, например размеры кадров в различных сетях разные. Следвательно, если пакет передается из сети Ethernet в LTE, то происходит преобразование пакетов до нужного размера. Размер сообщает принимающий маршрутизатор. Если он больше то два или более пакетов склеиваются в один иначе наоборот разделяются. Причем этим занимается более высокий уровень. (транспортный) маршрутизатор только сообщает какой размер пакета он готов в данный момент принять. Маршрутизаторы между собой могут создавать виртуальные каналы, однако это происходит, только если они между собой договорились. Например в 4G если это звонок на телефон, то они его создадут. А если это загрузка яндекса, то обойдутся датаграммами.
Маршрутизаторы умеют различать сети по их принципу работы. Для этого они запрашивают информацию о топологии сети где находится нужный маршрутизатор. Им передается специальное значение, которое однозначно говорит, Ethernet это или другая сеть например wifi. Если сети разные, то на канальном уровне маршрутизаторы умеют создавать кадры для нужного канала, однако пакет, который в этих кадрах передается не изменяется. Его задача только хранит адрес получателя сетевого уровня.
Маршрутизаторы обычно покупают, устанавливают и обслуживают специальные компании, которые называют себя провайдерами.
Самое главное, что маршрутизаторы такие афигительные, что могут создавать любые интерсети (в том числе интерсеть Интернет). Для этого их нужно просто подключит иерархически.
Конечно в действительности они работают подобно компьютерам, в них загружено много таблиц и алгоритмов, для передачи пакетов друг-другу. Но иерархические связи помогают перераспеределить эту нагрузку, на несколько вертикальных уровней.
Допустим у Вас дома стоит точка доступа WiFi и она соединена каким-то проводом. Когда вы с одного из своих устройств открываете, допустим, яндекс, то ваше устройство создает пакет с IP яндекса, кладет его в кадр и отправляет точке доступа, той штуке (новые обычно с антенками) куда воткнут кабель от провайдера. Вот там из кадра достается пакет и по проводам (ну точнее в кадре для другой линии) передается на маршрутизатор. Маршрутизатор берет пакет из кадра и смотрит адрес куда этот пакет передать дальше. Если вы его отправили допустим из Подольска, то он его передаст на другой маршрутизатор в Москву. А оттуда он попадет на хост яндекса.
Сами по себе маршрутизаторы, если не создают виртуальный канал, то могут передавать пакеты как им нравится, чтобы распределить нагрузку. В любом случае когда пакет передается через нескольких провайдеров, эти провайдеры должны договориться, иначе один из маршрутизаторов может не пропустить этот пакет. хотя не факт. Но если маршрутизатор не имеет договоренности с другим маршрутизатором, который, относится к другому провайдеры, то по-хорошему, он должен послать этот пакет маршрутизатору другому, с коем о более дружелюбен. Хотя такие ситуации редкие. Так как коммерческий интерес все же зависит и от физических возможностей соединений, которые подразумневают финансовые затраты на обслуживание и электроэнергию.
В конечном счете когда пакет попадает на маршрутизатор, который имеет доступ к получателю (или сети назначения) создается кадр на маршрутизаторе к этому устройству и как положено по MAC-адресу на канальном уровне передается кадр адресату - и как и требовалось данные оказываются в памяти нужного устройства. Там пакет извлекается из кадра и передается на сетевой уровень.
Итак. Основным связующим звеном в Интернете и других интерсетях является маршрутизатор.
В следующем посте я расскажу более подробно о иерархическом построении сетей с помощью маршрутизаторов, а главное, как устроен Интернет во всем Мире.