IP адресация используется посеместно. Когда вы постите в соц сетях, смотрите на Ютубе видео, или загружаете программы и не важно компьютер у вас, или смартфон - везде, для связи используется IP адресация. Давайте разберемся как она работает.
Основы IP адресации
В реальной жизни, когда вы отправляете кому-либо письмо, на конверте вы должны указать адрес получателя, а также свой адрес (адрес отправителя). Без этого писмо не найдет своего получателя и вы не сможете получить ответ на это письмо. То-же самое происходит в компьютеных сетях - для того, чтоб один компьютер отправил сообщение другому компьютеру, он должен знать адрес компьютера-получателя, а также предоставить информацию о своем адресе для получения ответа. Этот адрес, присвоенный компьютеру, называется IP адрес.
Для идентификации компьютера, или другого сетевого устройства, достаточно знать два параметра: IP адрес, и маску сети.
Например:
IP: 192.168.2.102 Netmask: 255.255.255.0
На самом деле, IP адрес 192.168.2.102 и Маска 255.255.255.0 - это всего-лишь абстракция, представление числа в десятичном, понятном человеку формате.
Компьютер видит эти числа в двоичном формате. Для хранения IPv4 адресса используется 32 битные переменные, один байт равен 8 бит -> 4 * 8 = 32 - отсюда и четверка в IPv4, то-есть это 32 битные числа, состоящие из комбинации 32 нулей и единиц.
IPv4 адрес и маска подсети для компьютера выглядит так:
Address: 11000000101010000000001001100110
Netmask: 11111111111111111111111100000000
Как вы видите, для человека эти нули и единицы мало что говорят, потому для простоты восприятия, эти последовательности нулей и единиц разделены на блоки по 8 бит, октеты:
Address: 11000000.10101000.00000010.01100110
Netmask: 11111111.11111111.11111111.00000000
Уже легче, но проблема не ушла, даже разбив 32 битное число на 4 октета ситуация с восприятием не улучшилась, человек все-таки легче всего воспринимает числа, записанные в десятичном формате.
Address: 11000000.10101000.00000010.01100110 (192.168.2.102)
Netmask: 11111111.11111111.11111111.00000000 (255.255.255.0) /24
Ну вот. это уже другое дело. Вместо 11000000101010000000001001100110 -> 192.168.2.102 результат просто превосходный. IP адрес, записанный в таком формате запоминается гораздо легче.
Обратите внимание:
Каждый из четырех октетов может принимать значение от 0 до 255 (255 = 28 - 1), в двоичном эквиваленте от 00000000 до 11111111.
Если вы хотите преобразовать IP адрес, записаный в десятичной нотации в ее двоичный эквивалент, можно воспользоваться превосходным инструментом IPCalc, но для понимания сути процесса, давайте рассмотрим ниже приведенную таблицу.
Возьмем выше упомянутый IP адрес 192.168.2.102
Октет 1 | Октет 2 | Октет 3 | Октет 4 | ||
---|---|---|---|---|---|
Число в десятичном формате | Число в двоичном формате | 192 | 168 | 2 | 102 |
128 | 10000000 | * | * | ||
64 | 01000000 | * | * | ||
32 | 00100000 | * | * | ||
16 | 00010000 | ||||
8 | 00001000 | * | |||
4 | 00000100 | * | |||
2 | 00000010 | * | * | ||
1 | 00000001 | ||||
0 | 00000000 |
Каждый из четырех октетов может состоять только из суммы чисел первой колонки, или второй колонки таблицы, только для десятичных чисел используется обычная арифметрика, а для двоичных логическая, побитовое И. Например, для получения октета со значением 192, нужно к 128 прибавить 64, или 10000000 & 01000000 = 1100000. Оба числа, 192 и 11000000 идентичны, только записаны в различных системах счисления.
Обратите внимание: При побитовом И, если оба бита равны 1 - результат будет 1, в противном случае результат будет 0.
Также само вычисляется 168 - это сумма 128 + 32 + 8 и так далее.
Если просуммировать все числа первой колонки, получится число 255, в двоичном эквиваленте 11111111.
128 + 64 + 32 + 16 + 8 + 4 + 2 + 1 = 255
256 - это будет следующий, девятый разряд. 00000001 00000000
- Определяем из суммы каких чисел состоят октеты нашего IP адреса:
- Первый октет: 128 + 64 = 192
10000000 & 01000000 = 11000000 - Второй октет: 128 + 32 + 8 = 168
10000000 & 00100000 & 00001000 = 10101000 - Третий октет: 2 не требуется суммировать
00000010 - Четвертый октет: 64 + 32 + 4 + 2 = 102
01000000 & 00100000 & 00000100 & 00000010 = 01100110
- Первый октет: 128 + 64 = 192
- Записываем октеты IP адреса в двоичном формате: 11000000.10101000.00000010.01100110.
Обратите внимание, что каждый октет обязательно должен состоять из восьми цифр. Если у вас получилоь число меньше чем нужно, недостающие символы заполните нулями слева. Например, число 2 = 10, но записываем мы 00000010.
Маска подсети
С IP адресом более-менее разобрались, теперь давайте разберемся что такое маска подсети.
Маска подсети, это 32 битное число, благодаря которому можно определить какая часть IP адреса содержит адрес сети, а какая адрес хоста внутри той самой сети.
При рассмотрении IP адреса мы уже встречались с маской и знаем, что для компьютера она выглядит как-то так: 11111111111111111111111100000000, но для лучшего восприятия ее записывают в десятичной нотации:
255.255.255.0, или через косую черту после IP адреса 192.168.2.102/24.
Для того, чтоб определить адрес подсети, следует произвестии побитовое И маски подсети и IP адреса:
Address: 192.168.2.102 11000000.10101000.00000010.01100110
Netmask: 255.255.255.0 = 24 11111111.11111111.11111111.00000000
Network: 192.168.2.0/24 11000000.10101000.00000010.00000000
В приведенном выше примере первые три октета определяют адрес сети, а четвертый октет - определяет адрес хоста внутри этой сети, но в реальной жизни маска подсети может иметь не 24 бит, а, например 25, или другую длину.
Например, если маска равна 25 бит, адрес сети будет
Address: 192.168.2.102 11000000.10101000.00000010.01100110
Netmask: 255.255.255.128 = 25 11111111.11111111.11111111.10000000
Network: 192.168.2.0/25 11000000.10101000.00000010.00000000
Обратите внимание, что для хоста 192.168.2.102, для обоих масок подсетей(/24 и /25), адрес подсети у нас получился одинаковый 192.168.2.0. Получилось это потому, что учеличив длину маски на 1, мы разделили подсеть 192.168.2.0/24 на 2 части, в результате получив две подсети 192.168.2.0/25 и 192.168.2.128/25. Соответственно, хост с адресом 192.168.2.102 попал в подсеть 192.168.2.0/25.
192.168.2.0/24 = 192.168.2.0/25 + 192.168.2.128/25
Если мы возьмем IP адрес 192.168.2.230, то для него уже адрес подсети будет 192.168.2.128/25:
Address: 192.168.2.230 11000000.10101000.00000010.11100110
Netmask: 255.255.255.128 = 25 11111111.11111111.11111111.10000000
Network: 192.168.2.128/25 11000000.10101000.00000010.10000000
Путем сравнения IP адресов и масок подсетей хостов мы можем определить, находятся-ли эти хосты внутри одной сети.
Рассмотрим пример:
Компьютеру 1 нужно отправить сообщение компьютеру 2 и компьютеру 3.
компьютер 1 имеет IP адрес 192.168.2.102 и маску подсети 255.255.255.0
компьютер 2 имеет IP адрес 192.168.2.103
компьютер 3 имеет IP адрес 192.168.3.104
компьютер 1 производит побитовое И своего IP адреса и маски подсети.
Address1: 192.168.2.102 11000000.10101000.00000010.01100110
Netmask1: 255.255.255.0 = 24 11111111.11111111.11111111.00000000
Network1: 192.168.2.0/24 11000000.10101000.00000010.00000000
компьютер 1 производит побитовое И IP адреса компьютера 2 и своей маски подсети.
Address2: 192.168.2.103 11000000.10101000.00000010.01100111
Netmask1: 255.255.255.0 = 24 11111111.11111111.11111111.00000000
Network2: 192.168.2.0/24 11000000.10101000.00000010.00000000
компьютер1 производит побитовое И IP адреса компьютера 3 и своей маски подсети.
Address3: 192.168.3.104 11000000.10101000.00000011.01101000
Netmask1: 255.255.255.0 = 24 11111111.11111111.11111111.00000000
Network3: 192.168.3.0/24 11000000.10101000.00000011.00000000
Результат побитового И одинаков для 1 и 2 компьютеров и отличается для 3 компьютера:
Network1: 192.168.2.0/24 11000000.10101000.00000010.00000000
Network2: 192.168.2.0/24 11000000.10101000.00000010.00000000
Network3: 192.168.3.0/24 11000000.10101000.00000011.00000000
Это означает, что 2 хост находятся в пределах одной сети для хоста 1, а третий хост находится за пределами сети, к которой относятся хост 1.
Если компьютер не принадлежит данной сети, пакет невозможно отправить напрямую, а отправляется на маршрутизатор, что выводит нас на следующий этап данной статьи - маршрутизация.
Маршрутизация
В примере выше, был рассмотрен случай, когда компьютеры находятся как в пределах одной сети, так и в разных сетях. Если компьютеры находятся в пределах одной сети, это означает, что эти компьютеры могут передавать информацию непосредственно между собой, как говорится из рук в руки. Если-же компьютеры находятся в различных сетях, для передачи данных между ними потребуется маршрутизатор, в простонародье называемый роутером.
Роутером называется сетевое устройство, котрое имеет два, или более сетевых интерфейса, каждому из которых присвоен уникальный IP адрес и принадлежат эти адреса к разным подсетям. На уровне операционной системы роутера запущена служба, которая при заходе на один из сетевых интерфесов IP пакета, производит его анализ и принимает решение куда передавать пакет дальше, выбирает маршрут.
В случае с домашним роутером, вариантов не много - он просто передает пакеты дальше на маршрутизатор провайдера, где IP пакет опять анализируется и так далее до тех пор, пока ваш IP пакет не достигнет цели.
Небольшое отступление. Практически у каждого из нас есть смартфон, работающий под управлением Android, или IOS. Каждый смартфон можно в один клик сделать роутером - достаточно включить на телефоне Точку доступа WiFi. Так-же, ваш домашний компьютер тоже может стать роутером! Для этого достаточно в компьютер добавить еще один, или несколько сетевых адаптеров, а на уровне системы сделать несколько телодвижений для включения маршрутизации. В рамках данной статьи я этого не покажу, но имейте в виду, что практически каждое сетевое устройство может быть роутером.
Примечание:
Маршрутизатор зовется Роутером потому, что все устройства на пути передаваемого пакета являются частью маршрута, а маршрут по английски переводится route, соответственно маршрутизатор называют роутер.
Самый простой и самый распространенный случай, это когда сетевому устройству доступен один маршрутизатор - у каждого дома стоит WiFi роутер, через который доступ в интернет имеют все домашние устройства.
Примечание:
В редких случаях можно встретить случаи использования нескольких роутеров, но это больше исключение, чем правило. Где может понадобиться несколько роутеров? Например у вас дома заходит интернет от нескольких провайдеров и вы не имеете продвинутого роутера, имеющего два, или более внешних интерфейса. В этом случае каждый роутер имеет выход в интернет через отдельный канал связи, а внутренними интерфейсами оба маршрутизатора смотрят в общую домашнюю сеть.
Итак, компьютер определил, что для отправки пакета требуется передать данные в другую сеть. Для этого, в настройках 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 адрес не изменялся - нужно у провайдера заказать услугу статический айпи адрес.
There are 7 Comments
Спасибо за пост. Можно еще
Спасибо за пост. Можно еще освежить пост табличками и примерами, как здесь - http://sysadm.pp.ua/internet/network-planning.html . Может кому-то будет интересно + ссылки на RFC по адресации, и т.п.
http://profhelp.com.ua/articles/ip-%D0%B0%D0%B4%D1%80%D0%B5%D1%8
Здравствуйте, сломал себе всю голову) в этой теме, приводится пример расчета ip адреса, и в примере у вас 192.168.2.100 , но у меня почемуто получается 192.168.2.102)
Закралась ошибочка
Доброго дня.
Вы правы - у меня закралась ошибочка, спасибо.
Делись своим опытом и знаниями, ибо в могиле они тебе вряд-ли пригодятся.
ОСНОВЫ IP АДРЕСАЦИИ
Очень понятное объяснение только исправьте "Также само вычисляется 168 - это сумма 128 + 64 + 1(193) и так далее." но в таблице приведен пример правильно 128+32+8. Спасибо.
спасибо!
спасибо!
Делись своим опытом и знаниями, ибо в могиле они тебе вряд-ли пригодятся.
IP АДРЕСАЦИЯ - ПРИНЦИП РАБОТЫ
очень полезная статья
"Обратите внимание: При
"Обратите внимание: При побитовом сложении, если оба бита равны 1 - результат будет 1, в противном случае результат будет 0."
Вы в своем уме?? Это побитовое умножение.
Добавить комментарий