Э. Таненбаум - Компьютерные сети. (4-е издание) (DJVU) (1130092), страница 137
Текст из файла (страница 137)
Проблема усугубляется еще и тем, что все большее число частных пользователей желают иметь А1)31 или кабельное соединение с Интернетом. Особенности этих способов заключаются в следующем: а) пользователи получают постоянный 1Р-адрес; б) отсутствует повременная оплата (взимается только ежемесячная абонентская плата). Пользователи такого рода услуг имеют постоянное подключение к Интернету.
Развитие в данном направлении приводит к возрастанию дефицита 1Р-адресов. Присваивать 1Р-адреса «на лету», как это делается при телефонном подключении, бесполезно, потому что число активных адресов в каждый момент времени может быть во много раз больше, чем имеется у провайдера. Сетевой уровень в Интернете 611 Часто ситуация еще больше усложняется за счет того, что многие пользователи А1)ЯЕ и кабельного Интернета имеют дома два и более компьютера (например, по одному на каждого члена семьи) и хотят, чтобы все машины имели выход в Интернет.
Что же делать — ведь есть только один 1Р-адрес, выданный провайдером! Решение таково: необходимо установить маршрутизатор и объединить все компьютеры в локальную сеть. С точки зрения провайдера, в этом случае семья будет выступать в качестве аналога маленькой фирмы с несколькими компьютерами. Добро пожаловать в корпорацию Васильевых! Проблема дефицита 1Р-адресов отнюдь не теоретическая и отнюдь не относится к отдаленному будущему. Она уже актуальна, и бороться с ней приходится здесь и сейчас. Долговременный проект предполагает тотальный перевод всего Интернета на протокол 1Руб со 128-битной адресацией. Этот переход действительно постепенно происходит, но процесс идет настолько медленно, что затягивается на годы.
Видя это, многие поняли, что нужно срочно найти какое-нибудь решение хотя бы на ближайшее время. Такое решение было найдено в виде метода трансляции сетевого адреса, ХАТ (Хегтуогк АсЫгезз Тгапз!аг)оп), описанного в КРС 3022. Суть его мы рассмотрим позже, а более подробную информацию можно найти в (1)цтсЬег, 2001). Основная идея трансляции сетевого адреса состоит в присвоении каждой фирме одного 1Р-адреса (или, по крайней мере, неболыпого числа адресов) для интернет-графика. Внутри фирмы каждый компьютер получает уникальный 1Р- адрес, используемый для маршрутизации внутреннего трафика. Однако как только пакет покидает пределы здания фирмы и направляется к провайдеру, выполняется трансляция адреса. Для реализации этой схемы было создано три диапазона так называемых частных 1Р-адресов.
Они могут использоваться внутри компании по ее усмотрению. Единственное ограничение заключается в том, что пакеты с такими адресами ни в коем случае не должны появляться в самом Интернете. Вот эти три зарезервированных диапазона: 10.0.0.0 — 10.255.255.255/8 (16 777 216 хостов) 172.16.0.0 — 172.31.255.255/12 (1 048 576 хостов) 192.168.0.0 — 192.168.255.255/16 (65 536 хостов) Итак, первый диапазон может обеспечить адресами 16 777 216 хостов (кроме 0 и — 1, как обычно), и именно его обычно предпочитают компании, даже если им на самом деле столько внутренних адресов н не требуется. Работа метода трансляции сетевых адресов показана на рис. 5.52. В пределах территории компании у каждой машины имеется собственный уникальный адрес вида 10ху.к Тем не менее, когда пакет выходит за пределы владений компании, он проходит через ХАТ-блок, транслирующий внутренний 1Р-адрес источника (10.0.0.1 на рисунке) в реальный 1Р-адрес, полученный компанией от провайдера (198.60.42.12 для нашего примера).
ХАТ-блок обычно представляет собой единое устройство с брандмауэром, обеспечивающим безопасность путем строго отслеживания входящего и исходящего.графика компании. Брандмауэры мы будем изучать отдельно в главе 8. ХАТ-блок может быть интегрирован и с маршрутизатором компании. 612 Глава 5. Сетевой уровень Пакет перед ЛВС комле Маршрутизатор компании вршрутиэатор проваедерв компании Рис. В.В2.
Располомение и работа МАТ-блока Мы до сих пор обходили одну маленькую деталь: когда приходит ответ па запрос (например, от веб-сервера), ои ведь адресуется 198.60А2.12. Как же ХАТ- блок узнает, каким внутренним адресом заменить общий адрес компапииу Вот в этом и состоит главная проблема использования трансляции сетевых адресов, Если бы в заголовке 1Р-пакета было свободное поле, его можно было бы использовать для запоминания адреса того, кто посылал запрос. Но в заголовке остается неиспользованным всего один бит.
В принципе, можно было бы создать такое поле для истинного адреса источника, ио это потребовало бы изменения 1Р-кода иа всех машинах по всему Интернету. Это ие лучший выход, особенно если мы хотим найти быстрое решение проблемы нехватки 1р-адресов. На самом деле произошло вот что. Разработчики ХАТ подметили, что большая часть полезной нагрузки 1Р-пакетов — это либо ТСР, либо Ш)Р. Когда мы будем в главе 6 рассматривать ТСР и УРР, мы увидим, что оба формата имеют заголовки, содержащие номера портов источника и приемника. Далее мы обсулим, что значит порт ТСР, ио надо иметь в виду, что с портами У РР связана точно такая же история. Номера портов представляют собой 16-разрядиые целые числа, показывающие, где начинается и где заканчивается ТСР-соедииеиие.
Место хранения номеров портов используется в качестве поля, необходимого для работы ХАТ. Когда процесс желает установить ТСР-соединеиие с удаленным процессом, ои связывается со свободным ТСР-портом иа собственном компьютере. Этот порт становится портом источника, который сообтцает ТСР-коду информацию о том, куда направлять пакеты данного соединения. Процесс также определяет порт назначения. Посредством порта назначения сообщается, кому отдать пакет на удаленной стороне. Порты с 0 по 1023 зарезервироваиы для хорошо известных сервисов.
Например, 80-й порт используется веб-серверами, соответственно, иа иих могут ориентироваться удаленные клиенты. Каждое исходящее сообщение Сетевой уровень в Интернете 513 ТСР содержит информацию о порте источника и порте назначения. Вместе они служат для идентификации процессов на обоих концах, использующих соединение. Проведем аналогию, которая несколько прояснит принцип использования портов. Допустим, у компании есть одян обший телефонный номер. Когда люди набирают его, они слышат голос оператора, который спрашивает, с кем именно они хотели бы соединиться, и подключают их к соответствующему добавочному телефонному номеру.
Основной телефонный номер является аналогией 1Рчшреса компании, а добавочные на обоих концах аналогичны портам. Для адресации портов используется 16-битное поле, которое илентифицирует процесс, получающий входяший пакет. С помощью поля Порт источника мы можем решить проблему отображения адресов. Когда исходящий пакет приходит в ХАТ-блок, адрес источника вида 10.ху.г заменяется настоящим 1Р-адресом. Кроме того, поле Порт источника ТСР заменяется индексом таблицы перевода 1чАТ-блока, содержашей 65 536 записей. Каждая запись содержит исходный 1Р-адрес и номер исходного порта. Наконец, пересчитываются и вставляются в пакет контрольные суммы заголовков ТСР и 1Р. Необходимо заменять поле Порт истоггггика, потому что машины с местными адресами 10.0.0.1 и 10.0.0.2 могут случайно пожелать воспользоваться одним и тем же портом (5000-м, например).
Так что для однозначной идентификации процесса отправителя одного поля Порт источника оказывается недостаточно. Когда пакет прибывает на )чгАТ-блок со стороны провайдера, извлекается значение поля Порт источника заголовка ТСР. Оно используется в качестве индекса таблицы отображения ХАТ-блока. По найденной в этой таблице записи определяются внутренний 1Р-адрес и настояший Порт источника ТСР. Эти два значения вставляются в пакет. Затем заново подсчитываются контрольные суммы ТСР и 1Р. Пакет передается на главный маршрутизатор компании для нормальной доставки с адресом вида 10.х.у.а В случае применения А1)51. или кабельного Интернета трансляция сетевых адресов может применяться для облегчения борьбы с нехваткой адресов, Присваиваемые пользователям адреса имеют вид 10.ху.а Как только пакет покидает пределы владений провайдера и уходит в Интернет, он попадает в ХАТ-блок, который преобразует внутренний адрес в реальный 1Р-адрес провайдера.
На обратном пути выполняется обратная операция. В этом смысле для всего остального Интернета провайдер со своими клиентамц, использующими А1)51 и кабельное соединение, представляется в виде одной большой компании. Хотя описанная выше схема частично решает проблему нехватки 1р-адресов, многие приверженцы 1Р рассматривают ХАТ как некую заразу, распространяюв1уюся по Земле. И их можно понять.
Во-первых, сам принцип трансляции сетевых адресов никак не вписывается в архитектуру 1Р, которая подразумевает, что каждый 1Р-адрес уникальным обРазом идентифицирует только одну машину в мире. Вся программная структура Интернета построена на использовании этого факта. При трансляции сетевых адресов получается, что тысячи машин могут (и так происходит в действительности) иметь адрес 10.0.0.1. 614 Глава 6. Сетевой уровень Во-вторых, ХАТ превращает Интернет из сети без установления соединения в нечто подобное сети, ориентированной на соединение.
Проблема в том, что ХАТ- блок должен поддерживать таблицу отображения для всех соединений, проходящих через него. Запоминать состояние соединения — дело сетей, ориентированных на соединение, но никак не сетей без установления соединений. Если ХАТ- блок ломается и теряются его таблицы отображения, то про все ТСР-соединения, проходящие через него, можно забыть. При отсутствии трансляции сетевых адресов выход из строя маршрутизатора не оказывает никакого эффекта на деятельность ТСР. Отправляющий процесс просто выжидает несколько секунд и посылает заново все неподтвержденные пакеты.