IPv4 адреси шириною 32 біти, і таким чином розмір адресного простору становить 2 32 , або 4,294,967,296. Однак це лише теоретична верхня межа. Це не точне подання всіх адрес, які фактично можуть використовуватися в загальнодоступному Інтернеті.
Для цілей цього виклику передбачається, що вся адресація є класною . Насправді класичний підрозділ адресного простору витіснив CIDR (безкласовий маршрутизація між доменами та VLSM (маскування підмережі змінної довжини) , але це ігнорується для цього завдання.
Відповідно до схеми класних адрес, існує 3 класи:
- Клас А -
0.0.0.0щоб127.255.255.255з/8NETMASK довжиною - Клас B -
128.0.0.0щоб191.255.255.255з/16NETMASK довжиною - Клас C -
192.0.0.0щоб223.255.255.255з/24NETMASK довжиною
Класи 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, а також.