Перейти до основного вмісту

IP-адреси

Маска підмережі

IP-адреса складається з двох логічних частин:

  • адреса мережі (Network ID);
  • адреса вузла або пристрою (Host ID).

Маска підмережі визначає, яка частина IP-адреси належить мережі, а яка — конкретному пристрою. Саме завдяки масці комп'ютер може визначити, чи знаходиться інший пристрій у тій самій локальній мережі, чи для зв'язку необхідно використовувати маршрутизатор.

Приклад маски підмережі

Найпоширеніша маска:

255.255.255.0

У двійковому вигляді вона має вигляд:

11111111.11111111.11111111.00000000

Біти, що дорівнюють 1, визначають мережеву частину адреси. Біти, що дорівнюють 0, визначають адресу вузла.

Як визначається адреса мережі?

Нехай IP-адреса має вигляд:

192.168.1.15

У двійковому вигляді:

11000000.10101000.00000001.00001111

Маска:

11111111.11111111.11111111.00000000

До IP-адреси застосовується побітова операція AND.

11000000.10101000.00000001.00001111
11111111.11111111.11111111.00000000
-----------------------------------
11000000.10101000.00000001.00000000

Отримуємо адресу мережі:

192.168.1.0

Що означає запис /24?

Запис

192.168.1.15/24

називається CIDR-нотацією. Число після символу "/" означає кількість одиничних бітів у масці підмережі.

Наприклад:

/24 = 11111111.11111111.11111111.00000000
     = 255.255.255.0

Інші поширені приклади:

/8  = 255.0.0.0
/16 = 255.255.0.0
/24 = 255.255.255.0
/25 = 255.255.255.128
/30 = 255.255.255.252

Скільки пристроїв може містити підмережа?

IPv4-адреса містить 32 біти. Якщо маска має довжину /24, то для адрес пристроїв залишається:

32 - 24 = 8 біт

Кількість можливих адрес:

2^8 = 256

Із них дві адреси службові:

  • адреса мережі;
  • широкомовна (broadcast) адреса.

Отже, доступно:

256 - 2 = 254 пристрої

Для інших масок:

Маска Кількість адрес для пристроїв
/30 2
/29 6
/28 14
/27 30
/24 254
/16 65534

Маска підмережі не визначає, чи є IP-адреса приватною (локальною) або публічною (глобальною). Вона лише визначає межу між адресою мережі та адресою пристрою.

Тип IP-адреси визначається її належністю до певного діапазону.

Приватні (локальні) діапазони IPv4:

10.0.0.0/8
172.16.0.0/12
192.168.0.0/16

Наприклад:

192.168.1.15/24

це приватна IP-адреса, оскільки вона належить діапазону 192.168.0.0/16.

А адреси

8.8.8.8
1.1.1.1

є публічними та можуть маршрутизуватися через Інтернет.

Використання різних масок підмережі

На перший погляд може здатися, що завжди вигідніше використовувати маску /16, адже вона дозволяє підключити понад 65 тисяч пристроїв. Проте великі підмережі мають недоліки.

  • Збільшується широкомовний (broadcast) трафік.
  • Ускладнюється адміністрування мережі.
  • Складніше забезпечити безпеку між різними підрозділами.
  • Важче локалізувати несправності.

Тому великі організації зазвичай поділяють мережу на декілька менших підмереж. Наприклад:

192.168.10.0/24 — бухгалтерія
192.168.20.0/24 — відділ продажів
192.168.30.0/24 — ІТ-відділ
192.168.40.0/24 — сервери
192.168.50.0/24 — гостьова Wi-Fi мережа

Маска /30 використовується для з'єднання двох маршрутизаторів або інших мережевих пристроїв, коли достатньо лише двох IP-адрес.

10.0.0.0/30

10.0.0.0 — адреса мережі
10.0.0.1 — Router A
10.0.0.2 — Router B
10.0.0.3 — broadcast

Таким чином не витрачаються зайві IP-адреси.

VLAN

У сучасних мережах підмережа майже не залежить від фізичного розташування пристроїв. Комп'ютери одного відділу можуть знаходитися на різних поверхах або навіть у різних будівлях і при цьому належати до однієї локальної мережі.

Це забезпечується технологією VLAN (Virtual LAN), яка дозволяє створювати логічні мережі незалежно від фізичної топології.

VLAN (Virtual Local Area Network) — це технологія другого рівня моделі OSI, яка дозволяє розділити один фізичний комутатор на декілька незалежних логічних мереж.

Наприклад:

Port 1 - VLAN 10
Port 2 - VLAN 10
Port 3 - VLAN 20
Port 4 - VLAN 20
Port 5 - VLAN 30
Port 6 - VLAN 30

Пристрої з різних VLAN не можуть обмінюватися кадрами Ethernet без маршрутизатора або комутатора третього рівня.

Комутатори можуть бути з'єднані спеціальними trunk-з'єднаннями, які передають трафік одразу багатьох VLAN. Для цього використовується стандарт IEEE 802.1Q, що додає до Ethernet-кадрів спеціальний тег із номером VLAN.

Завдяки цьому пристрої, розташовані на різних поверхах або навіть у різних будівлях, можуть належати до однієї логічної локальної мережі.

Коментарі

Популярні публікації

Дамп бази даних Postgresql локально

Що потрібно встановити локально (Ubuntu) Встанови клієнтські утиліти PostgreSQL: pg_dump , psql , pg_restore . sudo apt update sudo apt install postgresql-client Кроки міграції Ідея: не зберігати дамп на серверах. Зробити дамп з віддаленого сервера на свій локальний ПК, потім передати його на новий сервер і там відновити. 1) Створення дампу з віддаленого сервера локально pg_dump -h OLD_SERVER_IP -U OLD_USER -Fc -d OLD_DB -f dump_file.dump Пояснення ключів: -h (хост), -U (користувач), -Fc (custom format), -d (БД), -f (вихідний файл локально). 1.1) Варіант з розбиттям на частини (якщо треба) pg_dump -h OLD_SERVER_IP -U OLD_USER -Fc -d OLD_DB | split -b 10G - dump_file.dump.part_ Це створить локально файли типу dump_file.dump.part_aa , dump_file.dump.part_ab тощо. 2) Передача дампу на новий сервер Один файл: scp dump_file.dump NEW_USER@NEW_SERVER_IP:/tmp/ Або частинами: scp dump_file.dump.part_* NEW_USER@NEW_SERVER_IP:/tmp/ 3) Збирання файл...

Основи Next.js

Що таке Next.js? Next.js — це прогресивний фреймворк для розробки веб-застосунків на основі React. Він розширює можливості React, додаючи готову інфраструктуру для Server-Side Rendering (SSR), генерації статичних сторінок, маршрутизації через файлову систему, а також можливість створювати backend-ендпоінти прямо в проєкті. Чому він став популярним? Next.js швидко здобув популярність завдяки тому, що пропонує: SEO-дружні сторінки завдяки SSR / SSG; швидкий перший рендер (First Page Load); просту маршрутизацію без налаштування; розгортання в один клік через Vercel; вбудовану оптимізацію зображень та продуктивності. Чим відрізняється від класичного React У класичному React ми отримуємо лише клієнтську бібліотеку для побудови UI-компонентів. Усе інше (SSR, маршрути, API) треба налаштовувати вручну або через сторонні бібліотеки (наприклад, React Router, Redux, Express, etc.). Next.js — це уже повноцінний фреймворк. Він одразу має: серверний рендеринг...

ООП у TypeScript

Короткий вступ TypeScript додає статичну типізацію поверх JavaScript і підтримує класичні концепти ООП: класи , успадкування , інтерфейси , інкапсуляцію , поліморфізм та абстракції . Нижче — практичні приклади та пояснення. Класи — декларація, конструктор, властивості та методи class Person { public name: string; private age: number; protected email?: string; // необов’язкове static species = 'Homo sapiens'; constructor(name: string, age: number, email?: string) { this.name = name; this.age = age; this.email = email; } public greet(): string { return `Hi, I'm ${this.name}.`; } private getBirthYear(currentYear: number): number { return currentYear - this.age; } } const p = new Person('Ivan', 30, 'ivan@example.com'); console.log(p.greet()); // console.log(p.age); // помилка: 'age' приватне console.log(Person.species); Успадкування і перевизначення (extends, super) class Employee extends Person { ...

Створення проєкту на TypeScript, модулі

Крок 1. Ініціалізація проєкту Спочатку створимо нову теку та ініціалізуємо Node.js-проєкт за допомогою npm : mkdir my-typescript-app cd my-typescript-app npm init -y Крок 2. Встановлення TypeScript Додаємо TypeScript як dev-залежність: npm install --save-dev typescript ts-node @types/node - typescript — компілятор TypeScript - ts-node — дозволяє запускати TS-файли без попередньої компіляції - @types/node — типи для стандартних Node.js API Крок 3. Створення файлу tsconfig.json Ініціалізуємо конфігурацію TypeScript: npx tsc --init Приклад файлу tsconfig.json { "compilerOptions": { "target": "ES2020", // Версія JS у вихідному коді "module": "CommonJS", // Система модулів (для Node.js) "rootDir": "src", // Вхідна папка з TypeScript-кодом "outDir": "dist", // Куди компілюється код JS "str...

Інструменти для роботи з Node.js

Що таке npm? npm (Node Package Manager) — це офіційний пакетний менеджер для Node.js . Він дозволяє: Встановлювати сторонні бібліотеки та фреймворки Керувати залежностями проєкту Запускати скрипти (команди) через package.json Приклад ініціалізації проєкту з npm npm init -y Файл package.json (скорочений приклад) { "name": "my-project", "version": "1.0.0", "scripts": { "start": "ts-node src/index.ts", "build": "tsc" }, "dependencies": { "express": "^4.18.0" }, "devDependencies": { "typescript": "^5.0.0", "ts-node": "^10.0.0" } } Що таке tsconfig.json? tsconfig.json — це файл конфігурації для компілятора TypeScript, який визначає, як слід компілювати код. Приклад файлу tsconfig.json { "compilerOptions": { "target": "ES2020...