Интернет - это целый мир. Этот мир состоит из миллиардов узлов, соединенных между собой линиями связи - это и есть сеть. Некоторые линии связи тонкие, они соединяют несколько узлов, например несколько компьютеров в здании, или несколько зданий в локальную сеть, некоторые средние - они соединяют одни подсети с другими подсетями, например несколько локальных сетей в пределах города, некоторые - очень толстые, магистрали, они соединяют целые сегменты сети, города, страны, и даже целые материки.
Для того, чтобы разобраться во всех этих миллиардах связей, чтобы понять, кому и что отправлять, давно, еще за тысячи лет до интернета, придумали такую вещь, как маршрутизация.
Что такое маршрутизация?
Маршрутизация - это принцип, определяющий кому передать то или иное сообщение. Он довольно прост: если ты видишь получателя - передай сообщение ему, если не видишь, но знаешь того, кто видит - передай сообщение ему, если не видишь и не знаешь того, кто видит - передай сообщение узлу уровнем выше, дефолтному шлюзу, может быть он сумеет найти получателя.
Таблица маршрутизации - список узлов, которые ты видишь, а также узлов, известных тебе, которые видят кого-то еще. Также в таблицу маршрутизации входит адрес вышестоящего узла - шлюза по умолчанию, на случай если ты не будешь знать, кому еще передать сообщение.
Сообщений на узлах скапливается много, поэтому их упаковывают в контейнеры, и отправляют сразу по много штук. В сети такие контейнеры - протоколы, пакеты же - мельчайшие единицы информации, атомы, с которыми эти протоколы работают. В реале - это транспортные контейнеры размером с трейлер, а пакеты - мешки с письмами.
Узел - любое устройство, подключенное к сети, имеющее заполненную таблицу маршрутизации, т.е. имеющее возможность участвовать в пересылке сообщений. Это не только серверы, аппаратные маршрутизаторы, но и даже твой компьютер.
Отправители и адресаты же - конкретные приложения, работающие на твоем и других компьютерах, за которыми закреплены определенные номера портов. Именно по номерам портов и идет идентификация отправителей и получателей, номера портов - это адреса отправителей и получателей
Представь, что тебе надо отправить письмо в другую страну. Письмо - это сообщение.
Ты пишешь его, опускаешь в почтовый ящик, его забирает почтальон, доставляет на почту. На почту поступают письма от всех жителей района, все они сваливаются в одну большую кучу, и разбираются сортировщиками. Сортировщики - те, кто проверяет письма по таблице маршрутизации.
Сортировщики, ориентируясь на индекс, разбирают кучу на две части: локальные сообщения и внешние.
Локальные - предназначенные жителям того же района, почтовое отделение знает, где находятся получатели. Это так называемый localhost. Позже эти сообщения еще раз разбираются по домам: каждый дом обслуживает свой почтальон, он просто берет пачку писем для своих домов и разносит по адресам.
Внешние - почтовое отделение не знает, где находятся получатели, поэтому отправляется эти сообщения машиной на дефолтный шлюз почтового отделения, городской почтовый узел, где они точно также все складываются в одну кучу, которую точно такие же сортировщики разбирают на те же две кучи: локальные сообщения и внешние.
Локальные сообщения позже делят на несколько кучек - по одной на каждое почтовое отделение города, их заберут машины этих почтовых отделений, когда доставят новую порцию исходящих писем. Несколько локальных кучек - городской почтовый узел знает тех, кто знает, где находятся получатели - другие городские почтовые отделения.
Внешние - на две больших группы: сообщения для тех городов, с которыми у этого города налажено регулярное почтовое сообщение - эти сообщения отправляются непосредственно в город, где живет получатель. Все остальные сообщения - их неизвестно куда отправить, поэтому они отправляются на дефолтный шлюз городского почтового отделения - в главпочтамп, в Москву.
В Москве - центральный сортировочный узел, который имеет связь не только с другими городами и областями, но и с другими странами. Поэтому там письма сортируются на гораздо большее количество кучек, и каждая отправляется в свою сторону.
Москва также - пограничный шлюз, шлюз между двумя разными сетями, например локальной сетью и городской, или между медью и оптикой, или между городами или материками, в реале - между разными странами.
На пограничных шлюзах, помимо маршрутизации, осуществляется также конвертация сообщений - преобразование их из одного вида в другой, например из электричества в свет, или меняется адресация подсети, сам формат адресов или же просто смена номера подсети, в реале - проставляется международный штемпель. Также на пограничных шлюзах может идти перепаковка сообщений из одного контейнера в другой, например вместо автомобилей - погрузка на поезд, корабль, или самолет.
Таким вот образом сообщение попадает на другой пограничный шлюз - центральное почтовое отделение страны назначения, откуда, сверяясь по индексам на конверте, отправляется в городское отделение города назначения, откуда переправляется в отделение с указанным индексом (читай - на компьютер получателя), откуда уже почтальон доставляет его непосредственно получателю - передается в конкретный порт, который слушает приложение, которому предназначено это сообщение.