С точки зрения именования Интернет предоставляет многоуровневую среду именования с двумя контекстами для точек сетевого подключения, известными как "Интернет-адреса".
Интернет-адрес состоит из двух компонентов: сетевого номера и номера хоста. Большинство номеров сетей являются глобальными именами, но некоторые из них, такие как сеть 10, предназначены для использования в частных сетях.
Эти сетевые номера могут использоваться либо полностью конфиденциально, либо совместно с публичным Интернетом. Полностью частное использование включает в себя создание независимой частной сети и назначение адресов хостов с помощью сетевого номера 10. Маршрутизаторы в этой сети рекламируют и пересылают рекламу так же, как и в общедоступном интернете.
Маршрутизаторы в общественном Интернете следуют условию, что они не принимают маршруты к сети 10, поэтому если эта частная сеть также напрямую подключена к общественному Интернету, не возникает путаницы.
Предполагая, что частная сеть принимает маршруты к сетям с глобальными именами, узел внутри частной сети может посылать сообщение узлу в публичном интернете, но узел в публичном интернете не может отправить ответ обратно из-за соглашения о маршрутизации. Таким образом, любое количество частных сетей может независимо присваивать номера, используя 10 сетевых номеров - но хосты в разных частных сетях не могут общаться друг с другом, а хосты в общественном Интернете не могут общаться с ними.
Трансляция сетевых адресов (NAT) - это схема, позволяющая заполнить этот пробел. Идея заключается в том, что специализированный транслирующий маршрутизатор (неофициально известный как "NAT box") стоит на границе между частной сетью и публичным Интернетом. Когда хост внутри частной сети желает общаться с какой-либо службой в общедоступном интернете, он сначала делает запрос на маршрутизатор перевода.
Переводчик устанавливает связь между личным адресом принимающей стороны и временно назначенным публичным адресом, который переводчик размещает в публичном Интернете. Затем приватный хост запускает пакет, который имеет адрес назначения в публичном интернете и свой собственный адрес источника в частной сети. Когда этот пакет проходит через маршрутизатор, переводчик изменяет исходный адрес, заменяя его временно назначенным публичным адресом. Затем он посылает пакет по пути в общедоступный Интернет.
Когда ответ службы в публичном Интернете возвращается на транслирующий маршрутизатор, переводчик извлекает адрес назначения из ответа, находит в таблице временно назначенных публичных адресов внутренний адрес, которому он соответствует, изменяет адрес назначения в пакете и отправляет пакет по пути во внутреннюю сеть, где он находит путь к частному узлу, с которого было начато соединение.
Схема работает, после моды, но имеет ряд ограничений. Наиболее серьезным ограничением является то, что некоторые сквозные сетевые протоколы размещают Интернет-адреса в полях, скрытых в их полезной нагрузке; нет ничего, ограничивающего Интернет-адреса полями источника и назначения пакетов заголовка сетевого уровня.
Например, некоторые протоколы между двумя сторонами начинаются с указания Интернет-адреса третьей стороны, такой как банк, которая также должна участвовать в протоколе. Если Интернет-адрес третьего лица находится в общедоступном интернете, это может не вызывать проблем, но если это адрес в частной сети, переводчику необходимо перевести его по мере его прохождения.
Проблема заключается в том, что при переводе требуется, чтобы переводчик передавал данные о полезной нагрузке пакета и понимал формат протокола более высокого уровня. В результате NAT работает только для тех протоколов, которые транслятор запрограммирован понимать. Некоторые протоколы могут представлять большие трудности. Например, если защищенный протокол использует криптографические преобразования на основе ключей для обеспечения конфиденциальности или аутентификации, шлюзу NAT понадобится копия ключей, но предоставление ключей может нарушить назначение защищенного протокола.
Вторая проблема заключается в том, что все пакеты между публичным Интернетом и частной сетью должны проходить через маршрутизатор перевода, поскольку это единственное место, которое знает, как выполнять перевод адреса. Таким образом, переводчик вводит как потенциальные узкие места, так и единую точку сбоя, и NAT становится ограничением для политики маршрутизации.
Третья проблема возникает в случае последующего слияния двух таких организаций. Каждой организации будут назначены адреса в сети 10, но поскольку их назначения не были скоординированы, некоторые адреса, вероятно, будут назначены в обеих организациях, и все сталкивающиеся адреса должны быть обнаружены и изменены.
Хотя изначально разрабатывалась как схема соединения частных сетей с публичным Интернетом, NAT стала популярной в качестве средства усиления безопасности компьютерных систем, которые имеют небезопасные операционные системы или сетевые реализации. В этом приложении NAT-транслятор проверяет каждый пакет, поступающий из публичного Интернета, и отказывается передавать любой пакет, происхождение которого кажется подозрительным или который пытается вызвать службы, не предназначенные для публичного использования.
Схема сама по себе не обеспечивает большой безопасности, но в сочетании с другими механизмами безопасности, она может помочь создать то, что в этой главе описывается как "глубокоэшелонированная защита".