IPv4 адреси шириною 32 біти, і таким чином розмір адресного простору становить 2 32 , або 4,294,967,296. Однак це лише теоретична верхня межа. Це не точне подання всіх адрес, які фактично можуть використовуватися в загальнодоступному Інтернеті.
Для цілей цього виклику передбачається, що вся адресація є класною . Насправді класичний підрозділ адресного простору витіснив CIDR (безкласовий маршрутизація між доменами та VLSM (маскування підмережі змінної довжини) , але це ігнорується для цього завдання.
Відповідно до схеми класних адрес, існує 3 класи:
- Клас А -
0.0.0.0
щоб127.255.255.255
з/8
NETMASK довжиною - Клас B -
128.0.0.0
щоб191.255.255.255
з/16
NETMASK довжиною - Клас C -
192.0.0.0
щоб223.255.255.255
з/24
NETMASK довжиною
Класи D (багатоадресна передача) та E (зарезервовані) також визначені, але вони не використовуються для публічних адрес одноадресної передачі.
Кожен клас підрозділяється на мережі відповідно до маски для цього класу.
Таким чином, 3.0.0.0
є прикладом мережі класу A. Довжина мережі маски для класу A становить 8, тому повний адресний простір для цієї мережі повинен 3.0.0.0
бути 3.255.255.255
. Однак перша адреса ( 3.0.0.0
) зарезервована як адреса мережі, а остання адреса ( 3.255.255.255
) зарезервована як адреса широкомовної передачі для цієї мережі. Таким чином, фактичний діапазон використовуваних адрес 3.0.0.1
для 3.255.255.254
якого становить 2 24 - 2 (= 16,777,214) весь адреса.
Аналогічно 200.20.30.0
є прикладом мережі класу C. Довжина сітки маски для класу C становить 24, тому повний адресний простір для цієї мережі повинен 200.20.30.0
бути 200.20.30.255
. Видалення мережі і широкомовні адреси залишають фактичний діапазон використовуваних адрес 200.20.30.1
для 200.20.30.254
якого становить 2 8 - 2 (= 254) весь адреса.
Існують додаткові обмеження щодо діапазонів адрес, які можуть бути використані для публічного обміну повідомленнями. Згідно з RFC 6890 , заборонені діапазони:
0.0.0.0/8
- Локальні мережі10.0.0.0/8
- приватного користування100.64.0.0/10
- Спільний простір адрес127.0.0.0/8
- петля169.254.0.0/16
- Посилання локальне172.16.0.0/12
- приватного користування192.0.0.0/24
- призначення протоколу IETF192.0.2.0/24
- Зарезервовано для використання в документації192.88.99.0/24
- 6to4 естафета Anycast192.168.0.0/16
- приватного користування198.18.0.0/15
- Бенчмаркінг198.51.100.0/24
- Зарезервовано для використання в документації203.0.113.0/24
- Зарезервовано для використання в документації
Зауважте, що вищенаведений список використовує VLSR-маски для ефективного визначення діапазону. У всіх випадках, крім одного, вказана довжина маски має специфічність, меншу або рівну нормальній довжині маски для початку діапазону. Таким чином, кожен з цих діапазонів VLSR еквівалентний одній або більше класовим мережам. Напр. 172.16.0.0/12
, Еквівалентно мережам класу В 172.16.0.0
до 172.31.0.0
або діапазону адрес 172.16.0.0
до 172.31.255.255
.
Виняток із цього правила - 100.64.0.0/10
діапазон VLSR, який є більш специфічним, ніж містить 100.0.0.0
діапазон класу A. Таким чином, 100.0.0.0
буде оброблятися, як і інші діапазони класу A, за винятком того, що він має в центрі отвір 4,194,304. Дійсні адреси в цьому діапазоні класу A будуть 100.0.0.0
до 100.63.255.255
та 100.128.0.0
до 100.255.255.254
, загалом 2 24 - 2 22 - 2 (= 12,582,910) загальних адрес.
Мета цього виклику - вивести всі одноадресні IPv4 адреси класів A, B і C, які можуть бути дійсно призначені для загальнодоступного хоста в Інтернеті (тобто виключаючи описані вище).
Жодного вводу не буде надано і не слід очікувати.
Вихід може бути в будь-якій формі, зручній для вашої мови, наприклад, масив, список, розділений рядок. Адреси повинні виводитися у стандартному крапковому форматі у десятковій формі.
Порядок виводу не має значення.
Вбудовані, які конкретно дають необхідні діапазони адрес, заборонені. Аналогічно будь-які методи динамічної перевірки таблиці маршрутизації BGP (або іншого протоколу) для загальнодоступного Інтернету заборонені.
Чисельно найнижча адреса буде, 1.0.0.1
а числово найвища буде 223.255.255.254
.
Цей виклик схожий на « Роздрукувати всі адреси IPv6» , але через обмеження потрібно вимагати нетривіально іншої реалізації.
@echo off
, а також.