Маска сети
Битовая маска, определяющая какая часть адреса является адресом сети, а какая адресом узла называется маской сети. В ней биты со значением 1 определяют поле адреса сети, биты со значением 0 – поле адреса узла. Маска сети класса А 255.0.0.0, маска сети класса B 255.255.0.0, маска сети класса С 255.255.255.0. Например:
Адрес 212.193.32.4 маска 255.255.255.0
1101 0100 1100 0001 0010 0000 0000 0100
1111 1111 1111 1111 1111 1111 0000 0000
Проводя операцию побитовой коньюнкции (умножения) получаем адрес сети:
1101 0100 1100 0001 0010 0000 0000 0000
Или в десятичном представлении 212.193.32.0
Бесклассовая система адресации
Классические сети не позволяют эффективно использовать адресное пространство в неоднородных сетях с разным числом хостов. Поэтому с середины 90-х голов прошлого века используют безклассовые сети с масками подсетей произвольной длины для подстройки числа хостов в реальных сетевых сегментах.
В отличие от масок подсетей по умолчанию, которые входят в определение класса сети, маски подсетей пользователя задаются администратором при распределении устройств по сетевым сегментам в конкретной вычислительной сети. При этом из исходного сетевого адреса, из его части, относящейся к хостам, занимаются несколько бит, которые присоединяются к адресу сети, а оставшиеся биты нумеруют хосты в такой вновь созданной подсети:
|
8 бит |
8 бит |
8 бит |
8 бит |
|
||||||||||||||||||||||||||||||||
адрес класса B |
1 |
0 |
x |
x |
x |
x |
x |
x |
x |
x |
x |
x |
x |
x |
x |
x |
y |
y |
y |
y |
y |
y |
y |
y |
y |
y |
y |
y |
y |
y |
y |
y |
|||||
|
№ сети |
№ узла |
|
||||||||||||||||||||||||||||||||||
Маска сети класса В |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
|||||
бесклассовый адрес |
1 |
0 |
x |
x |
x |
x |
x |
x |
x |
x |
x |
x |
x |
x |
x |
x |
x |
x |
x |
y |
y |
y |
y |
y |
y |
y |
y |
y |
y |
y |
y |
y |
|||||
|
№ подсети |
№ узла |
|
||||||||||||||||||||||||||||||||||
Маска подсети |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
Если в классической схеме адресации маска сети могла иметь всего три варианта и соответствующие записи в десятичном виде были понятны с одного взгляда:
255.0.0.0
255.255.0.0
255.255.255.0
то для приведенного нами примера имеем в десятичном представлении
255.255.224.0
и «читать» такую маску легко только после долгой практики. Поэтому появился еще один способ описания таких масок путем указания в явном виде количества старших разрядов имеющих значение 1. Так, если необходимо указать, что некоторый адрес принадлежит подсети с маской из 19 единиц (рассмотренный случай) пишут:
x.y.z.w / 19
Маршрутизаторы разделяют сетевые сегменты (широековещательные домены канального уровня) и определяют, в каких случаях пакеты следует перенаправлять из одной подсети в другую. Маски подсети позволяют рабочим станциям, серверам и маршрутизаторам определить, находится ли устройство, для которого предназначен передаваемый в сеть пакет, в их собственной (локальной сети) или в другой сети (с которой устройство не имеет непосредственного соединения). Для этого каждое устройство перед отправкой пакета в сеть через определенный интерфейс определяет, совпадает ли адрес подсети, в которой он находится, с адресом подсети, в которую адресован пакет. Для этого производится:
1) побитовое умножение адреса интерфейса с маской подсети, заданной для него,
2) побитовое умножение адреса назначения с той же маской подсети (1&1=1, 1&0=0, 0&0=0).
В результате получаются адреса подсетей. Если адреса совпадают, устройство назначения находится в одной подсети (в одном сетевом сегменте) с передающим устройством, в противном случае подсети разные. На основании этой информации принимается решение о пути отправки пакета.
При этом, очевидно, альтернатив только две. Если адрес принадлежит подсети отправителя, пакет должен быть направлен ему непосредственно. Если подсеть получателя не совпадает с подсетью получателя, отправитель должен знать адрес устройства его собственной подсети, которое может решить проблему отправки такого пакета (маршрутизации) в нужную подсеть.
Что скрывается за очевидными на сетевом уровне словами «отправка пакета на другое сетевое устройство данной подсети»? Помня, что реальный путь обмена данными между двумя устройствами проходит и через все ниже-лежащие уровни, мы понимаем, что реальная адресация в пределах одной подсети невозможна без использования адресов канального уровня. Процедура перехода от адресов сетевого уровня к адресам канального уровня (разрешения адресов сетевого уровня в адреса канального уровня) также относится к функциям сетевого уровня. Соответствующий протокол и его работа будет рассмотрен ниже.