Адресация и маршрутизация в глобальных сетях, работающих

advertisement
Адресация и маршрутизация в глобальных сетях, работающих по стеку
протоколов TCP/IP.
Адресация и маршрутизация в глобальных
сетях, работающих по стеку протоколов TCP/IP.
Темы адресации узлов сети TCP/IP и маршрутизации пакетов данных, путешествующий по этой сети,
являются очень обширными, поэтому в этой главе мы рассмотрим лишь самые общие их понятия.
Для начала давайте посмотрим, как строится глобальная сеть TCP/IP. Допустим, у нас имеется три
локальных сети, две из которых построены на технологии Ethernet и одна на технологии FDDI, а также 2
сети, построенные на технологии глобальной сети FrameRelay. Сеть, построенная из комбинации таких
сетей, может являться фрагментом TCP/IP сети, а может и полностью представлять всю глобальную сеть
TCP/IP, если её граничные маршрутизаторы не будут иметь выхода к другим сетям. Для технологии TCP/IP
все сети, входящие в её состав, даже если их технологии сами по себе не являются технологиями локальных
сетей (в нашем случае это сети FrameRelay), считаются локальными подсетями, между которыми для стека
TCP/IP нет принципиальной разницы, поэтому мы их также будем называть локальными подсетями. Каждая
подсеть имеет свой собственный способ адресации своих узлов, входящих в данную подсеть. Эти адреса
должны быть уникальны в пределах своей подсети, но могут совпадать с адресами из других подсетей.
Адрес, используемый в стеке протоколов TCP/IP, называется IP-адресом. MAC-адрес, используемый для
адресации узлов Ethernet-сети, является абсолютно уникальным и заложен самим производителем
оборудования, а вот локальные IP-адреса узлов различных сетей, которые не взаимодействуют друг с
другом, очень часто совпадают. В пределах своей локальной сети эти адреса, назначаемые системным
администратором в произвольном порядке, позволяют совершенно однозначно идентифицировать их
носитель – любой узел сети. Но для функционирования глобальной сети, состоящей из таких локальных
подсетей, назначение каждому узлу своего уникального IP-адреса становится необходимостью. Именно по
этой причине для выхода в интернет необходимо иметь свой уникальный на всю мировую сеть IP-адрес. В
стеке TCP/IPэта задача решена достаточно эффективно: каждая подсеть имеет свой набор (пул) адресов
своих узлов, а, кроме этого, у каждой подсети имеется также и свой собственный адрес. Таким образом, для
однозначной идентификации каждого узла такой подсети используется пара № подсети-№ узла. Например,
если № подсети 10.12, а № узла – 56.16, то IP-адрес данного узла будет такой: 10.12.56.16. Любой IP-адрес
протокола IPверсии №4 (до сих пор эта версия наиболее распространена) состоит из 4-х байт, по одному
байту на число, которое обычно представляется в десятичном формате. Если число представлять в двоичном
формате, то мы должны были бы записать между точками восьмиразрядные числа IP-адреса. Таким образом,
каждое из 4-х чисел может иметь 28=256 различных значений от 0 и до 255. В этом случае в подсети 10.12
можно однозначно адресовать 216=65536 различных узлов (за вычетом нескольких адресов, так как их
значения используются для других нужд). Если подсеть мелкого масштаба, ей может назначаться другой
номер, например 10.12.35, а номера узлов будут находиться в диапазоне с 0 по 255-й (за исключением двух
зарезервированных номеров, то есть всего 254 узла), например 76. Таким образом, IP-адрес какого-либо узла
может быть задан так: 10.12.35.76.
Теперь рассмотрим, как же происходит доставка пакета от одного узла одной подсети в другую. Напомню,
что в случае технологии Ethernetкадр, имеющий MAC-адрес узла-источника кадра и MAC-адрес узла,
которому этот кадр предназначается, посылается в сеть и распространяется до каждого её узла, а узлы уже, в
свою очередь, пытаются определить, им ли предназначается данный кадр или не им. В случае же глобальной
сети посылать всем узлам составной сети данные для передачи не представляется возможным, поэтому
данные могут путешествовать только до границы своей подсети, то есть до маршрутизатора подсети,
который имеет выход к другим подсетям или какой-либо одной подсети глобальной сети. Так, передаваемые
данные посылаются до маршрутизатора средствами той технологии, на которой построена данная подсеть
(например, обычным образом с использованием MAC-адреса в случае Ethernet-подсети). Маршрутизатор,
принимая кадр данных, сохраняющий IP-адрес источника и назначения, анализирует данный адрес и
на основании своей таблицы маршрутизации, о которой было рассказано на одном из предыдущих
уроков,формирует из пакета данных новый кадр данных, соответствующий той технологии подсети,
по которой будет производиться передача, и направляет его на один из своих портов, выходящих на
нужную сеть, до следующего маршрутизатора или до конечного узла (в случае, если этот узел находится
в пределах данной подсети). Как видим, в общем случае, особенно магистральные, маршрутизаторы имеют
множество портов, которые могут принадлежать различным сетевым технологиям. Например, несколько
портов будет подключаться при помощи витой пары, другие к оптоволокну, третьи к телефонной розетке,
четвёртые использовать какой-либо вид беспроводной связи и так далее, соединяя большое количество
подсетей между собой. У маршрутизатора всегда имеется более одного IP-адреса – по одному IP-адресу для
каждого порта -- чтобы он мог определить по номеру подсети, какому из маршрутизаторов, находящихся на
других границах подсетей, к которым подключен наш маршрутизатор, необходимо передать дальше наш
кадр данных. То есть маршрутизатор по своей таблице маршрутизации ориентируется, куда
необходимо направить дальше принятый им пакет, чтобы он шёл к узлу назначения, используя
диапазоны номеров подсетей, которые ему известны. Если маршрутизатору оказывается неизвестен
номер подсети, прописанный в пакете, он может послать этот пакет тому маршрутизатору, который
прописан в его таблице для таких случаев. Для успешного поиска и выбора оптимального маршрута с
учётом загруженности каналов связи и многих других факторов разработаны специальные протоколы
маршрутизации, например, простой протокол RIP или более сложный протокол OSPF. Маршрутизация и
продвижение пакетов в TCP/IP-сетях – это очень большая и отдельная тема, подробнее с которой можно
познакомиться на внеурочных занятиях или почитать в специальной литературе.
Итак, для перемещения и маршрутизации пакетов по глобальной сети используются IP-адреса, которые
попадают в передаваемый пакет данных на сетевом уровне, а для непосредственной передачи между
маршрутизаторами или самому узлу назначения используются средства и адреса той подсети, которая в
данный момент играет роль переносчика передаваемых данных (эти адреса, как мы знаем, попадают в кадр
при его формировании на канальном уровне).
IP-адрес и маска подсети.
Рассмотрим подробнее, как же маршрутизатор определяет, где в IP-адресе номер подсети, а где номер
самого узла – IP-адрес компьютера, маршрутизатора, сетевой камеры, сетевого принтера или любого
другого члена этой подсети?
В примере выше в IP-адресе 10.12.56.16 номером подсети были первые 2 байта (10.12), а номером узла –
вторые 2 байта (56.16). В такой подсети всего можно было назначить и адресовать 2 16-2=65534 узла и 2162=65534 самих подсетей. Очевидно, что такое деление неразумно, поскольку подавляющее число подсетей
имеют число узлов, значительно меньшее 65534. И, во-вторых, 65534 подсетей явно будет недостаточно для
всего мира, чтобы построить единую сеть интернета.
Для выхода из этой ситуации можно отвести для номера подсети, допустим, все 3 байта IP-адреса. Тогда
подсетей станет гораздо больше (23*8-2=224-2=16777214), но узлов в подсети может быть максимум 2 8-2=254
узла, что в случаях большой подсети явно совсем недостаточно (узлы могут исчисляться тысячами).
Более того, как же конфигурировать маршрутизаторы огромных подсетей, которых по всему миру
сравнительно немного, например, магистральные маршрутизаторы России, когда число узлов такой
огромной подсети будет достигать значение миллионов? Видно, что в данном случае IP-адрес должен
отводить для номера подсети совсем немного разрядов (например, один первый байт (номера подсетей
будут принадлежать диапазону 1-254)), а для нумерации узлов все 3 байта (максимальное количество узлов
тогда будет 16777212 узлов). Как видим, в разных случаях нам нужно совершенно разное, даже
противоположное, разбиение единого IP-адреса на части номера подсети и номера самого узла данной
подсети.
Можно было бы увеличить разрядность IP-адреса и сделать его состоящим из, например 8 байт, но в таком
случае было бы неоправданно по информационным затратам использовать такие адреса, так как и в случае
больших, и в случае малых подсетей, будут использоваться вхолостую ненужные для их адресации лишние
байты, вставляемые в заголовки каждого IP-пакета, передаваемого по сети.
Замечательным решением является использование маски подсети вместе с IP-адресом. Маска подсети
позволяет в каждом отдельном случае самому сетевому администратору разграничить IP-адрес на
номер подсети и номер сети в нужном ему соотношении. Для того, чтобы определить номер подсети,
используется последовательность единиц. В том месте, где заканчиваются единицы, начинается номер
самого узла этой подсети. Рассмотрим это на следующем примере:
Допустим, IP-адрес узла такой:
189.58.23.4, или в двоичном виде 10111101.00111010.00010111.00000100
Если маска подсети будет такой: 11111111.11111111.11111111.00000000, или в десятичном виде:
255.255.255.0
Десятичная запись
Двоичная запись
189.058.023.004
10111101.00111010.00010111.00000100
255.255.255.000
11111111.11111111.11111111.00000000
то при данных настройках подсеть будет иметь номер 189.058.023, а сам узел номер 4, и при этом общее
количество узлов в такой подсети будет 28-2=256-2 адреса для специальных нужд=254 узла.
При этом, если оставить тот же самый IP-адрес, но изменить маску подсети на 255.0.0.0:
Десятичная запись
Двоичная запись
189.058.023.004
10111101.00111010.00010111.00000100
255.000.000.000
11111111.00000000.00000000.00000000
то IP-адрес уже будет иметь другое значение и номер подсети будет 189, а номер узла – 58.23.4. В такой
подсети уже можно будет пронумеровать миллионы узлов.
Как видите, использование маски подсети предоставляет большую гибкость в разбиении всего адресного
пространства TCP/IP сети в соответствии с масштабом каждой отдельной подсети без изменения самого IPадреса, который только интерпретируется с помощью маски операцией логического умножения ANDIPадреса на маску подсети, двоичные единицы которой формируют сам номер подсети, а нули – IP-адрес её
узла.
Особые IP-адреса.
Каждый раз, когда мы посчитывали максимальное количество подсетей или их узлов, мы вычитали из этого
количества 2 особых адреса. Что же это за адреса?
Во-первых, это адрес, который состоит из одних нулей – 0.0.0.010. Такой адрес называется неопределённым
и обозначает IP-адрес того узла, который послал данный пакет. Этот узел по каким-то причинам не смог
получить обычный адрес и стать членом данной сети.
Во-вторых, если в полях адреса подсети стоят сплошные нули, это означает, что пакет принадлежит той же
подсети, что и узел, его отправивший. Такой адрес может использоваться только в качестве адреса
отправителя.
В-третьих, если все двоичные разряды IP-адреса равны 1 (255.255.255.25510), то такой пакет рассылается
абсолютно всем узлам, находящимся в той же сети, что и источник данного пакета.
И в четвёртых, если в адресе назначения в поле номера узла подсети стоят одни единицы, такой адрес
называется широковещательным и рассылается всем узлам указанной подсети. Для нашего последнего
примера сообщение с IP-адресом назначения 189.58.23.255 (если маска подсети 255.0.0.0) будет доставлено
абсолютно всем узлам данной подсети 189.58.23.0.
С помощью маски подсети поставщик услуг интернета, с помощью которого производится подключение
сети к интернету, а также сетевой администратор крупной сети могут разбивать сеть на любое удобное
количество подсетей, задавая в настройках компьютеров, маршрутизаторов и другого сетевого
оборудования ту или иную маску. В случае с провайдерами интернета это связано с тем, что стране, а
затем и каждому её поставщику услуг интернета, выдаётся некоторый диапазон IP-адресов (так
называемый пул IP-адресов), который он может использовать. При этом, конфигурируя так или иначе
маску подсети, уже сам провайдер в зависимости от условий и необходимости формирует отдельные
подсети – например, подсеть района или подсеть учебных заведений и так далее, поэтому маска подсети
является важнейшим и необходимым параметром в IP-адресации стека протоколов TCP/IP, а в конечном
итоге и всего интернета в целом.
Download