Ответ
Диапазоны IP-адресов различаются для IPv4 и IPv6.
IPv4
- Формат: 32 бита, представляемые как четыре десятичных числа (октета) от 0 до 255, разделенных точками (например,
192.168.1.1). - Общий диапазон: От
0.0.0.0до255.255.255.255. - Частные (не маршрутизируемые в Интернете) диапазоны RFC 1918:
10.0.0.0–10.255.255.255(маска /8)172.16.0.0–172.31.255.255(маска /12)192.168.0.0–192.168.255.255(маска /16)
- Широковещательный адрес в локальной сети:
255.255.255.255.
IPv6
- Формат: 128 бит, представляемые как восемь групп по четыре шестнадцатеричных цифры, разделенных двоеточиями (например,
2001:0db8:85a3:0000:0000:8a2e:0370:7334). - Общий диапазон: От
::(все нули) доffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff. - Важные зарезервированные диапазоны:
::1/128— адрес loopback.fe80::/10— link-local адреса (аналог APIPA169.254.x.xв IPv4).fc00::/7— уникальные локальные адреса (ULA, аналог частных диапазонов в IPv4).ff00::/8— multicast адреса.
Пример проверки IPv4 на C++:
#include <string>
#include <sstream>
#include <vector>
bool isValidIPv4(const std::string& ip) {
std::vector<int> parts;
std::stringstream ss(ip);
std::string part;
while (std::getline(ss, part, '.')) {
if (part.empty()) return false;
for (char c : part) if (!isdigit(c)) return false;
int num = std::stoi(part);
if (num < 0 || num > 255) return false;
parts.push_back(num);
}
return parts.size() == 4;
}