Как найти broadcast в сети


Загрузить PDF


Загрузить PDF

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

  1. 1

    Для сети с классовой адресацией общее число битов равно 8. Или Tb = 8.

    • Маска подсети может быть 0, 128, 192, 224, 240, 248, 252, 254 и255.

      Изображение с названием 1636270 1b1

    • Таблица ниже позволяет определить «число битов, используемое для подсетей» (n) для соответствующей маски подсети.

      Изображение с названием 1636270 1b2

    • Значение маски подсети по умолчанию 255. Оно не используется для разделения подсетей.
    • Пример:
      Пусть IP-адрес будет равен 210.1.1.100 а маска подсети 255.255.255.224

      Общее число битов Tb = 8
      Число битов используемое для подсетей n = 3(так как маска подсети равна 224, а соответствующее «число битов используемое для подсетей» из таблицы сверху равно 3)

      Изображение с названием 1636270 1b4

  2. Изображение с названием 1636270 2

    2

    Из предыдущего шага у вас есть «число битов используемое для подсетей» (n), и вы знаете Tb. Теперь вы можете найти «число битов оставшееся для хостов» (m) равное Tb — n, так как общее число битов — это сумма битов для подсетей и хостов Tb = m+n.

    • Число битов оставшееся для хостов = m = Tb — n = 8 — 3 = 5

      Изображение с названием 1636270 2b1

  3. Изображение с названием 1636270 3

    3

    Теперь вам нужно посчитать «число подсетей», равное 2n, и «значение последнего бита, используемого для маски подсети», которое равно 2m. Число хостов для подсети равно 2m — 2.

    • Число подсетей = 2n = 23 = 8

      Значение последнего бита, используемого для маски подсети = Δ = 2m = 25 = 32

      Изображение с названием 1636270 3b1

  4. Изображение с названием 1636270 4

    4

    Теперь вы можете найти ранее рассчитанное число подсетей, разделив их по значению «последнего бита, используемого для маски подсетей» или Δ-адресу.

    • 8 подсетей (как мы вычислили на предыдущем шаге) показаны выше.
    • В каждой из них 32 адреса.
  5. Изображение с названием 1636270 5

    5

    Теперь вам нужно определить, в какой сети ваш IP-адрес. Первый адрес этой подсети будет адресом сети, а последний — широковещательным адресом.

    • Здесь мы выбрали IP-адрес 210.1.1.100. Он находится в подсети 210.1.1.96 — 210.1.1.127 (смотрите предыдущую таблицу). Потому 210.1.1.96 — адрес сети, а 210.1.1.127 широковещательный адрес для выбранного IP-адреса 210.1.1.100.

      Изображение с названием 1636270 5b1

    Реклама

  1. 1

    В сетях CIDR после IP-адреса идет префикс подсети длиной в один бит, отделенный наклонной чертой (/). вам нужно будет преобразовать его в четырехкомпонентный формат с точкой. Следуйте шагам ниже, чтобы проделать это.

    1. Запишите префикс в формате, указанном ниже.

      Изображение с названием 1636270 6b1

      • Если префикс 27, запишите его как 8 + 8 + 8 + 3 .
      • Если он 12, запишите его как 8 + 4 + 0 + 0 .
      • По умолчанию он 32, что записывается как 8 + 8 + 8 + 8.
    2. Преобразуйте соответствующие биты по таблице ниже и запишите значение в четырехкомпонентном формате.

      Изображение с названием 1636270 6b2

    3. Пусть наш IP-адрес будет 170.1.0.0/26 . Используя таблицу выше, вы можете записать:
                          26 = 8 + 8 + 8 + 2
                              255 . 255 . 255 . 192

      Теперь IP-адрес 170.1.0.0, а маска подсети в четырехкомпонентном формате с точкой 255.255.255.192 .

      Изображение с названием 1636270 6b3

  2. 2

    Общее число битов = Tb = 8.

    • Маска подсети может быть 0, 128, 192, 224, 240, 248, 252, 254 и 255.
    • Таблица ниже позволяет определить «число битов, используемое для подсетей» (n) для соответствующей маски подсети .

      Изображение с названием 1636270 7b2

    • Значение маски подсети по умолчанию 255. Оно не используется для разделения подсетей.
    • Из предыдущего шага наш IP-адрес = 170.1.0.0,а маска подсети = 255.255.255.192

      Общее число битов = Tb = 8
      Число битов используемое для подсетей = n = 2 (так как маска подсети равна 192, а соответствующее «число битов используемое для подсетей» из таблицы сверху равно 2).

      Изображение с названием 1636270 7b4

  3. Изображение с названием 1636270 8

    3

    Из предыдущего шага у вас есть «число битов используемое для подсетей» (n), и вы знаете Tb. Теперь вы можете найти «число битов оставшееся для хостов» (m) равное Tb — n, так как общее число битов — это сумма битов для подсетей и хостов Tb = m+n.

    • Число битов оставшееся для хостов = m = Tb — n = 8 — 2 = 6
  4. Изображение с названием 1636270 9

    4

    Теперь вам нужно посчитать «число подсетей» равное 2n, и «значение последнего бита, используемого для маски подсети», которое равно 2m. Число хостов для подсети равно 2m — 2.

    • Число подсетей = 2n = 22 = 4

      Значение последнего бита, используемого для маски подсети = Δ = 2m = 26 = 64

      Изображение с названием 1636270 9b1

  5. 5

    Теперь вы можете найти ранее рассчитанное число подсетей, разделив их по значению «последнего бита, используемого для маски подсетей» или Δ-адресу.

    • Получаем 4 подсети (как мы вычислили на предыдущем шаге)

      Изображение с названием 1636270 10b1

    • В каждой из них ест 64 адреса.

      Изображение с названием 1636270 10b2

  6. Изображение с названием 1636270 11

    6

    Теперь вам нужно определить, в какой сети ваш IP-адрес. Первый адрес этой подсети будет адресом сети, а последний — широковещательным адресом.

    • Здесь мы выбрали IP-адрес 170.1.0.0. Он находится в подсети 170.1.0.0 — 170.1.0.63 (смотрите предыдущую таблицу). Потому 170.1.0.0 — адрес сети, а 170.1.0.63 широковещательный адрес для выбранного IP-адреса 170.1.0.0.

      Изображение с названием 1636270 11b1

    Реклама

  1. 1

    Найдите IP-адрес и маску подсети. На компьютере под управлением Windows сделать это можно путем ввода команды «ipconfig» (без кавычек) в командной строке. IP-адрес отобразится напротив IPv4-адреса, а маску подсети можно найти строкой ниже. На Mac найти IP-адрес и маску подсети можно в «Системных настройках» в разделе «Сеть».

  2. 2

    Перейдите по адресу https://ip-calculator.ru/. Можете использовать любой браузер, вне зависимости от того, под управлением какой системы работает ваш компьютер.

  3. 3

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

  4. 4

    В поле «Маска» введите маску подсети. Опять же, сайт автоматически попытается вычислить эти значения. Удостоверьтесь, что данные указаны верно. Маску подсети можно ввести как в формате CIDR (24), так и в четырехкомпонентном формате с точкой (255.255.255.0).

  5. 5

    Нажмите Подсчитать. Это синяя кнопка напротив поля «Маска». Сетевой адрес будет указан ниже в разделе «Network», а широковещательный адрес — в разделе «Broadcast».

    Реклама

Примеры

  • IP-адрес = 100.5.150.34, а маска подсети = 255.255.240.0
    Общее число битов = Tb = 8

    Маска подсети 0 128 192 224 240 248 252 254 255
    Число битов, используемое для подсетей (n) 0 1 2 3 4 5 6 7 8

    Число битов, используемое для подсетей для маски 240 = n1 = 4
    (так как маска подсети равна 240, а соответствующее «число битов используемое для подсетей» из таблицы сверху равно 4)

    Число битов, используемое для подсетей для маски 0 = n1 = 0
    (так как маска подсети равна 0, а соответствующее «число битов используемое для подсетей» из таблицы сверху равно 0)

    Число битов оставшееся для хостов для маски 240 = m1 = Tb — n1 = 8 — 4 = 4
    Число битов оставшееся для хостов для маски 0 = m2 = Tb — n2 = 8 — 0 = 8

    Число подсетей для маски 240 = 2n1 = 24 = 16
    Число подсетей для маски 0 = 2n2 = 20 = 1

    Значение последнего бита, используемого для маски подсети для маски 240 = Δ1 = 2m1 = 24 = 16
    Значение последнего бита, используемого для маски подсети для маски 0 = Δ2 = 2m2 = 28 = 256

    Для маски подсети 240, адреса будут разделены по 16, а для маски 0 их будет 256. Используя значения Δ1 и Δ2, получим 16 подсетей ниже

    100.5.0.0 — 100.5.15.255 100.5.16.0 — 100.5.31.255 100.5.32.0 — 100.5.47.255 100.5.48.0 — 100.5.63.255
    100.5.64.0 — 100.5.79.255 100.5.80.0 — 100.5.95.255 100.5.96.0 — 100.5.111.255 100.5.112.0 — 100.5.127.255
    100.5.128.0 — 100.5.143.255 100.5.144.0 — 100.5.159.255 100.5.160.0 — 100.5.175.255 100.5.176.0 — 100.5.191.255
    100.5.192.0 — 100.5.207.255 100.5.208.0 — 100.5.223.255 100.5.224.0 — 100.5.239.255 100.5.240.0 — 100.5.255.255

    IP-адрес 100.5.150.34 относится к подсети 100.5.144.0 – 100.5.159.255, поэтому 100.5.144.0 — адрес сети, а — 100.5.159.255 широковещательный адрес.

  • IP-адрес в сети CIDR = 200.222.5.100/9
                        9 = 8 + 1 + 0 + 0
                            255 . 128 . 0 . 0

    IP -адрес = 200.222.5.100, а маска подсети = 255.128.0.0
    Общее число битов = Tb = 8

    Маска подсети 0 128 192 224 240 248 252 254 255
    Число битов, используемых для подсетей (n) 0 1 2 3 4 5 6 7 8

    Число битов, используемое для подсетей для маски 128 = n1 = 1
    (так как маска подсети равна 128, а соответствующее «число битов используемое для подсетей» из таблицы сверху равно 1)

    Число битов, используемое для подсетей для маски 0 = n2 = n3 = 0
    (так как маска подсети равна 0, а соответствующее «число битов используемое для подсетей» из таблицы сверху равно 0)

    Число битов оставшееся для хостов для маски 128 = m1 = Tb — n1 = 8 — 1 = 7
    Число битов оставшееся для хостов для маски 0 = m2 = m3 = Tb — n2 = Tb — n3 = 8 — 0 = 8

    Число подсетей для маски 128 = 2n1 = 21 = 2
    Число подсетей для маски 0 = 2n2 = 2n3 = 20 = 1

    Значение последнего бита, используемого для маски подсети для маски 128 = Δ1 = 2m1 = 27 = 128
    Число хостов на подсеть = 2m1 — 2 = 27 — 2 = 126

    Значение последнего бита, используемого для маски подсети для маски 0 = Δ2 = Δ3 = 2m2 = 2m3 = 28 = 256
    Число хостов на подсеть с маской 0 = 2m2 — 2 = 2m3 — 2 = 28 — 2 = 254

    Для маски подсети 128, адреса будут разделены по 128, а для маски 0 их будет 256. Используя значения Δ1 и Δ2, получим 2 подсети ниже

    200.0.0.0 — 200.127.255.255 200.128.0.0 — 200.255.255.255

    IP-адрес 200.222.5.100 относится к подсети 200.128.0.0 – 200.255.255.255, и поэтому 200.128.0.0 — адрес подсети, а 200.255.255.255 — широковещательный адрес.

Советы

  • В сетях CIDR сразу после того, как вы перевели префикс в четырехкомпонентный формат, вы можете использовать тот же метод, что и для сетей с классовой адресацией.
  • Этот метод работает только для сетей типа IPv4 и не подходит для IPv6.

Реклама

Об этой статье

Эту страницу просматривали 95 957 раз.

Была ли эта статья полезной?


Download Article

Multiple ways to find the network and broadcast addresses for an IPv4 address


Download Article

  • Using a Network Calculator
  • |

  • Converting to Binary
  • |

  • Using Classful Network
  • |

  • Using CIDR
  • |

  • Classful Network Examples
  • |

  • CIDR Examples
  • |

  • Q&A
  • |

  • Tips

To calculate the network and broadcast address for an IP address, you’ll need the IP address, subnet mask, and CIDR notation. With this information, you can use an online networking calculator to calculate the address, or find it manually. There are multiple ways to manually calculate the addresses, including by converting both the IP address and subnet mask to binary values, using classful addressing, and using CIDR for classless networks. This wikiHow teaches you four different ways to calculate your network address and broadcast address from an IP address, along with helpful examples for any scenario.

Things You Should Know

  • To get the network and broadcast addresses without doing math, use a network calculator.
  • The easiest way to calculate the broadcast and network addresses manually is to convert to binary and count the bits.
  • For a classless network, use the CIDR method to subnet your network.
  1. Image titled Calculate Network and Broadcast Address Step 1

    1

    Go to http://jodies.de/ipcalc in a web browser. This handy calculator takes the pain out of calculating the network address and broadcast address.

  2. Image titled Calculate Network and Broadcast Address Step 2

    2

    Enter the IP address and subnet mask. In the field that says Address (Host or network), type or paste the IP address. In the «Netmask» field, enter the subnet mask in CIDR format (e.g., /24 for a class C network).

    Advertisement

  3. Image titled Calculate Network and Broadcast Address Step 3

    3

    Click Calculate. It is the button below the IP address field. The network address will appear next to «Network,» and the broadcast address appears next to «Broadcast.»

  4. Advertisement

  1. Image titled Calculate Network and Broadcast Address Step 4

    1

    Convert the IP address and subnet mask to binary. To calculate the broadcast and network addresses for an IP address, you’ll need to first to binary values. The easiest way to do this is to use an online IP to binary calculator, such as this one by Code Beautify. But if you’re a networking student or just want to know how to do this by hand, you can check out our guide on converting decimals to binary.

    • For example, if the IP address is 192.168.1.3, the binary address is 111000000.10101000.00000001.00000011.
    • If the subnet mask is 255.255.224.0, which is /19 in CIDR notation, the binary address would be 11111111.11111111.11100000.00000000.
    • We will use the /19 example in this method.
  2. Image titled Calculate Network and Broadcast Address Step 5

    2

    Count the bits in the subnet mask. In our example, we’re using a /19 network. This means that the first 19 bits of the subnet mask represents the network, and the remaining 13 bits are the host.

    • 11111111.11111111.111 (network) 00000.00000000 (host)
    • If you were working with a /24 network, you’d count the first 24 bits (digits) instead. For a /8 network, you’d count the first 8 bits, etc.
  3. Image titled Calculate Network and Broadcast Address Step 6

    3

    Count the bits in the IP address. Now we’ll want to count the first 19 digits of our converted IP address, just as we did with the subnet mask, because we’re working with a /19 network.

    • For the binary IP address 11000000.10101000.00000001.00000011, 11000000.10101000.000, the first 19 digits, is the network. The remaining 13 digits, 00001.00000011, represents the host.
  4. Image titled Calculate Network and Broadcast Address Step 7

    4

    Determine the network address. Now let’s look at the first 19 digits of our converted IP address: 11000000.10101000.000. To find the network address, we’ll simply add a period after the last number, then replace everything that comes after the first 19 bits with the last 13 digits of the converted subnet mask, which, in our example, is 00000.00000000.

    • IP address: 11000000.10101000.000000001.00000011
    • Subnet mask: 11111111.11111111.11100000.00000000
    • Network address: The first 19 bits from the IP address with the last 13 bits of the subnet mask: 11000000.10101000.000.00000.00000000
    • Converted: 192.168.0.0
  5. Image titled Calculate Network and Broadcast Address Step 8

    5

    Determine the broadcast address. Now, instead of replacing the last 13 bits of our IP address with all zeroes (00000.00000000), we’ll convert all of those zeroes to ones to find the broadcast address:

    • IP address: 11000000.10101000.00000001.00000011
    • Last 13 bits of subnet mask as ones: 11111.11111111
    • Broadcast address: 11000000.10101000.000.11111.11111111
    • Converted: 192.168.0.31
  6. Advertisement

  1. Image titled 1636270 1b2

    1

    Determine the total number of bits used for subnetting. For a classful network total bits is 8. So Total bits = Tb = 8. The total bits used for subnetting (n) is determined by the subnet mask.

    • Subnet masks can be 0, 128, 192, 224, 240, 248, 252, 254 and 255.
    • The number of bits used for subnetting (n) to their corresponding subnet mask is as follows: 0=0, 128=1, 192=2, 224=3, 240=4, 248=5, 252=6, 254=7, and 255=8.
    • Subnet mask 255 is default, so it’ll not be considered for subnet masking.
    • For example: Let’s assume the IP address is 210.1.1.100 and Subnet mask is 255.255.255.224. The total bits= Tb = 8. The number of bits used for subnetting for subnet mask 224 is 3.
  2. Image titled 1636270 2b1

    2

    Determine the number of bits left to host. The equation to determine the number of bits left to host is (m) = Tb — n. From the previous step, you got the number of bits used for subnetting (n) and you know the total bits used «Tb=8″. then you can get the number of bits left for host by subtracting 8-n.

    • Using the example above, n=3. The number of bits left for host is (m) = 8 — 3 = 5. 5 is the number of bits you have left to host.
  3. Image titled 1636270 3

    3

    Calculate the number of subnets. The number of subnets is 2n. The number of hosts per subnet = 2m — 2.

    • In our example, the number of subnets is 2n = 23 = 8. 8 is the total number of subnets.
  4. Image titled 1636270 3b1

    4

    Calculate the value of the last bit used for subnet masking. The value of last bit used for subnet masking is (Δ) = 2m.

    • In our example, the value of last bit used for subnet masking is Δ = 25 = 32. The value of the last bit used is 32.
  5. 5

    Calculate the number of hosts per subnet. The number of hosts per subnet is represented by the formula 2m — 2.

  6. Image titled 1636270 4

    6

    Separate the subnets by the value of last bit used for subnet masking. Now you can find previously calculated number of subnets by separating subnets each having value of last bit used for subnet masking or Δ. In our example, Δ=32. So we can separate IP addresses in increments of 32.

    • The 8 subnets (as calculated in previous step) are shown above.
    • Each of them has 32 addresses.
  7. Image titled 1636270 5

    7

    Determine the network and broadcast addresses for the IP addresses. The lowest address in a subnet is the network address. The highest address in a subnet is the broadcast address.

  8. Image titled 1636270 5b1

    8

    Determine the broadcast address for your IP address. The lowest address of the subnet your IP address falls in is the network address. The highest address in the subnet your IP address falls in is the broadcast address.

      Our example IP address 210.1.1.100 falls in the 210.1.1.96 — 210.1.1.127 subnet (see the previous step table). So 210.1.1.96 is network address and 210.1.1.127 is broadcast address.
  9. Advertisement

  1. Image titled 1636270 6b1

    1

    Write the bit-length prefix in bit format. In CIDR, you have a IP address followed by bit-length prefix separated by slash(/). Now you can start to convert bit-length prefix to quad-dotted by separating the bit-length prefix in increments of 8 and adding the final bit number.

    • Example: If the bit-length prefix is 27, then write it as 8 + 8 + 8 + 3 .
    • Example: If bit-length prefix is 12, then write it as 8 + 4 + 0 + 0 .
    • Example: Default bit-length prefix is 32, then write it as 8 + 8 + 8 + 8.
  2. Image titled 1636270 6b2

    2

    Convert the bit-length prefix to quad-dotted format. Convert the corresponding bit according to the above table and represent in quad-dotted decimal format. For example, bit-length 27 is represented by 8+8+8+3. This converts to 225.225.225.224.

    • Using another example, the IP address is 170.1.0.0/26 . Using above table, you can write the bit-length prefix 26 as 8+8+8+2. Using the chart above, this converts to 225.225.225.192. Now the IP address is 170.1.0.0 and subnet mask in quad-dotted decimal format is 255.255.255.192 .
  3. 3

    Determine the total number of bits. The total number of bits is represented using the following equation: Tb = 8.

  4. Image titled 1636270 6b3

    4

    Determine the number of bits used for subnetting. Subnet masks can be 0, 128, 192, 224, 240, 248, 252, 254 and 255. The table above gives you the Number of bits used for subnetting (n) to their corresponding subnet mask.

    • For subnet mask 255 is default, so it’ll not consider for subnet masking.
    • From the previous step, you got IP address = 170.1.0.0 and Sub-net mask = 255.255.255.192
    • Total bits = Tb = 8
    • Number of bits used for subnetting = n. As the subnet mask = 192, its corresponding number of bits used for Subnetting is 2 from above table.
  5. Image titled 1636270 8

    5

    Calculate the number of bits left to host. From the previous step, you got the number of bits used for subnetting (n) and you know the total bits (Tb) = 8. Then you can get number of bits left for host is (m) = Tb — n or Tb = m+n.

    • In our example, the number of bits used for subnetting (n) is 2. So the number of bits left for host is m = 8 — 2 = 6. The total bits left for the host is 6.
  6. 6

    Calculate the number of subnets. The Number of subnets is 2n.

    • In our example, the number of subnets = 22 = 4. The total number of subnets is 4.
  7. Image titled 1636270 9b1

    7

    Calculate the value of last bit used for subnet masking. This is represented with the formula (Δ) = 2m.

    • In our example, the value of last bit used for subnet masking = Δ = 26 = 64. The value of the last bit used for subnet masking is 64.
  8. Image titled 1636270 9

    8

    Calculate the number of hosts per subnet. The number of hosts per subnet is 2m — 2.

  9. Image titled 1636270 10b2

    9

    Separate the subnets by the value of the last bit used for subnet masking. Now you can find previously calculated number of subnets by separating subnets each having the value of last bit used for subnet masking or Δ.

    • In our example, the last value used for subnet masking is 64. This produces 4 subnets with 64 addresses.
  10. Image titled 1636270 11

    10

    Find which subnet your IP address is in. Our example IP is 170.1.0.0. This falls in the 170.1.0.0 — 170.1.0.63 subnet.

  11. Image titled 1636270 11b1

    11

    Determine your broadcast address. The first address in a subnet is the network address and the last number is the broadcast address.

    • Our example IP address is 170.1.0.0. So 170.1.0.0 is network address and 170.1.0.63 is broadcast address.
    • See CIDR Examples for more examples.
  12. Advertisement

  1. 1

    IP address = 100.5.150.34 and subnet mask = 255.255.240.0
    Total bits = Tb = 8

    Subnet Mask 0 128 192 224 240 248 252 254 255
    No. of bits used for Subnetting (n) 0 1 2 3 4 5 6 7 8

  2. 2

    Number of bits used for subnetting for subnet mask 240 = n1 = 4
    (as subnet mask = 240 and its corresponding «No.
    of bits used for Subnetting» is 4 from above table)
    Number of bits used for subnetting for subnet mask 0 = n2 = 0
    (as subnet mask = 0 and its corresponding «No. of bits used for Subnetting» is 0 from above table)
    Number of bits left for host for subnet mask 240 = m1 = Tb — n1 = 8 — 4 = 4
    Number of bits left for host for subnet mask 0 = m2 = Tb — n2 = 8 — 0 = 8
    Number of subnets for subnet mask 240 = 2n1 = 24 = 16
    Number of subnets for subnet mask 0 = 2n2 = 20 = 1
    Value of last bit used for subnet masking for subnet mask 240 = Δ1 = 2m1 = 24 = 16
    Value of last bit used for subnet masking for subnet mask 0 = Δ2 = 2m2 = 28 = 256
    For subnet mask 240, addresses will be separated by 16 and for subnet mask 0, it’ll be 256. Using Δ1 and Δ2 value, the 16 subnets are given below

    100.5.0.0 — 100.5.15.255 100.5.16.0 — 100.5.31.255 100.5.32.0 — 100.5.47.255 100.5.48.0 — 100.5.63.255
    100.5.64.0 — 100.5.79.255 100.5.80.0 — 100.5.95.255 100.5.96.0 — 100.5.111.255 100.5.112.0 — 100.5.127.255
    100.5.128.0 — 100.5.143.255 100.5.144.0 — 100.5.159.255 100.5.160.0 — 100.5.175.255 100.5.176.0 — 100.5.191.255
    100.5.192.0 — 100.5.207.255 100.5.208.0 — 100.5.223.255 100.5.224.0 — 100.5.239.255 100.5.240.0 — 100.5.255.255

  3. 3

    IP address 100.5.150.34 comes in 100.5.144.0 — 100.5.159.255. Hence, 100.5.144.0 is the network address and 100.5.159.255 is the broadcast address.

  4. 4

    See Classful Network Examples for more examples.

  5. Advertisement

  1. 1

    IP address in CIDR is 200.222.5.100/9

                        9 = 8 + 1 + + 0
                            255 . 128 . 0 . 0

    IP address = 200.222.5.100 and subnet mask = 255.128.0.0
    Total bits = Tb = 8

    Subnet Mask 0 128 192 224 240 248 252 254 255
    No. of bits used for Subnetting (n) 0 1 2 3 4 5 6 7 8

    Number of bits used for subnetting for subnet mask 128 = n1 = 1
    (as subnet mask = 128 and its corresponding «No. of bits used for Subnetting» is 1 from above table)

    Number of bits used for subnetting for subnet mask 0 = n2 = n3 = 0
    (as subnet mask = 0 and its corresponding «No. of bits used for Subnetting» is 0 from above table)

  2. 2

    Number of bits left for host for subnet mask 128 = m1 = Tb — n1 = 8 — 1 = 7
    Number of bits left for host for subnet mask 0 = m2 = m3 = Tb — n2 = Tb — n3 = 8 — 0 = 8
    Number of subnets for subnet mask 128 = 2n1 = 21 = 2
    Number of subnets for subnet mask 0 = 2n2 = 2n3 = 2 = 1
    Value of last bit used for subnet masking for subnet mask 128 = Δ1 = 2m1 = 27 = 128
    Number of host per subnet = 2m1 — 2 = 27 — 2 = 126
    Value of last bit used for subnet masking for subnet mask 0 = Δ2 = Δ3 = 2m2 = 2m3 = 28 = 256
    Number of host per subnet for subnet mask 0 = 2m2 — 2 = 2m3 — 2 = 28 — 2 = 254

  3. 3

    For subnet mask 128, addresses will be separated by 128 and for subnet mask 0, it’ll be 256. Using Δ1, Δ2 and Δ3 value, the 2 subnets are given below

    200.0.0.0 — 200.127.255.255 200.128.0.0 — 200.255.255.255

  4. 4

    IP address 200.222.5.100 comes in 200.128.0.0 — 200.255.255.255. Hence, 200.128.0.0 is the network address, and 200.255.255.255 is the broadcast address.

  5. Advertisement

Add New Question

  • Question

    How do I find the last address host?

    Community Answer

    Broadcast address -1. BC — 1 in this way you can find out the last host address.

  • Question

    How can I find the network for an IP address?

    Community Answer

    After you borrow bits find out your block size, it will be the first address of each block. For example, if the block size is 32, 192.1.4.0 is your network IP. 192.1.4.31 is your broadcast.

  • Question

    How do I find IP addresses?

    Tim Newman

    Tim Newman

    Community Answer

    If you’re looking for a public IP address, Googling «ip» should be sufficient to receive an answer.
    If you’re looking for your private IP address (stored on the router), open CMD (windows button + R and type in cmd), and type «ipconfig».

See more answers

Ask a Question

200 characters left

Include your email address to get a message when this question is answered.

Submit

Advertisement

  • In CIDR, just after you convert the bit-length prefix to quad-dotted decimal format, you can follow the same procedure as for Classful network.

  • This method is only for IPv4, not applicable for IPv6.

Thanks for submitting a tip for review!

Advertisement

About This Article

Article SummaryX

1. Assume the total number of bits used for subnetting is Tb = 8.

2. Find how many bits used for subnetting (n) according to the following subnet masks:0=0, 128=1, 192=2, 224=3, 240=4, 248=5, 252=6, 254=7, and 255=8
3. Use the formula (m) = Tb — n to determine the number of bits left to host.

4. Use the formula 2m — 2 to calculate the number of subnets.
5. Use the formula Δ = 2m to calculate the value of the last bit used for subnet masking.

6. Separate subnets using the value fo teh last bit used for subnet masking.
7. Determine which subnet your IP address fall in.
8. Use the first address in the subnet to determine the network address.
9. Use the last address in the subnet to determine the broadcast address.

Did this summary help you?

Thanks to all authors for creating a page that has been read 737,162 times.

Reader Success Stories

  • Anonymous

    «The only subnetting methodology that I have seen which explains simply how to calculate network and broadcast…» more

Is this article up to date?

Как найти широковещательный адрес

Эта статья не относится напрямую к операционой системе линукс, но тем не менее эта ось создавалась изначально как сетевая ОС и понимание этой информации лишним не будет.

В терминологии сетей TCP/IP маской подсети или маской сети называется битовая маска, определяющая, какая часть IP-адреса узла сети относится к адресу сети.

с помощью маски подсети можно определить, что один диапазон IP-адресов будет в одной подсети, а другой диапазон соответственно в другой подсети.

У маски подсети существует три наиболее часто используемые формы записи:
1. десятичный вид ( 255.255.255.192 );
2. двоичный вид( 11111111.11111111.11111111.11000000 ).
3. /ХХ (/26) — колличество единиц в двоичном представлении маски подсети.

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

Адреса хостов в подсети.
Это набор IP-адресов, которые могут быть выданы хостам (устройствам, подключенным к ip-сети). Чтобы подсчитать количество адресов, нужно от общего количества адресов подсети отнять два адреса(адрес сети и широковещательный). При обмене пакетами между хостами в одной подсети маршрутизатор и шлюз не нужны.

Широковещательный адрес (Broadcast).
Это адрес который не присвоен ни одному хосту в подсети. Данный адрес используется для отправки широковещательных пакетов, которые предназначены каждому хосту подсети.

Пример 1.
Найдем адрес сети, зная IP-адрес (192.168.1.2) и маску подсети (255.255.255.0). Для этого необходимо применить к ним операцию поразрядной конъюнкции (логическое И).
Для этого переводим в двоичную систему счисления.
IP-адрес: 11000000 10101000 00000001 00000010 (192.168.1.2)
Маска подсети: 11111111 11111111 11111111 00000000 (255.255.255.0)
Адрес сети: 11000000 10101000 00000001 00000000 (192.168.1.0)

Пример 2, обратный, найдем адреса хостов и широковещательный адрес
подсети 192.168.111.64/26 .
/26 = 11111111.11111111.11111111.11000000 = 255.255.255.192
192.168.111.64 = 11000000.10101000.01101111.01000000
По маске видим что наша сеть будет иметь диапазон ip-адресов
от: 11000000.10101000.01101111.01000000 = 192.168.111.64
до: 11000000.10101000.01101111.01111111 = 192.168.111.127

Где последний адрес будет широковещательный (broadcast).
Адреса хостов нашей сети:
min(в большинстве случаев является шлюзом*
(gateway)): 11000000.10101000.01101111.01000001 = 192.168.111.65
max: 11000000.10101000.01101111.01111110 = 192.168.111.126
т.е. всего хостов в сети — 62.

Пример 3. Новым сотрудникам техподдержки ПетерСтар посвящается 😉
Наиболее популярная маска подсети для юридических клиентов /30 .

маска: 11111111.11111111.11111111.11111100 = 255.255.255.252
IP-адрес: 01010100.11001100.10100110.01001100 = 84.204.166.76

По маске видим что наша сеть будет иметь диапазон ip-адресов
от 01010100.11001100.10100110.01001100 = 84.204.166.76
до 01010100.11001100.10100110.01001111 = 84.204.166.79

Адреса хостов подсети:

min(шлюз*
(gateway)): 01010100.11001100.10100110.01001101 = 84.204.166.77
модемкомп(если bridge)
: 01010100.11001100.10100110.01001110 = 84.204.166.78
broadcast : 01010100.11001100.10100110.01001111 = 84.204.166.79

*Сетевой шлюз — аппаратный маршрутизатор (англ. gateway) или программное обеспечение для сопряжения компьютерных сетей, использующих разные протоколы (например, локальной и глобальной). Сетевые шлюзы могут быть аппаратным решением, программным обеспечением или тем и другим вместе, но обычно это программное обеспечение, установленное на роутер или компьютер.

Subnetting. Разбиение сети на подсети, суммироваеие, нахождение адреса сети и широковещательного адреса.

При подготовке к CCIE RS Written есть тема, которая посвящена маскам подсети, и прочему.
Я напишу небольшую заметку о том как разбивать сети на подсети, как суммировать их, как найти адреса сети и широковещательных адресов и так далее.

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

Допустим нам дан некий IP адрес, с маской подсети, например 152.21.121.37 /26, нам необходимо найти адрес сети и широковещательный адрес, а так же первый и последний адреса которые можно присвоить хосту.

Алгоритм действий такой:

Префикс 26 нам говорит о том, что с последнего октета, под сеть выделено 2 бита, и на хосты у нас осталось 6 бит (64 хоста).

Представим этот префикс в двоичном виде и далее переведем последний октет в IP адресе в двоичную систему (нет смысла переводить весь IP адрес в бинарку)

/26 — 1 1 1 1 1 1 1 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
x.x.x.37 — x x x x x x x x . x x x x x x x x . x x x x x x x x . 0 0 1 0 0 1 0 1

Теперь можем определить адрес сети.
Для этого проведем линию по нашему префиксу. Теперь это будет выглядеть так.

/26 — 1 1 1 1 1 1 1 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
x.x.x.37 — x x x x x x x x . x x x x x x x x . x x x x x x x x . 0 0 | 1 0 0 1 0 1

И выпишем значения которые могут быть минимальным (все биты равны нулю) и максимальное (когда все биты равны единицы) в хостовой части.
это соответственно — 0 0 0 0 0 0 — что в 10-ной системе равно «0» и 1 1 1 1 1 1 что в 10-ой системе равно 63

Значит адрес нашей сети равен: 152.21.121.0.
Широковещательный адрес: 152.21.121.63
Соответственно первый IP адрес, который можно назначить хосту: 152.21.121.1
Последний IP адрес, который можно назначить хосту: 152.21.121.62

Нахождение IP адреса по номеру подсети и номеру хоста.
Не представляю особо где может понадобиться, но тем не менее

Дана сеть, скажем 49.0.0.0, которая поделена маской /25 на множество подсетей.
Необходимо найти IP адрес, если известно что он принадлежит 429 подсети и имеет номер 41.

49.0.0.0 согласно классификации сетей принадлежит классу А, следовательно префикс такой сети равен /8, Запишем его в бинарном виде.

8/ — 1 1 1 1 1 1 1 1 . 0 0 0 0 0 0 0 0 . 0 0 0 0 0 0 0 0 . 0 0 0 0 0 0 0 0

Представим префикс /25 так же в бинарном виде:

/25 — 1 1 1 1 1 1 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

Так как разрешено использовать для подсети все единицы и нули, то из требуемой подсети 429 вычитаем 1. Получаем 428, это число нам нужно представить в бинарном ввиде, на том месте где у нас «единички» в подсети.

428 — 0 0 0 0 0 0 0 0 . 0 0 0 0 0 0 0 0 . 1 1 0 1 0 1 1 0 . 0 0 0 0 0 0 0 0

Представим в бинарном виде 41 (номер нашего искомого хоста в нужной подсети).

41 — 0 0 1 0 1 0 0 0

Что у нас получилось?

49.0.1 1 0 1 0 1 1 0 . 0 0 1 0 1 0 0 1

Переведем весь адрес в десятичный вид:

Суммирование сетей очень важно уметь делать, ибо применяется в маршрутизации повсеместно, а именно там, где нам нужно объединить кучу сетей, в одну, тоесть иными словами «суммировать».
Давайте также разберемся на примере.

Дано:
Сети адреса которых:

* 140.176.2.128 / 25
* 140.176.3.0 / 25
* 140.176.3.192 / 26
* 140.176.3.128 / 26
* 140.176.2.0 / 25

Необходимо заменить все эти подсети — одной, которая будет объеденять все вышеуказанные, с наименьшей потерей адресов. Можно конечно не сильно присматриваясь сделать так: 140.176.0.0 /16 , да, это будет работать, но это грубое суммирование и не корректное.

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

В данном примере 140.176. является статичной, поэтому ее трогать не будем, будем переводить последние два октета:

2.128 / 25 — 0 0 0 0 0 0 1 0 . 1 0 0 0 0 0 0 0
3.0 / 25 — 0 0 0 0 0 0 1 1 . 0 0 0 0 0 0 0 0
3.192 / 26 — 0 0 0 0 0 0 1 1 . 1 1 0 0 0 0 0 0
3.128 / 26 — 0 0 0 0 0 0 1 1 . 1 0 0 0 0 0 0 0
2.0 / 25 — 0 0 0 0 0 0 1 0 . 0 0 0 0 0 0 0 0

Далее нам необходимо найти неизменяемые не в одной подсети значения, я отметил их жирным.
Таким образом получается что префикс новой сумированной сети будет: /23

Полностью суммированная сеть будет выглядеть так: 140.176.2.0/23

Разбиение сети на подсети.

Например, есть у нас сеть класса С, 192.168.0.0 / 24
Нам необходимо разбить эту сеть на две одинаковые подсети.
Разбиение осуществляется путем заимствования бита из поля, которое предназначено для хоста, в поле которое предназначено для маски.
Наша основная сеть имеет префикс 24 бита, мы добавляем к нему 1, и получаем новый префикс /25
Так как мы взяли всего один бит, следовательно и сетей у нас может быть только две (бит может принимать значение 1 или 0).
В каждой такой сети есть 128 адреса (2 в 7 степени (32 — 25 = 7 ) ).

Итак у нас получилось две подсети с адресами:

192.168.0.0 — 192.168.0.127 /25 (Доступные адреса для хостов: 192.168.0.1 — 192.168.0.126)
192.168.0.128 — 192.168.0.255/25 (Доступные адреса для хостов: 192.168.0.129 — 192.168.0.254)

Это был очень простой пример.

Так же каждую такую сеть вы можете еще разбить на несколько подсетей, не обязательно поровну, но и на различное количество хостов в каждой подсети.
Например, мы хотим разбить сеть 192.168.0.128/25 на одну сеть которая бы имела не менее 30 адресов, и другую сеть, которая имела бы не менее 60 адресов.

Находим необходимые префиксы наших новых сетей.
30 адресов, ищим ближайшее значение степени двойки, 2^5 = 32. Это то, что нужно.
Тоесть для этой сети нам достаточно сети пяти бит. (32 -5 = 27), итак префикс нашей новой подсети будет /27

Для второй сети, 60 адресов, ближайшая степень двойки — 64, 2^6 = 64.
Тоесть для новой сети нам необходимо 6 бит (32-6 = 26), префикс будет /26

Ну и запишем что у нас получилось:

1. 192.168.0.128 — 192.168.0.159/27
2. 192.168.0.160 — 192.168.0.123/26

Когда перед нами стоят такие задачи, то нужно начинать разбиение сети с наибольшего количества, адресов, и так по убыванию (в моем примере наоборот).

Определение принадлежности адресов IPv4-сети

Может кто разбирается в этих IPv4, и сможет растолковать мне как это все работает..А то я ничего понять не могу, как найти эти адреса. Нужен только ход рассуждений, и понятное разъяснение решения данной задачи.

Маска сети для IPv4 адресации – это 4-х байтное число, которое делит IP адрес на адрес сети (первая часть) и адрес узла (вторая часть). Для части IP адреса, соответствующей адресу сети в маске сети содержатся двоичные единицы, а для части IP адреса, соответствующей адресу узла в маске сети содержаться двоичные нули. IP адрес, в котором в части адреса узла содержаться только двоичные нули – служебный адрес сети. IP адрес, в котором в части адреса узла содержаться только двоичные единицы – адрес ограниченного широковещания. Эти два адреса нельзя использоваться для адресации узлов.

Сеть с IPv4 адресацией задана одним из адресов, принадлежащих этой сети (192.168.3.17) и маской сети (255.255.192.0) . Определите, какие из перечисленных ниже адресов могут быть назначены устройствам в этой сети.

  1. 192.168.3.255

  2. 192.168.65.3

  3. 192.168.33.0

  4. 192.168.192.0

  5. 192.168.63.255

Ох не мучили вас в институте или не мучают.
Ну что ж смотри, мой юный падаван, дан хост с адресом 192.168.3.17 , и маска 255.255.192.0 , сказали еще что хост принадлежит сети.
Давай для начала переведем в человеко-формат.
Делаем вот что, все рассчитывают в двоичной системе а мы с тобой сделаем хак и через десятичную рассчитаем.
Берем с лева первый октет который не равен 255 , это октет номер 3 он равен 192 .
Именно он нам интересен.
256-192 = 64 , 64 это шаг, который поможет найти адрес сети.
Он еще не раз встретится в решении. Берем адрес который нам дали в задаче 192.168.3.17 , и смотрим на 3-ий октет, так как именно он нам интересен.
Берем число 64, и 3-ий октет — это 3. Так как 3 < 64, то, ахтунг, адрес сети будет 192.168.0.0 .
Если бы нам дали хост 192.168.73.17 , то адрес сети был бы 192.168.64.0 , а если 192.168.128.17 то 192.168.128.0 .
Понимаешь к чему я?
То есть, с шагом в 64 мы смотрим если число <= 64 то ставим 64 , если больше то 64+64=128 и тоже самое с 128 .
Если больше 128 , то 128+64=192 и т.д.
Круто знаем адрес сети 192.168.0.0 .
Далее найдем broadcast-широковещательный адрес .
Это уже проще.
К 3 октету адреса сети прибавляем шаг, он у нас 64 .
Получаем 192.168.64.0 , дальше нужно просто от 64 отнять константу, она равна 1 , а последний октет заменить на 255 .
Получим 192.168.63.255 .
Это широковещательный адрес.
Все!
Получили диапазон от 192.168.0.0 до 192.168.63.255 .
Теперь смотрим какие адреса в него попадают, 192.168.3.255,192.168.33.0 .
Вообще конечно такие адреса фактически могут и не работать но касательно задачи это скорее всего будет правильным ответом.

Привет, посетитель сайта ZametkiNaPolyah.ru! Продолжаем изучать основы работы компьютерных сетей и протокол сетевого уровня IP, а если быть более точным, то его версию IPv4. IP-адреса бывают разные и делятся не только на частные и публичные, серые и белые. В этой теме мы разберемся с видами IP-адресов и поговорим о видах трафика в IP сетях и как это все связано с IP-адресами, ведь логично предположить что для каждого вида взаимодействия используются свои IP-адреса, в IPv4 всего можно выделить три полноценных вида взаимодействия и одно костыльное. К полноценным относятся: unicast (одноадресная рассылка), multicast (многоадресная рассылка), broadcast (широковещательная рассылка). К неполноценному в IPv4 относится anycast взаимодействие (доставка ближайшему узлу из группы). А в качестве бонуса мы еще рассмотрим loopback адреса и интерфейсы.

Если тема компьютерных сетей вам интересна, то можете ознакомиться с другими записями курса.

Оглавление первой части: «Основы взаимодействия в компьютерных сетях».

Оглавление четвертой части: «Сетевой уровень: протокол IP и его версия IPv4».

4.8.1 Введение

Содержание статьи:

  • 4.8.1 Введение
  • 4.8.2 Виды трафика в IP
  • 4.8.3 Одноадресная рассылка и unicast адреса
  • 4.8.4 Широковещательная рассылка и broadcast адреса
  • 4.8.5 Многоадресная рассылка и multicast адреса
  • 4.8.6 Anycast взаимодействие или доставка ближайшему узлу из группы
  • 4.8.7 Loopback интерфейсы и loopback адреса
  • 4.8.8 Выводы

Последняя исключительно теоретическая тема, касающаяся протокола IPv4, следующие темы будут сопровождаться небольшой практикой. Здесь нам нужно будет рассмотреть виды взаимодействия в IP сетях и соответствующие IP-адреса: unicast (одноадресная рассылка), multicast (многоадресная рассылка), broadcast (широковещательная рассылка), anycast взаимодействие (доставка ближайшему узлу из группы).

4.8.2 Виды трафика в IP

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

  1. Одноадресная рассылка или unicast IP-адреса. Обычно самую большую долю трафика в компьютерной занимает одноадресная рассылка. Практически для любого взаимодействия между двумя конечными узлами используется unicast.
  2. Широковещательная рассылка и broadcast IP-адреса. Суть взаимодействия понятна из названия. Если unicast можно описать как взаимодействия точка-точка, то broadcast, как точка-многоточка. Сразу стоит обратить внимание на то, что широковещательный трафик ограничен канальной средой узла, в котором он находится.
  3. Многоадресная рассылка или multicast IP-адреса. Multicast адреса используется, когда нужно передать какую-то информацию не всем узлам канальной среды, а какой-то определенной группе, при этом узлы группы могут находиться в разных канальных средах. Представим, что у нас есть жилой дом на несколько подъездов и у этого дома есть доска объявлений, на которой управляющая компания информирует жильцов своего дома. Если в объявление будет написано: «всем жильцам дома», то это будет похоже на broadcast, если написано «жильцам третьего этажа» или «жильцам второго подъезда», то это будет похоже на multicast.
  4. Anycast взаимодействие очень хорошо прописано и реализовано в IPv6, а вот в IPv4, решая задачи маленькой сети, вы, скорее всего, не столкнетесь с anycast. Anycast взаимодействие можно описать так: твой запрос может обработать любой из этих десяти узлов, но тебе нужно обратиться к ближайшему. Классический пример anycast взаимодействия: в Интернете есть корневые DNS-сервера, каждый корневой сервер имеет свою копию в различных точка планеты, если вы находитесь в Омске, то вам нет смысла обращаться к корневому серверу в Лондоне, поскольку такая же копия есть в Новосибирске.

Loopback интерфейсы и loopback адреса – это не отдельный вид трафик, зачем я его сюда добавил? Да просто потому что могу, а почему бы и нет, создавать отдельную тему, чтобы рассказать про loopback просто не вижу смысла. Если говорить про loopback интерфейс, то это интерфейс, которого нет физически, но есть в голове у узла или маршрутизатора, этот интерфейс будет доступен другим физическим устройствам до тех пор, пока жив хотя бы один физический интерфейс узла, на котором создан loopback. Про loopback IP-адреса мы уже говорили, когда разбирались с видами IP-адресов.

4.8.3 Одноадресная рассылка и unicast адреса

Начнем с самого просто и стандартного вида взаимодействия в компьютерной сети. Unicast или одноадресная рассылка используется для взаимодействия между двумя узлами сети. Графически unicast взаимодействие показано на Рисунке 4.8.1.

4.8.1 Unicast взаимодействие между двумя узлами компьютерной сети

Рисунок 4.8.1 Unicast взаимодействие между двумя узлами компьютерной сети

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

Вы легко можете убедиться в том, что unicast означает, что пакет пойдет одному конкретному адресату, если соберете схему, как показано на Рисунке 4.8.2, а затем выполните команду Ping от одного узла до другого в режиме симуляции.

4.8.2 Демонстрация использования unicast IP-адресов в Cisco Packet Tracer

Рисунок 4.8.2 Демонстрация использования unicast IP-адресов в Cisco Packet Tracer

Обратите внимание: в поле IP-пакета IP-адрес назначения указан адрес 192.168.2.2, собственно, это и есть пример unicast адреса, в данном случае это и означает, что получатель у нас только один, который однозначно идентифицируется этим адресом, то есть сформированный пакет обязан будет принять и обработать только этот узел. При этом топология компьютерной сети не важна, даже если будет среда с общей шиной, здесь пакет придет всем узлам, но обработает его только один узел, все остальные просто его отбросят.

4.8.4 Широковещательная рассылка и broadcast адреса

Тут сразу стоит напомнить о сетевых коммутаторах и их CAM таблицах, в которых ведется сопоставление портов коммутатора и мак-адресов, которые «светятся» за этими портами. У коммутаторов есть механизм unknown unicast flooding и это понятие не стоит путать с broadcast, как понятно из названия, unicast flooding реализуется при помощи unicast рассылок во все порты, в свою очередь broadcast означает отправить пакет все участникам канальной среды или подсети, проще говоря, broadcast ограничивается портом маршрутизатора. Схематично broadcast взаимодействие показано на Рисунке 4.8.3.

4.8.3 Broadcast взаимодействие между узлами компьютерной сети

Рисунок 4.8.3 Broadcast взаимодействие между узлами компьютерной сети

Как видим, получается взаимодействие точка-многоточка. Другими словами, когда красный узел формирует широковещательный пакет, его получат все соседи, находящиеся с красным узлом в одной канальной среде. Тут вы можете спросить, а зачем нужен broadcast, если красный узел может отправить запрос каждому соседу по отдельности, и этот вопрос очень хороший! Во-первых, красный узел не обязан знать канальные и сетевые адреса всех своих соседей, более того, вероятно он их и не знает, а пытается выяснить как раз-таки при помощи broadcast, на основе этого механизма работает протокол ARP, который позволяет узнать мак-адреса по известному IP-адресу. Также при помощи broadcast запросов конечные узлы делают запросы DHCP-серверу на получение IP-адреса и других опций.

Второй момент связан с неэкономным использованием времени и других ресурсов компьютерной сети. Представим себе такую ситуацию: у нас есть узел с настройками 192.168.12.45/24, этот узел хочет отправить пакет своему соседу с IP-адресом 192.168.12.230/24. Чтобы это сделать нашему узлу нужен MAC-адрес, при помощи broadcast он сформировал бы один пакет и направил бы его в сеть всем соседям по канальной среде, а сосед с IP-адресом 192.168.12.230 получил бы такой пакет и прислал бы нашему узлу информацию о своем мак-адресе. Если бы у нас не было механизма broadcast, то нашему узлу пришлось бы обращаться к каждому узлу в канальной среде по отдельности с вопросом: извините, а не у вас ли IP-адрес 192.168.12.230? Таким образом мы бы получили вместо одного пакета несколько сотен пакетов.

Как определить, что IP-адрес является широковещательным в подсети? Да мы уже про это говорили, когда разбирались с CIDR и VLSM. Вы же помните, что IP-адрес состоит из номера сети и номера узла. У широковещательного IP-адреса в номере узла будут все единицы в двоичной системе счисления. Например, возьмем нашу сеть 192.168.1.0/24, иначе маску можно записать 255.255.255.0, а это означает, что под номер узла выделен последний октет IP-адреса, то есть восемь бит, из этого следует, что широковещательным адресом в такой сети будет: 192.168.1.255, если перевести 255 в двоичную систему счисления, то получим: 11111111. Если ничего непонятно, то настоятельно рекомендую сперва ознакомиться с темами «Классовые сети» и «Маски подсети переменной длины» в том порядка, как я их указал.

Давайте теперь немного модифицируем нашу схему и посмотрим на количество канальных сред в нашей сети и на то, как распространяется broadcast трафик по нашей сети. На Рисунке 4.8.4 показана схема сети и ее канальные среды.

4.8.4 Три канальных среды в компьютерной сети

Рисунок 4.8.4 Три канальных среды в компьютерной сети

У нас здесь три канальных среды. Не забываем о правиле, связанном с маршрутизаторами: каждый интерфейс маршрутизатора должен «смотреть» в свою канальную среду, то есть вы не сможете сделать так, чтобы первый порт маршрутизатора имел префикс 192.168.2.23/24, а второй порт имел такой префикс: 192.168.2.12/24, так как в этом случае они находятся в одной подсети. По этой причине у нас здесь не две канальных среды, а три:

  1. Первая канальная среда отмечена синим и в ней ровно два участника: левый маршрутизатор с IP-адресом и маской 10.10.10.1/30 и второй: 10.10.10.2/30.
  2. Вторая канальная среда отмечена зеленым и в ней у нас пять участников: четыре компьютера и основной шлюз, которым выступает интерфейс маршрутизатора, который «смотрит» в подсеть 192.168.1.0/24.
  3. Третья канальная среда имеет трех участников: два ноутбука и интерфейс второго маршрутизатора.

Теперь давайте сделаем широковещательную рассылку в зеленой канальной среде и посмотрим, что из этого выйдет. Для этого откроем командную строку компьютера 192.168.1.2 и выполним команду ping на IP-адрес 192.168.1.255, который в данном случае является широковещательным, естественно, делать это нужно в режиме симуляции Cisco Packet Tracer.

4.8.5 Пример широковещательного запроса в канальной среде

Рисунок 4.8.5 Пример широковещательного запроса в канальной среде

Cisco Packet Tracer некорректно указывает IP-адрес назначения в широковещательном IP-пакете, в данном случае написано, что это 255.255.255.255, когда на самом деле должно быть: 192.168.1.255, а вот с широковещательным мак-адресом никаких проблем, он действительно: FF-FF-FF-FF-FF-FF. В этом можно убедиться, повторив ping на реальном ПК и запустив Wireshark, моя локальная подсеть 192.168.0.0/24, вот что показывает Wireshark при пинге IP-адреса 192.168.0.255.

4.8.5 Так выглядит широковещательный запрос в Wireshark

Рисунок 4.8.6 Так выглядит широковещательный запрос в Wireshark

Здесь я выделил красным цветом IP и MAC-адреса источника и назначения. Мак-адрес при широковещательном запроса у нас: FF:FF:FF:FF:FF:FF, а вот широковещательный IP-адрес выглядит так: 192.168.0.255. Стоит сразу заметить, что тип запроса (каким он будет: широковещательным или одноадресным?) определяется узлом отправителем. Делается это при помощи маски подсети, которая задана узлу отправителю и IP-адресу назначения, то есть тому адресу, на который будет отправлен пакет.

Узел-отправитель берет свой IP-адрес, прикладывает его к маске подсети, которая ему задана, таким образом он узнает в какой подсети он находится, затем он берет IP-адрес назначения и прикладывает его к своей маске и сравнивает с результатами первой операции, давайте это посмотрим более детально. Для примера возьмем сеть 10.10.10.0/24. У нашего узла IP-адрес 10.10.10.12, а отправить он хочет пакет на адрес 10.10.10.255, то есть сделать широковещательный запрос.

Сначала узел сравнит свой адрес и маску, что понять в какой сети он находится.

Таблица 4.8.1 Узел сравнивает свой IP-адрес с маской подсети

Таблица 4.8.1 Узел сравнивает свой IP-адрес с маской подсети

Сделав это вычисление, он понимает, что номер его сети 10.10.10.0, а это значит, что все узлы, у которых первых три октета совпадают и равны 10, а в последнем значения меняются от 1 до 255 находятся в одной канальной среде с этим узлом. Затем наш узел возьмет IP-адрес назначения и сравнит его со своей маской.

Таблица 4.8.2 Узел сравнивает свой IP-адрес назначения с маской подсети

Таблица 4.8.2 Узел сравнивает свой IP-адрес назначения с маской подсети

Компьютер видит, что номер сети в IP-адресе назначения совпадает с номером сети, в которой он находится (первых три октета), а вот номер узла не совсем обычный, в нем прописаны все единицы, а это значит, что запрос широковещательный и его нужно направить всем узлам в канальной среде! Но как это сделать? Проблема заключается в том, что маска подсети по сети не передается: ни в IP-пакете, ни тем более в Ethernet кадре нет поля для передачи маски подсети.

Как транзитные узлы поймут, что пакет/кадр являются широковещательными? Да очень просто! Помните, мы говорили, что широковещательные запросы в модели TCP/IP не выйдут за пределы канальной среды, это значит, что такие пакеты не маршрутизируются и их можно доставить от источника до отправителя, используя только мак-адреса. Теперь всё становится на свои места. Если узел отправитель видит широковещательный кадр, он в поле мак-адрес назначения Ethernet кадра подставляет широковещательный мак-адрес FF:FF:FF:FF:FF:FF. Мы же помним, что когда коммутаторы коммутируют, они не смотрят на IP-адреса, более того, простенькие коммутаторы даже не умеют этого делать, но когда коммутатор получит Ethernet кадр с адресом назначения FF:FF:FF:FF:FF:FF, он поймет, что этот кадр широковещательный и его надо разослать всем участникам канальной среды, в которой находится узел-отправитель (обратите внимание: не во все свои порты, а всем участникам канальной среды, все дело в том, что есть технология VLAN, которая позволяет разделять канальные среды на канальном уровне).

Давайте теперь посмотрим на всё это в Cisco Packet Tracer. Напомню, что наш узел сформировал широковещательное сообщение и готовится отправить его в сторону коммутатора. Пропустим тот момент, когда сообщение только пришло на коммутатор и сразу посмотрим на то, что коммутатор направит широковещательное сообщение всем участникам канальной среды.

4.8.6 Коммутатор направил широковещательный запрос всем участникам канальной среды

Рисунок 4.8.7 Коммутатор направил широковещательный запрос всем участникам канальной среды

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

4.8.8 Как отвечают узлы на широковещательный запрос

Рисунок 4.8.8 Как отвечают узлы на широковещательный запрос

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

4.8.8 Как отвечают узлы на широковещательный запрос

Рисунок 4.8.9 Как отвечают узлы на широковещательный запрос

По мере поступления сообщений от коммутатора к узлу, мы будем видеть изменения на экране эмулятора терминала, на рисунке выше показано, что узел 192.168.1.2 получил ответ от 192.168.1.3, но еще не получил ответа от трех других. В итоге мы должны будем увидеть, что на один широковещательный запрос, который был сформирован на узле 192.168.1.2, мы получим четыре одноадресных ответа. От всех участников нашей канальной среды.

4.8.9 Как отвечают узлы на широковещательный запрос

Рисунок 4.8.10 Как отвечают узлы на широковещательный запрос

Наш узел должен будет еще три раза сделать ICMP-запросы к своим соседям, это стандартное поведение утилиты Ping, но смотреть на них нам уже не интересно. Поэтому остановимся на этом. Я отмечал, что широковещательный запрос ограничен портом маршрутизатора и это хорошо, дело всё в том, что сети, построенные на Ethernet, имеют проблему, называемую широковещательным штормом. Хорошо, что это не глобальная проблема и она ограничивается портом роутера.
Давайте лучше посмотрим на пример широковещательного запроса в коммутируемой сети, такой пример с технической точки зрения вреден, но он хорошо демонстрирует опасность широковещательных штормов, обратите внимание на Рисунок 4.8.11.

4.8.10 Широковещательные запросы в коммутируемой сети

4.8.11 Широковещательные запросы в коммутируемой сети

Здесь я даже не стал выделять границы канальных сред, поскольку их по сути и нет, представим, что два коммутатора на схеме являются неуправляемыми и они ничего не знают о технологии VLAN, а также допустим, что эти коммутаторы очень и очень мощные и способны прокоммутировать любой объем трафика, ну совершенно любой, им это не важно. А вот каналы от коммутаторов до узлов ограничены полосой пропусканию 100 Мбит/c. Теперь давайте выполним ping с узла 10.10.10.1 на широковещательный адрес его сети, то есть 10.10.10.255. Момент номер один: первый коммутатор, к которому подключен наш узел источник, разослал полученный пакет всем узла, находящимся в канальной среде вместе с нашим узлом источником, в том числе и на соседний коммутатор.

4.8.12 Широковещательные запросы в коммутируемой сети

Рисуноу4.8.12 Широковещательные запросы в коммутируемой сети

Вот тут вы можете сказать: но как так, Кирилл, ты же говорил, что подсеть и канальная среда – это одно и то же, а пакеты из подсети 10.10.10.0/24 направлены в подсеть 20.20.20.0/24 и даже в подсеть 30.30.30.0/24! И да, получается, что ранее я говорил не совсем правду, хотя нет, я говорил всю правду, поскольку постоянно повторял, что коммутаторы не умеют работать с IP-адресами, у них есть другой механизм по разделению на канальные среды – VLAN, но о нем позже.

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

Обратите внимание: на широковещательный запрос ответили только компьютеры, потому что только они находятся в одной подсети с узлом 10.10.10.1. Ноутбуки откинули широковещательный запрос от этого узла и этих кадров мы уже не видим на рисунке выше, а сервера в данный момент откидывают кадры (они помечаются красным крестиком на рисунке). Два сообщения, которые мы видим на первом коммутаторе были сформированы и направлены узлами 10.10.10.2 и 10.10.10.3. Все остальные участники нашей сети сравнили свои IP-адреса и маски с теми адресами, которые были указаны в IP-пакете и поняли, что этот пакет не для них и им отвечать на него не нужно.

4.8.12 Широковещательные запросы в коммутируемой сети

4.8.13 Широковещательные запросы в коммутируемой сети

Теперь о проблеме широковещательного шторма. Помним про условия: коммутатор может обработать любой объем трафика, а полоса пропускания всех каналов конечная и равна 100 Мбит/c. А теперь представим, что наш узел 10.10.10.1 сошел с ума и начал бомбардировать нашу маленькую сеточку бесконечным количеством широковещательных запросов и в конце концов дошло до того, что он начал утилизировать всю полосу 100 Мбит/c своими широковещательными запросами, что произойдет? А произойдет то, что каналы до всех узлов нашей сети будут забиты на 100% и ничего в них передаваться не будет, кроме широковещательных запросов этого узла.

Как работает broadcast? Коммутатор получает кадр, копирует его и рассылает всем участникам канальной среды. То есть все линки до ноутбуков будут забиты широковещательным трафиком, все линки до стационарных ПК будут забиты этим бесполезным трафиком и линк между двумя коммутаторами будет использоваться только под Broadcast.

Ну хорошо, скажите вы, ты нам потом расскажешь про VLAN, мы увидим, что если на коммутаторах используется VLAN, то широковещательный трафик не выйдет за пределы этого самого VLAN, а это значит, что, если сойдет с ума узел из подсети 10.10.10.0/24, то от широковещательного шторма пострадают только узлы из его подсети и никто более. Хорошо. Давайте смотреть. Только теперь давайте всё по-честному. Производительность коммутаторов не бесконечна, более того, центральный процессор коммутатора – это его самое слабое место. Когда в сети Ethernet случается широковещательный шторм или петля, то проблемы начинаются не из-за того, что «забиты» каналы, а из-за того, что коммутаторам доступа банально не хватает процессорной мощности или объема CAM таблиц, в которых ведется сопоставление порт — мак-адрес. Теперь представляем, что в одной подсети у нас не три узла, а двести узлов и делаем выводы.

4.8.5 Многоадресная рассылка и multicast адреса

Тема многоадресной рассылки или multicast трафика – это отдельный мир в IP сетях, детальное знакомство с которым не входит в программу нашего курса по компьютерным сетям для начинающих, но нам важно знать, что такой трафик бывает и нам важно понимать базовый принцип работы узлов компьютерной сети при многоадресной рассылке. Схематично она показана на Рисунке 4.8.14.

4.8.14 Multicast взаимодействие между двумя узлами компьютерной сети

4.8.14 Multicast взаимодействие между двумя узлами компьютерной сети

В самом начале я уже приводил пример с объявлением у дома, повторять его не буду. Многоадресная рассылка, как и широковещательная, характеризуется взаимодействием точка-многоточка, но здесь есть существенное «но». Участники в таком взаимодействие могут находиться в разных канальных средах. IP-адреса multicast мы уже называли (далее повторим), но тут стоит сказать, что для реализации многоадресной рассылки можно использовать и обычные IP-адреса, было бы желание.

Подсеть Пояснение
224.0.0.0/24 Local Network Control Block. IP-адреса из этой подсети вам лучше не использовать для своих нужд, поскольку они заняты для нужд различных протоколов, которые могут работать в вашей сети. Так, например, IP-адреса из этой подсети используют роутеры при обмене служебной информацией в протоколах OSPF или EIGRP. В RFC 3171 сказано, что узел, отправляющий пакет на адрес из данной подсети в поле TTL должен выставлять значение 1.
С 224.0.1.0 по 238.255.255.255 Это multicast IP-адреса, для которых разрешена глобальная маршрутизация, можно сравнить с публичными IP-адреса, но только для multicast трафика.
239.0.0.0/8 Эти multicast адреса может использовать кто угодно в своих локальных сетях для организации многоадресного вещания, то есть, если мы провайдер и хотим предложить своим абонентам услугу IPTV, то для этих целей у нас есть вот эта подсеть.

Детальную информацию о зарезервированных multicast адресах можно получить из RFC 5771, при необходимости вы сможете найти этот документ. Нам бы просто разобраться с механизмом. Давайте начнем. Представим, что у нас есть сеть, как показано на Рисунке ниже.

4.8.14 Схема для демонстрации Multicast взаимодействия

4.8.15 Схема для демонстрации Multicast взаимодействия

Схема с виду ужасная, но в реальной жизни будет хуже, поверьте. Здесь пока не указаны никакие IP-адреса, здесь просто показаны канальные среды. Вообще, мы не будем ничего настраивать, но следует заметить: для работы multicast в реальной сети, вам сперва нужно настроить unicast взаимодействие между узлами, а уже поверх unicast разворачивать свою multicast сеть. Теперь давайте представим, что мы провайдера, который хочет предоставлять своим абонентам услугу IPTV. Для этого нам нужен источник, пусть это будет сервер. У этого сервера, как минимум, должно быть два порта: один порт получает картинку от какой-нибудь спутниковой антенны, а второй порт раздает эту картинку в нашу IP-сеть. Первый порт на рисунке не показан, да и сейчас он нам не интересен.

А вот второй порт нам интересен. Он транслирует каналы в нашу сеть, второй порт обычно называют источником. Сейчас всё огрубим и будем говорить, что порт просто транслирует каналы в сеть. За каждым ТВ каналом, который в сеть транслируется, закрепляется multicast IP-адрес. Пусть наш сервер транслирует три канала:

  1. Первый канал, за ним закреплен IP-адрес 239.0.1.1.
  2. У второго канала будет адрес 239.0.2.1.
  3. Третьему каналу провайдер назначил адрес 239.0.3.1.

Нужно учесть и то, что для трансляции одного канала требуется полоса пропускания определенной ширины, то есть на трансляцию одного канала тратится кусочек существующей полосы пропускания, пусть у нас каждый канал забирает 4 Мбит/c. Итак, у нас есть три мультикаст группы, для каждой из которых требуется по 4 Мбит/c. Представим, что все наши конечные узлы купили у провайдера услугу IPTV, но не все и не всегда что-то смотрят. Допустим компьютеры PC8, PC11 и PC17 (зеленая группа) сейчас смотрят первый канал, значит они являются подписчиками первой multicast группы или иначе – они состоят в первой группу. Ко второй группе (смотреть второй канал) у нас будут относиться PC10 и PC12 (красная группа). А третий канал у нас будут смотреть PC14 и PC15 (желтая группа).

4.8.16 Схема для демонстрации Multicast взаимодействия

4.8.16 Схема для демонстрации Multicast взаимодействия

Да, рисунок чутка корявый, но давайте попробуем разобраться. Конечные устройства, на которых пользователи смотрят каналы называются подписчиками, это может быть как обычный компьютер или ноутбук, так и IPTV приставка, называемая STB. Для простоты пусть это будет компьютер.

Представим, что в нашей сети еще никто ничего не смотрит, а это значит, что сервер еще ничего не транслирует в сторону своего первого маршрутизатора. Когда пользователь PC8 осознает, что он хочет смотреть первый канал, он открывает IPTV-плеер и выбирает в нем первый канал, в этот момент компьютер осознает, что нужно послать запрос серверу о том, что он хочет быть подписчиком группы 239.0.1.1. При этом unicast связь между сервером и компьютером PC8 уже должна быть, иначе как дойдет запрос до сервера о том, что кто-то чего-то хочет смотреть.

Тогда сервер начинает транслировать первый канал в сторону маршрутизатора, пусть это будет называться потоком, но сервер не просто транслирует поток 239.0.1.1, но еще и сообщает маршрутизатору, что этот поток нужно перенаправить в сторону узла PC8 с unicast IP-адресом PC8.

Что будет, когда пользователь PC17 захочет посмотреть первый канал? Правильно, он пошлет запрос серверу о том, что хочет быть подписчиком multicast группы 239.0.1.1. При этом сервер понимает, что этот поток он уже транслирует на маршрутизатор и он просто дает указание маршрутизатору: друг, смотри, первый поток, который я тебе отдаю, нужно транслировать не только на unicast адрес PC8, но еще и на unicast адрес PC17. Маршрутизатор скажет, окей, я получаю от тебя первый поток, но теперь буду направлять его не только влево, но и вправо. При этом обратите внимание: у нас появилось два подписчика, но объем трафика между сервером и первым маршрутизатором не возрос.

Теперь у нас включается PC11 и говорит серверу: я хочу смотреть первый канал. Сервер понимает, что он уже транслирует первый канал, поэтому он говорит первому маршрутизатору: я отдаю тебе первый канал, теперь его хочет смотреть еще и узел с unicast адресом PC11. Первый маршрутизатор понимает, что он получает поток первого канала, более того, он понимает, что он уже направил этот поток в сторону PC11, поэтому он просто дает указание левому маршрутизатору: смотри, я отдаю тебе поток первого канала, но теперь тебе его нужно транслировать не только на PC8, но и на PC11. Левый маршрутизатор говорит: окей, я тебя понял, буду отдавать поток первого канала не только вверх, но и вниз.

Давайте теперь посчитаем занятую полосу пропускания. У нас есть три подписчика, которые смотрят один канал, на который требуется 4 Мбит/c. Если бы это был unicast трафик, то между сервером и первым роутером была бы утилизирована полоса в 12 Мбит/c, между левым и первым роутерами утилизировалось бы 8 Мбит/c, а между правым и первым 4 Мбит/c. Посчитать не трудно. Но у нас multicast трафик, он подразумевает, что источник просто транслирует канал, а транзитные узлы его просто копируют в те порты, откуда стучатся подписчики, то есть получатели, поэтому один канал вне зависимости от количества подписчиков в нашем случае всегда будет занимать полосу 4 Мбит/с и не битом больше.

Если вы знакомы с делителями телевизионного сигнала, который передается по коаксиальным проводам, то здесь принцип похожий: у нас есть один источник и есть транзитные узлы, которые выполняют роль делителей сигнала. Но если говорить про настоящие делители, то это пассивные устройства и деление происходит с потерями, то есть при прохождении через делитель сигнал неизбежно будет затухать. Маршрутизаторы устройства активные и они не просто делят сигнал, а создают его копию.
Не стоит воспринимать данный раздел как подробное описание работы multicast в IP-сетях. Это скорее грубый и поверхностный взгляд с большими неточностями. Так, например, клиенты не запрашивают каналы у сервера, ведь сервер просто вещает потоки, а клиенты обращаются к ближайшему маршрутизатору при помощи протокола IGMP, если между ближайшим маршрутизатором к клиенту и сервером есть еще L3 устройства, то взаимодействие между ними происходит по протоколу PIM.

4.8.6 Anycast взаимодействие или доставка ближайшему узлу из группы

Anycast трафик практически не используется в IPv4, по факту здесь этот механизм и не реализован. Но в IPv6 это упущение учли и описали как должны действовать устройства при взаимодействии anycast. Здесь мы не будем касаться IPv6, а поговорим про частный случай реализации anycast в сетях IPv4. Схематично взаимодействие anycast показано на Рисунке 4.8.17.

4.8.16 Anycast взаимодействие между узлами компьютерной сети

4.8.16 Anycast взаимодействие между узлами компьютерной сети

Вы часто можете встретить такую фразу: anycast взаимодействие означает, что узел будет посылать запрос ближайшему узлу из группы. Читая определение можно вспомнить, что группы есть в multicast и сделать вывод о том, что сообщение должно быть послано ближайшему узлу из multicast группы, но это будет неверное понимание сути anycast.
Давайте сперва разберемся, что понимается под группой? В данном случае под группой будет правильнее понимать узлы, которые оказывают одинаковые услуги. Например, в IPv4 anycast взаимодействие реализовано с корневыми DNS-серверами. Зачем реализовано такое взаимодействие? Да всё просто, чтобы уменьшить нагрузку на корневые DNS-сервера.

В мире всего существует тринадцать корневых DNS-серверов. Доменные имена этих DNS-серверов имеют вид letter.root-servers.net, где вместо letter нужно подставить букву от a до m. Если не ошибаюсь, то все корневые сервера находятся на территории США, представьте, что бы было, если бы компьютер из России делал каждый раз запрос к серверу из США, чтобы узнать IP-адрес домена? Всем было бы плохо. Поэтому каждый из тринадцати оригинальных DNS-серверов имеет свои точные копии в различных точках нашей планеты, чтобы заходя на сайт васька-пупкин.рф, вы не делали запрос к серверу из США, а обращались к копии этого сервера где-нибудь в России.

Для примера возьмем корневой DNS сервер К. Его копии находятся в: Амстердаме, Лондоне, Токио, Дели, Майами, Рейкьявике, Новосибирске, Хельсинки и еще нескольких других городах. Все копии DNS-серверов полностью идентичны, в том числе у них одинаковые IP-адреса, в частности у сервера К вот такой IPv4 адрес: 193.0.14.129. Но как так, спросите вы, ведь ты говорил, что IP-адрес должен быть уникальным в пределах той сети, в которой он находится. Да, должен, но всегда, есть исключения из общих правил.

Благодаря тому, что есть anycast взаимодействие, DNS-запросы из Якутии скорее всего пойдут в Новосибирск, а из Ливерпуля в Лондон. То есть в данном конкретном примере anycast взаимодействия группа узлов в различных городах имеет одинаковый IP-адрес: 193.0.14.129, этот адрес их как раз-таки и объединяет в группу. И получается, что обычные узлы, выполняя DNS-запросы, даже не подозревают, что это anycast, никаких механизмов чтобы это понять у узлов нет.

Но за счет чего получается, ситуация, при которой не возникает конфликта IP-адресов. А дело всё в том, что маршрутизатор из всех известных ему маршрутов, полученных от всех своих соседей, выберет наикратчайший маршрут до узла назначения. Сейчас это может показаться непонятным, но если вы разберетесь с динамической маршрутизацией и принципами ее работы, то всё встанет на свои места.

4.8.7 Loopback интерфейсы и loopback адреса

Loopback интерфейс и loopback IP-адрес – это виртуальный интерфейс, который всегда доступен, если доступно само устройство и его сетевые библиотеки работают корректно. Иногда вы можете встретить словосочетание петлевой интерфейс/адрес, циклический и даже кольцевой, всё это про loopback. В протоколе IPv4 выделена целая сеть 127.0.0.0/8 для программной реализации loopback интерфейсов на конечных узлах. Так, например, если у вас есть компьютер под управлением Windows, вы можете попробовать пропинговать любой IP-адрес из указанного диапазона и получить ответ от машины в том случае, если сетевые библиотеки вашего ПК будут работать нормально.

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

C:UsersDell>ping 127.0.0.1

Обмен пакетами с 127.0.0.1 по с 32 байтами данных:

Ответ от 127.0.0.1: число байт=32 время<1мс TTL=128

Ответ от 127.0.0.1: число байт=32 время<1мс TTL=128

Ответ от 127.0.0.1: число байт=32 время<1мс TTL=128

Ответ от 127.0.0.1: число байт=32 время<1мс TTL=128

Статистика Ping для 127.0.0.1:

Пакетов: отправлено = 4, получено = 4, потеряно = 0

(0% потерь)

Приблизительное время приемапередачи в мс:

Минимальное = 0мсек, Максимальное = 0 мсек, Среднее = 0 мсек

C:UsersDell>ping 127.255.255.254

Обмен пакетами с 127.255.255.254 по с 32 байтами данных:

Ответ от 127.255.255.254: число байт=32 время<1мс TTL=128

Ответ от 127.255.255.254: число байт=32 время<1мс TTL=128

Ответ от 127.255.255.254: число байт=32 время<1мс TTL=128

Ответ от 127.255.255.254: число байт=32 время<1мс TTL=128

Статистика Ping для 127.255.255.254:

Пакетов: отправлено = 4, получено = 4, потеряно = 0

(0% потерь)

Приблизительное время приемапередачи в мс:

Минимальное = 0мсек, Максимальное = 0 мсек, Среднее = 0 мсек

Когда вы пингуете IP-адреса из диапазона 127.0.0.0/8, вы пингуете сами себя, в Windows такой адрес иногда называют localhost, так как он используется для реализации взаимодействия клиент-сервер в рамках одной машины. Так, например, вы можете установить на свою машину MySQL сервер и делать SQL запросы локально при помощи адреса из диапазона 127.0.0.0/8 и TCP порта 3306, который слушает MySQL по умолчанию. Таким образом получается, что и клиент, и сервер используют один IP-адрес, но разные порты.

Различные веб-сервера типа Денвера или AMPPS в Windows используют адрес из диапазона 127.0.0.0/8. То есть на конечных узлах loopback адреса и loopback интерфейсы используются для того, чтобы была возможность обратиться самому к себе. Если говорить про транзитные узлы, то там зачастую IP-адреса из диапазона 127.0.0.0/8 недоступны, то есть там по умолчанию вообще не созданы loopback интерфейсы, их создает администратор вручную, но при этом он может задать loopback интерфейсу тот IP-адрес, который ему хочется, стоит заметить, что в маршрутизаторах у loopback интерфейсов несколько иной функционал, нежели на конечных узлах.

Чаще всего loopback интерфейсы создаются для того, чтобы обеспечить надежную связь с внешним миром. Так, например, в протоколе BGP, чтобы реализовать iBGP соединение используют loopback интерфейсы, которые будут доступны до тех пор, пока не упадут все физические линки, а, следовательно, и iBGP соединение не разорвется до тех пор, пока хотя бы один линк к этому маршрутизатору жив. Также очень часто loopback интерфейсы используется для того, чтобы получить доступ к устройству для его удаленного администрирования. Когда мы будем говорить про настройку IP-адресов на интерфейсах маршрутизаторов Cisco мы поработаем и с loopback интерфейсами.

4.8.8 Выводы

Самыми интересными для нас на данном этапе будут multicast и broadcast IP-адреса, а также loopback интерфейсы, именно с этим всем мы будем работать. Anycast мы оставим до знакомства с IPv6, а multicast вообще больше трогать не будем, возможно, в блоге появится отдельная серия публикаций про multicast, но это далеком идущие планы.

For example:

  • IP Address: 130.45.34.36
  • Mask: 255.255.240.0

What would be Net ID/Subnet Address, and
Broadcast Address?

Ajay's user avatar

Ajay

18k11 gold badges57 silver badges103 bronze badges

asked Mar 13, 2015 at 14:30

Apprentice's user avatar

2

Let’s write both in binary:

130.45.34.36 = 10000010.00101101.00100010.00100100

255.255.240.0 = 11111111.11111111.11110000.00000000

A bitwise AND between the two would give us the network address:

10000010.00101101.00100010.00100100   (ip address)
AND
11111111.11111111.11110000.00000000   (subnet mask)
=
10000010.00101101.00100000.00000000 = 130.45.32.0 (the resulting network address)

A bitwise OR between the network address and the inverted subnet mask would give us the broadcast address:

10000010.00101101.00100000.00000000   (netadress)
OR
00000000.00000000.00001111.11111111   (inverted subnet mask)
=
10000010.00101101.00101111.11111111 = 130.45.47.255 (broadcast address)

answered Mar 13, 2015 at 15:31

Malt's user avatar

MaltMalt

28.7k9 gold badges64 silver badges105 bronze badges

2

var network = calculateNetworkIP("192.168.0.101", "255.255.255.0");

var broadcast = calculateBroadcastIP("192.168.0.101", "255.255.255.0");

function calculateNetworkIP(ipAddress, maskIP){

    var binaryIP = convertIPToBinaryIP(ipAddress);
    var maskBinaryIP = convertIPToBinaryIP(maskIP);

    var binaryNetwork = [];
    for (var j = 0; j < maskBinaryIP.length; j++) {
        binaryNetwork.push(bitwiseAND(binaryIP[j], maskBinaryIP[j]));
    }

    var NetworkIPArr = convertBinaryIPToDecIP(binaryNetwork);

    var NetworkIPStr = "";
    for (var k = 0; k < NetworkIPArr.length; k++) {
        NetworkIPStr += NetworkIPArr[k]+".";
    }
    return NetworkIPStr.slice(0, -1);
}

function calculateBroadcastIP(ipAddress, maskIP){

    var binaryIP = convertIPToBinaryIP(ipAddress);
    var maskBinaryIP = convertIPToBinaryIP(maskIP);
    var invertedMark = [];
    for (var i = 0; i < maskBinaryIP.length; i++) {
        invertedMark.push(invertedBinary(maskBinaryIP[i]));
    }

    var binaryBroadcast = [];
    for (var j = 0; j < maskBinaryIP.length; j++) {
        binaryBroadcast.push(bitwiseOR(binaryIP[j], invertedMark[j]));
    }

    var broadcastIPArr = convertBinaryIPToDecIP(binaryBroadcast);

    var broadcastIPStr = "";
    for (var k = 0; k < broadcastIPArr.length; k++) {
        broadcastIPStr += broadcastIPArr[k]+".";
    }
    return broadcastIPStr.slice(0, -1);
}

function invertedBinary(number){

    var no = number+"";
    var noArr = no.split("");
    var newNo = "";
    for(var i = 0; i < noArr.length; i++){
        if(noArr[i] == "0"){
            newNo += "1";
        }else{
            newNo += "0";
        }
    }
    return newNo;
}

function bitwiseAND(firstBinary, secondBinary){

    var firstArr = [];
    var secondArr = [];
    firstArr = firstBinary.split("");
    secondArr = secondBinary.split("");
    var newAdded = "";
    for(var i = 0; i < firstArr.length; i++){
        if(firstArr[i]+"+"+secondArr[i] == "1+0"){
            newAdded += "0";
        }else if(firstArr[i]+"+"+secondArr[i] == "0+1"){
            newAdded += "0";
        }else if(firstArr[i]+"+"+secondArr[i] == "1+1"){
            newAdded += "1";
        }else if(firstArr[i]+"+"+secondArr[i] == "0+0"){
            newAdded += "0";
        }
    }
    return newAdded;
}

function bitwiseOR(firstBinary, secondBinary){

    var firstArr = [];
    var secondArr = [];
    firstArr = firstBinary.split("");
    secondArr = secondBinary.split("");
    var newAdded = "";
    for(var i = 0; i < firstArr.length; i++){
        if(firstArr[i]+"+"+secondArr[i] == "1+0"){
            newAdded += "1";
        }else if(firstArr[i]+"+"+secondArr[i] == "0+1"){
            newAdded += "1";
        }else if(firstArr[i]+"+"+secondArr[i] == "1+1"){
            newAdded += "1";
        }else if(firstArr[i]+"+"+secondArr[i] == "0+0"){
            newAdded += "0";
        }
    }
    return newAdded;
}

function convertBinaryIPToDecIP(binaryIPArr){

    var broadcastIP = [];
    for (var i = 0; i < binaryIPArr.length; i++) {
        broadcastIP.push(parseInt(parseInt(binaryIPArr[i]), 2));
    }
    return broadcastIP;
}

function convertIPToBinaryIP(ipAddress) {

    var ipArr = ipAddress.split(".");
    var binaryIP = [];
    for (var i = 0; i < ipArr.length; i++) {
        var binaryNo = parseInt(ipArr[i]).toString(2);
        if(binaryNo.length == 8){
            binaryIP.push(binaryNo);
        }else{
            var diffNo = 8 - binaryNo.length;
            var createBinary = '';
            for (var j = 0; j < diffNo; j++) {
               createBinary += '0';
            }
            createBinary += binaryNo;
            binaryIP.push(createBinary);
        }
    }
   return binaryIP; 
}

Pang's user avatar

Pang

9,481146 gold badges81 silver badges122 bronze badges

answered Apr 17, 2018 at 10:29

Chitranshu Gupta's user avatar

Code example based on Malt’s answer:

const
    ipadr = '130.45.34.36',
    subnet = '255.255.240.0',
    ipadrs = ipadr.split('.'),
    subnets = subnet.split('.');

let networks = [],
    broadcasts = [];

for (let i in ipadrs) {
    networks[i] = ipadrs[i] & subnets[i];
}

console.log('netaddress: ', networks.join('.')) // netaddress:  130.45.32.0

for (let i in networks) {
    broadcasts[i] = networks[i] | ~subnets[i] + 256;
}

console.log('broadcast address: ', broadcasts.join('.')) // broadcast address:  130.45.47.255

answered Mar 19, 2019 at 3:55

Ben's user avatar

BenBen

7407 silver badges10 bronze badges

Another short cut for broadcast address calculation after getting netwotk address is:

  1. calculate total no of hosts (in this case it is 2^12 = 4096)

  2. Divide it by 256(in this case it is 16) and add the result — 1(in this case 15) in *corresponding octet(in this case second octet i.e.
    32+15=47) and make other octet 255

*we can get the corresponding octet by looking at the no of hosts. e.g if the no of hosts are greater than 256 then we have to add it to the 2nd octet of network address and so on

Yogi's user avatar

Yogi

8,8882 gold badges43 silver badges61 bronze badges

answered Aug 24, 2016 at 8:23

Abhishek Dandegaonkar's user avatar

typescript version

function getBroadcastAddress({ address, netmask }: NetworkInterfaceInfo) {
  const addressBytes = address.split(".").map(Number);
  const netmaskBytes = netmask.split(".").map(Number);
  const subnetBytes = netmaskBytes.map(
    (_, index) => addressBytes[index] & netmaskBytes[index]
  );
  const broadcastBytes = netmaskBytes.map(
    (_, index) => subnetBytes[index] | (~netmaskBytes[index] + 256)  
  );
  return broadcastBytes.map(String).join(".")
}

/*
  // test
  getBroadcastAddress({ address: "192.168.1.93", netmask: "255.255.255.0" }) == '192.168.1.255'
*/

answered Jan 25, 2020 at 14:56

gobien's user avatar

gobiengobien

4174 silver badges9 bronze badges

Понравилась статья? Поделить с друзьями:
  • Как найти сторону прямоугольника 3 класс формула
  • Как найти параметр треугольник
  • Как исправить ошибку при запуске игр exe
  • Как найти броню оставшихся
  • Шаманы москвы как найти