Загружаем изображение…
А сегодня мы с вами поговорим про NAT. Он же - network address translation.
Итак, Интернет. В нём есть сайты, файлообменники, мессенджеры, даркнеты... IoT тот же самый, не к ночи будь помянут...
Но это всё красивые слова. Интернет - это просто большая компьютерная сеть, где компьютеры подключаются друг к другу и передают данные.
Ключевой момент - друг к другу.
Как понятно, чтобы в большой сети компьютеры могли подключиться друг к другу - они должны знать адреса друг друга и иметь возможность к этим самым адресам подключиться. Соответственно, у них эти самые адреса должны быть.
Вроде, всё выглядит просто: выдаём каждому компьютеру по адресу - и пусть они себе общаются.
Но есть одно но, заложенное в архитектуре Интернета: в нём есть всего около четырёх миллиардов адресов. Ну, просто архитекторы, придумывавшие всю эту заумь, как-то не предполагали, что в недалёком будущем свежевыдуманную сеть растянут на весь Земной шарик - и у каждого человека будут дома по три ноутбука, пять мобильников (в каждом из которых по две SIM-карты), колонка Алиса в каждой комнате и дальше по списку. Так что адреса, внезапно, кончились.
Да, душнилы, я в курсе про 0/8, 172.16/12, 224/4 и прочие bogon-сети, что в результате делает список адресов сильно меньше 4*10⁹...
И как жить? Типа, всё, кто успел, тот и с интернетом?
Не. Тут это самое всё интереснее.
Некорректная аналогия подобна котёнку с дверцей.
Приступим.
Начнём с ликбеза.
Допустим, с одного компьютера на другой компьютер хотят подключиться две программы. Одна новости смотреть, а вторая музыку играть. Как это сделать, чтобы компьютер не запутался, кому Лаврова, а кому Лагутенко?
Для этого, помимо адреса компьютера, есть ещё порт. У обоих компьютеров. Соответственно, новостная программа подключается с адреса НашКомпьютер(порт 50000) к адресу ДругойКомпьютер(порт 80), а музыкальная - с НашКомпьютер(порт 50001) к ДругойКомпьютер(порт 80). И другой компьютер пихает тезисы Лаврова нашему компьютеру в порт 50000, а шизофазию Лагутенко - в порт 50001. Всем хорошо.
Четыре миллиарда - это много. Давайте, представим мини-интернет, в котором только 200 адресов. Выдали каждой стране по адресу от 1 до 200 - и успокоились. Страны между собой общаются нормально. У каждой страны есть сайт... Ну, например, местного МИДа. Прекрасно.
Но у нас же цифровизация, да? Регионы должны между собой общаться. Ну, там, смены прописки, штрафы ГАИ и вот это вот всё. Поэтому мы себе внутри страны 1 делаем внутренний интернет, в котором 200 адресов для регионов. Регионы общаются между собой, всё хорошо. И тут, например, для оформления визы регион 5 хочет подключиться к стране 16, чтобы посмотреть актуальные данные. Только вот при попытке подключиться по адресу 16 он попадёт в регион 16. Потому что он во внутреннем интернете.
И что теперь, за границу не ездить? Это же недемократично. Поэтому мы в адресах регионов выделяем специальный адрес "шлюз" (ну, пусть это будет адрес 200), умеющий соединяться и с регионами внутри страны, и с другими странами, а в адресе делаем спецпометку "страна". И вот теперь регион 5 подключается с порта 500 к адресу 200 с указанием "16 (страна), порт 80". Шлюз открывает тетрадочку и записывает: "р. 5 (500) -> я (600) -> с. 16 (80)". И устанавливает соединение "страна 1 порт 600 -> страна 16 порт 80". Страна 16 показывает сайт МИДа в порт 600 страны 1, шлюз смотрит в тетрадочку и передаёт показанный сайт в порт 500 региона 5. Это называется маскарадинг: шлюз маскирует регионы внутри страны от других стран.
Как понятно, внутри регионов могут быть города, внутри городов - улицы, внутри улиц - дома, а внутри домов - квартиры. И, если я хочу в нашем малоадресном интернете посмотреть МИД другой страны из своей квартиры - мой запрос должен будет пройти через целую пачку маскирований. Да, так тоже можно.
↓ Окончание в комментарии. ↓