Ответ
Границы локальной сети (LAN) определяются на нескольких уровнях:
1. Логические границы (IP-адресация):
- Используются частные IP-диапазоны, не маршрутизируемые в глобальном интернете:
10.0.0.0/8(от 10.0.0.0 до 10.255.255.255)172.16.0.0/12(от 172.16.0.0 до 172.31.255.255)192.168.0.0/16(от 192.168.0.0 до 192.168.255.255)
- Конкретная подсеть задаётся маской (например,
255.255.255.0или/24).
2. Физические/топологические границы:
- Ограничены зоной действия активного сетевого оборудования (коммутаторов, точек доступа).
- Маршрутизатор (шлюз) обычно является границей между LAN и другими сетями (WAN, интернет).
3. Административные границы:
- Определяются политиками сетевого администратора через правила брандмауэров, списки контроля доступа (ACL) и настройки маршрутизации.
- VLAN (виртуальные LAN) позволяют создавать логические границы внутри одной физической сети.
Проверка в C++ (сырые сокеты / POSIX):
#include <arpa/inet.h>
#include <iostream>
bool is_in_subnet(const char* ip_str, const char* network_str, const char* netmask_str) {
in_addr_t ip = inet_addr(ip_str);
in_addr_t network = inet_addr(network_str);
in_addr_t mask = inet_addr(netmask_str);
return (ip & mask) == (network & mask);
}
int main() {
// Проверяем, входит ли IP 192.168.1.5 в подсеть 192.168.1.0/24
if (is_in_subnet("192.168.1.5", "192.168.1.0", "255.255.255.0")) {
std::cout << "IP принадлежит локальной подсети.n";
}
return 0;
}