IP адресация - принцип работы

В данной статье мы посмотрим как работает IP адресация. Увидим как сетевые устройства определяют находится-ли устройство, с которым требуется установить связь в одной сети с ними. В завершение статьи, мы кратко рассмотрим два протокола LLMNR и DNS, предназначенных для связи IP адресации с именами компьютеров.

Основы IP адресации

В реальной жизни, когда вы отправляете кому-либо письмо, на конверте вы должны указать адрес получателя, а также свой адрес (адрес отправителя). Без этого писмо не найдет своего получателя и вы не сможете получить ответ на это письмо. То-же самое происходит в компьютеных сетях - для того, чтоб один компьютер отправил сообщение другому компьютеру, он должен знать адрес компьютера-получателя, а также предоставить информацию о своем адресе для получения ответа.

В интернете IP адресация используется посеместно. Когда вы постите в соц сетях, смотрите на Ютубе видео, или загружаете программы и не важно компьютер у вас, или смартфон - везде, для связи используется IP адресация.

Для идентификации компьютера, достаточно знать два параметра: IP адрес, и маску сети. Например, IP: 10.10.1.1 MASK: 255.255.255.0.

IP адрес - это всего-лишь абстракция того, что компьютер видит на самом деле. IPv4 адресса - 32 битные числа, что означает, что они состоят из комбинации 32 нулей и единиц для удобства чтения разделенных на четыре октета. IPv4 адрес для компьютера выглядит так: 00001010.00001010.00000001.00000001

Обратите внимание: Каждый из четырех октетов может принимать значение от 0 до 255 (255=2^8 - 1).

Если вы хотите преобразовать IP адрес, записаный в десятичной нотации в ее двоичный эквивалент, можно составить таблицу, как показано ниже.

Рассмотрим пример с IP адресом 192.168.2.102

    Октет 1 Октет 2 Октет 3 Октет 4
Число в десятичном формате Число в двоичном формате 192 168 2 102
128 10000000 1 1    
64 1000000 1     1
32 100000   1   1
16 10000        
8 1000   1    
4 100       1
2 10     1 1
1 1        
0 0        

Каждый из октетов может состоять только из суммы чисел первой, или второй колонки таблицы, только для десятичных чисел используется обычная арифметрика, а для двоичных логическая. Например, для получения октета со значением 192 = 128 + 64, или 1000000 & 1000000 = 1100000. Оба числа, 192 и 1100000 идентичны, только записаны в различных системах счисления. Также само вычисляется 168 - это сумма 128 + 32 + 1 и так далее. Если просуммировать все числа первой колонки, получится число 255, или в двоичном эквиваленте 11111111. 256 - это будет следующий, девятый разряд.

  1. Определяем из суммы каких чисел состоят октеты нашего IP адреса:
    • Первый октет: 128 + 64 = 192
    • Второй октет: 128 + 32 + 8 = 168
    • Третий октет: 2 не требуется суммировать
    • Четвертый октет: 64 + 32 + 4 + 2 = 100
  2. Записываем октеты в двоичном формате: 11000000.10101000.00000010.01100110.

Обратите внимание, что каждый октет обязательно должен состоять из восьми цифр. Если у вас получилоь число меньше чем нужно, недостающие символы заполните нулями слева. Например, число 2 = 10, но записываем мы 00000010.

Маска подсети

IP адрес состоит из двух частей: адрес подсети и адрес хоста. Маска подсети позволяет компьютеру отделить эти две составляющие. Обычно маска подсети выглядит так: 255.255.255.0, что в двоичном эквиваленте  выглядит так: 11111111.11111111.11111111.00000000. Определение происходит путем наложения в двоичном формате маски подсети на IP адрес:

11000000.10101000.00000000.00000001
11111111.11111111.11111111.00000000
11000000.10101000.00000000.00000000

В маске подсети, единицы обозначают адрес подсети, а нули - адрес хоста. Вы видите, что в приведенном выше примере первые три октета определяют адрес сети, а четвертый октет - определяет адрес хоста внутри этой сети.

Путем сравнения IP адресов и масок подсетей хостов мы можем определить, находятся-ли эти хосты внутри одной сети. Для определения используют побитовое сложение:

  • компьютеру 1 нужно отправить сообщение компьютеру 2.
  • компьютер1 имеет IP адрес 192.168.0.1 и маску подсети 255.255.255.0
  • компьютер2 имеет IP адрес 192.168.0.2 и маску подсети 255.255.255.0

компьютер1 производит побитовое сложение своего IP адреса и маски подсети.

Обратите внимание: При побитовом сложении, если оба бита равны 1 - результат будет 1, в противном случае результат будет 0.

11000000 10101000 00000000 00000001
11111111 11111111 11111111 00000000

11000000 10101000 00000000 00000000

компьютер1 производит побитовое сложение IP адреса и маски подсети для компьютера2.

11000000 10101000 00000000 00000010
11111111 11111111 11111111 00000000

11000000 10101000 00000000 00000000

Как вы видите - результат побитового сложения одинаков для обоих хостов, что означает что оба хоста находятся в пределах одной сети.

Маршрутизация

В примере выше, был рассмотрен случай, когда компьютеры находятся в пределах одной сети. Это означает, что эти компьютеры могут передавать информацию непосредственно между собой, как говорится из рук в руки. Если-же компьютеры находятся в различных сетях, для передачи данных между ними потребуется маршрутизатор.

Самым распространенным примером маршрутизатора есть WiFi роутер (роутер он потому, что маршрут по английски route, соответственно маршрутизатор стали называть роутерами).

Роутером называется сетевое устройство, котрое имеет два, или более сетевых интерфейса (которые имеют уникальные IP адерса). Устроен роутер так, что при поступлении на один из сетевых интерфесов IP пакета, производится его анализ и  принимается решение куда передавать IP пакет дальше. В случае с домашним роутером, вариантов не много - он просто передает пакеты дальше на маршрутизатор провайдера, где IP пакет опять анализируется и так далее до тех пор, пока ваш IP пакет не достигнет цели.

 

Итак, компьютер определил, что для отправки пакета требуется передать данные в другую сеть. Для этого, в настройках IP параметров каждого компьютера предусмотрен дополнительный параметр - IP адрес шлюза по умолчанию. Шлюз по умолчанию, это и есть роутер, который будет передавать IP пакеты сетевым устройствам, которые находятся за пределами вашей локальной сети.

Классы IP адресов

Исторически сложилось, что провайдерам выделялись IP адреса классами, которых всего три:

  Адреса сетей Маска подсети Количество сетей Количество хостов
Класс A 1-126.0.0.0 255.0.0.0 126 16 777 214
Класс B 128-191.0.0.0 255.255.0.0 16 384 65 534
Класс C 192-223.0.0.0 255.255.255.0 2 097 152 254

Резервированные диапазоны IP адресов

Вы наверное заметили, что диапазон адресов 127.x.x.x не вошел ни в один из классов. Данный диапазон зарезервирован под использование в интерфейсе обратной петли (loopback). Адреса из данного диапазона всегда укаызвают на локальный компьютер.

Диапазон адресов 169.254.0.x также зарезервирован под нужды APIPA.

Диапазоны частных IP адресов

До недавнего времени проблема с нехваткой IP адресов была не так актуальна как сейчас. Сейчас-же для того, чтоб каждое сетевое устройство организации подключить к интернет большое расторчительство, поэтому домашние сети и организации любого размера предпочитают использовать NAT. Для этой цели IANA решила зарезервировать по одной сети из каждого класса:

  • 10.0.0.1 – 10.255.255.254 из класса A
  • 172.16.0.1 – 172.31.255.254 из класса B
  • 192.168.0.1 – 192.168.255.254 из класса C

Вместо того, чтоб присваивать каждому устройству, подключающемуся к итернет реальный айпи адрес, провайдер выделяет только один рельный айпи адрес для маршрутизатора, через который компьютеры локальной сети выходят в интернет, а компьютерам локальной сети присваиваются айпи адреса из диапазонов, который наиболее подходят под нужды конкретной локальной сети. Затем, маршрутизатор подменяет адрес локальной сети у пакетов, отправляемых в интернет и возвращает адрес локальной сети пакетам, возвращающимся из интернет.

Обратите внимание: В большинстве случаев внешний IP адрес вашего маршрутизатора назначается DHCP сервером провайдера динамически, поэтому он со временем может изменяться. Для того, чтоб IP адрес не изменялся - нужно у провайдера заказать услугу статический айпи адрес.

Преобразование имен в IP адреса и обратно

Согласитесь, что запомнить имя сервера FileServer1 намного легче, нежели его IP адрес 89.53.234.2. В малых ссетях, где не установлен сервер DNS, если вы попытаетесь открыть FileServer1, ваш компьютер отправит широковещательный запрос, в котором запрашивается информация о FileServer1. Если FileServer1 получит этот широковещательный запрос, он в ответ вернет свой IP адрес. Даный метод разрешения имен компьютера в сети называется LLMNR (Link-lock Multicast Name Resolution), и очень удобен в масштабах домашней сети. Для больших сетей он имеет проблемы сс масштабируемостью: если в вашей сети огромное количество компьютеров - имеются две проблемы при использовании LLMNR: рассылка широковещательных запросов в таких условиях производит большую нагрузку на сеть, ну и в связи с этим, большинство роутеров не маршрутизируют широквещательные запросы.

DNS (Служба доменных имен)

Наиболее правильным методом решения проблемы с масштабируемостью - это использовать службу DNS (Domain Name System). Когда вы попытаетесь подключиться к  FileServer1, ваш компьютер обратится к серверу DNS, с вопросом кто такой FileServer1. DNS сервер вернет в отвер IP адрес FileServer1, который в дальнейшем ваш компьютер может использовать для подключения к FileServer1. Для более детального ознакомления со службой DNS чиайте статью DNS: Что это такое.

There are 6 Comments

Спасибо за пост. Можно еще освежить пост табличками и примерами, как здесь - http://sysadm.pp.ua/internet/network-planning.html . Может кому-то будет интересно + ссылки на RFC по адресации, и т.п.

Здравствуйте, сломал себе всю голову) в этой теме, приводится пример расчета ip адреса, и в примере у вас 192.168.2.100 , но у меня почемуто получается 192.168.2.102)

Доброго дня.
Вы правы - у меня закралась ошибочка, спасибо.

Твори, или уйди в сторону и не мешай творить другим.
Делись своим опытом и знаниями, ибо в могиле они тебе вряд-ли пригодятся.

Очень понятное объяснение только исправьте "Также само вычисляется 168 - это сумма 128 + 64 + 1(193) и так далее." но в таблице приведен пример правильно 128+32+8. Спасибо.

спасибо!

Твори, или уйди в сторону и не мешай творить другим.
Делись своим опытом и знаниями, ибо в могиле они тебе вряд-ли пригодятся.

Страницы

Добавить комментарий

You must have Javascript enabled to use this form.