Некоторые основы IP-адресов
IP-адреса внутренне представлены как 32-битное значение. Самые верхние N битов идентифицируют сеть, оставшаяся часть идентифицирует хост в сети.
Давайте посмотрим на два примера IP, давайте сначала посмотрим на 32 бита:
10101100000100100000000010010110
10101100000100100000000110010110
Вы можете переписать IP в более удобочитаемом виде, разделив его на 8-битные группы (байты) и записав каждый двоичный файл в десятичном формате:
сгруппированных:
10101100 00010010 00000000 10010110
10101100 00010010 00000001 10010110
сгруппированы и десятичные:
172.18.0.150
172.18.1.150
Вопрос теперь в том, «находятся ли эти IP-адреса в одной сети»? Это зависит от конфигурации сети. Давайте возьмем для примера маску сети
11111111 11111111 11111111 00000000
(Те, что для сети, нули для хоста.)
Если расположить эти два IP-адреса, вы увидите, что оба IP-адреса находятся в разных сетях. Если маска где 255.255.0.0, они будут в той же сети.
Другая сеть:
11111111 11111111 11111111 00000000
10101100 00010010 00000000 10010110
10101100 00010010 00000001 10010110
Та же сеть:
11111111 11111111 00000000 00000000
10101100 00010010 00000000 10010110
10101100 00010010 00000001 10010110
Как и в случае IP-адресов, сетевые маски также могут быть записаны в десятичном формате: 255.255.255.0 или 255.255.0.0. Если вам сейчас нужно написать полный IP-адрес и маску сети, например 172.18.0.150/255.255.255.0 или 172.18.0.150/255.255.240.0, это очень много вещей для записи. Более короткая запись - это не маска сети, а число 1 в маске сети: 172.18.0.150/24 или 172.18.0.150/20. Как вы знаете, 1 всегда являются самыми старшими битами, поэтому ясно, что означает "/24" или "/20".
Некоторые основы маршрутизации
Если вы еще не прочитали мой ответ об использовании MAC-адресов, вы можете сделать это сейчас.
Вкратце: если компьютер отправляет IP-пакет, он сначала проверяет, находится ли IP-адрес назначения в той же сети, что и сам компьютер (исходный IP-адрес). Если это так, компьютер может отправить пакет напрямую в сеть, а конечный компьютер может его получить. Если IP-адрес назначения не находится в той же сети, то компьютер не может напрямую достичь цели, но должен отправить пакет следующему маршрутизатору. Таблицы маршрутизации указывают маршрутизатору, к каким сетям он должен подключаться, к какому маршрутизатору (например, «если сеть 172.18.0.0/24, то маршрутизатор 1.1.1.1»). Этот маршрутизатор снова проверит, может ли он напрямую достичь IP-адреса назначения или ему необходимо переслать пакет следующему маршрутизатору.
Если вы хотите взглянуть на таблицу маршрутизации вашего компьютера, вы можете использовать ip route
.
Имейте в виду, что на стороне получателя маска сети не имеет значения. 172.18.0.150/24 или 172.18.0.150/8 оба являются 172.18.0.150, и если компьютер получает пакет для 172.18.0.150, он его использует. Маска сети используется только на стороне отправителя. Если компьютер A отправляет пакет с адреса aaaa /n на компьютер B с адресом bbbb /m, то отправитель A сравнивает старшие n битов исходного адреса aaaa и верхние n битов bbbb. Если оба равны, то aaaa и bbbb находятся в одной сети (и n должно быть равно m), и пакет может быть отправлен напрямую. Если это не так, то сети не равны (это не имеет значения, что n может не равняться m), и пакет должен быть отправлен маршрутизатору, который будет пересылать пакет.
Понимание вывода "ip route"
Давайте возьмем, например, компьютер с двумя сетевыми картами:
по умолчанию через 192.168.178.3 dev eth1 протостатическая метрика 1024
10.0.0.0/8 через 172.16.1.1 dev eth0
169.254.0.0/16 dev eth1 scope link метрика 1000
172.16.0.0/16 dev eth0 прото ядро область ссылка src 172.16.126.31
192.168.178.0/24 dev eth1 Прото-ядро область ссылки src 192.168.178.21
Строки с 3 по 5 выводятся из IP-адресов, настроенных на сетевых картах (ip addr
). Они сообщают компьютеру, что если отправляемый пакет соответствует, например, сети 172.16.0.0/16, он должен быть отправлен по eth0 (в моем случае он настроен на IP-адрес 172.16.126.31). Вторая строка - это определенный маршрут, который я добавил. В нем говорится, что пакеты на 10.0.0.0/8 должны быть отправлены на 172.16.1.1 на eth0. Первая строка дает шлюз / маршрутизатор по умолчанию, который будет использоваться для пакетов, которые не соответствуют какой-либо другой данной сети.
Кто решает, что такое сеть?
На верхнем уровне RFC3330 определяет, что не все IP-адреса предназначены для широкого использования, но что некоторые диапазоны зарезервированы для специальных целей. Одним из примеров является сеть 127.0.0.0/8. Самый известный адрес в этом диапазоне - 127.0.0.1 (имя: localhost), который идентифицирует ваш собственный компьютер. Этот IP, конечно, полезен только на вашем компьютере, потому что каждый пакет, отправленный в эту сеть, никогда не покидает ваш компьютер. Принимая все возможные IP-адреса и удаляя зарезервированные диапазоны, у вас все еще есть пул доступных сетей. Этим большим пулом управляет ICANN. Следующим уровнем иерархии являются пять региональных интернет-реестров (например, RIPE NCC). Они получают диапазоны IP-адресов от ICANN и продают их своим собственным клиентам - местным интернет-реестрам. Они продают их конечным потребителям (например, компании).
Решение о том, как разделить полный диапазон IP-адресов, принимается каждым менеджером пула. Допустим, вы являетесь ICANN и управляете диапазоном 50.0.0.0/8-100.0.0.0/8. Если теперь RIPE NCC запрашивает некоторые IP-адреса, вы можете указать их 50.0.0.0/16 или 50.0.0.0/8 или 50.0.0.0/8 до 60.0.0.0/8. То же самое верно для RIPE NCC и местных интернет-реестров. Они могут обеспечить большие или маленькие сети. В старые добрые времена реестры были довольно неохотны и поэтому все еще существуют крупные университеты или компании с широким диапазоном адресов, в которых они никогда полностью не нуждались. В некоторых университетах есть /8 сетей, поэтому у них есть 24 бита для хоста. Это означает, что они могут работать с более чем 16 миллионами компьютеров. Если у них всего несколько тысяч компьютеров, это означает, что миллионы IP-адресов зарезервированы для этого клиента, но никогда не используются - что трата. Поэтому в последнее время вы больше не получаете большие диапазоны, вы должны спорить, действительно ли вам нужен большой диапазон.
В любом случае, как вы решаете продавать диапазоны IP-адресов (сети), вы должны помнить, что крупные маршрутизаторы в Интернете должны знать, как достичь практически любой из существующих сетей. Если вы продаете очень маленькие сети, вы можете получить 10.0.0.0/24 и 10.1.0.0/24 в Европе, 10.0.1.0/24 и 10.1.1.0/24 в Азии и 10.0.2.0/24 и 10.1.2.0. 24 находясь в Африке. Это означает, что в таблице маршрутизации у маршрутизатора будет много небольших записей в сети. Если бы вы давали 10.0.0.0/16 в Европу, 10.1.0.0/16 в Азию и 10.2.0.0/16 в Африку, в таблице маршрутизации было бы только три записи для больших сетей.
Но это не наша проблема, это дело интернет-реестров. Не совсем, потому что ...
Когда и как мне нужно настроить сеть?
Если вы используете маршрутизатор компании, вы можете получить диапазон 40.41.0.0/16 и назначить эти IP-адреса своим компьютерам так, как вам нравится. Но в этом случае все компьютеры должны быть в одной физической сети (между ними нет маршрутизаторов). Это может дать плохую производительность для больших сетей, поэтому вы можете разделить сети. Если у вас есть, например, два здания, то вы можете выделить 40.41.0.0/17 для строительства одного и 40.41.128.0/17 для строительства двух.
Частные IP-адреса
В случае, если вы используете широкополосный маршрутизатор или маршрутизатор компании, вы могли видеть IP-адреса частной сети, например 172.16.0.0/12. IP-адрес, который вы дали (172.18.0.150), является таким частным IP-адресом (вы можете легко проверить это с помощью новых знаний о сетевых масках). Они используются, если вы получили N общедоступных IP-адресов (в случае обычного провайдера N = 1) из локального интернет-реестра, но у вас есть M> N устройств, которым требуется IP-адрес. В этом случае маршрутизатор имеет один общедоступный IP-адрес (используется для всего трафика в и из Интернета), а также частную сеть с частными IP-адресами. В вашем случае маршрутизатор просто взял частную сеть 172.18.0.0/24 и передает IP-адреса из этой сети каждому из ваших компьютеров.
Но что, если чужой роутер тоже заберет 172.18.0.0/24? Удивительно, но это не проблема. Это потому, что 172.16.0.0/12 является частным диапазоном адресов. Вы никогда не увидите IP-адреса этого диапазона в общедоступном Интернете. Если вы отправите пакет в Интернет, указав 172.18.0.150 в качестве адреса источника, маршрутизатор заменит 172.18.0.150 на общедоступный IP-адрес, предоставленный вам провайдером. Если маршрутизатор получает пакет, отправленный на общедоступный IP-адрес, он определяет, на какой из ваших компьютеров он должен отправить пакет, и меняет целевой IP-адрес на IP-адрес частной сети вашего компьютера.