Принцип побудови комп'ютерної мережі. Маска підмережі. Шлюз
В даній темі я постараюся "на апельсинах" розповісти, як влаштовані комп'ютерні мережі. У багатьох новачків виникають проблеми з налаштуванням мережі. Постараємося дати вам про це уявлення і зруйнувати міф про складнощі процесу налаштування мережі.
Принцип побудови комп'ютерної мережі
Комп'ютери зв'язуються між собою за допомогою адрес, представлених цифрами. Cистема числення в комп'ютерів двійкова, тобто адреса комп'ютера являє собою послідовність з нулів і одиниць (1010010101 ...) і довжина цієї послідовності дорівнює 32 знаки. Для зручності і наочності для людини цю послідовність цифр розбили на 4 частини і перевели в десяткову систему. Вийшло, що 32 одиниці = 255.255.255.255 (8 одиниць = 2 в 8 ступеня - 1 = 256 - 1 = 255).
На апельсинах: телефонний зв'язок теж працює з цифровими адресами (4951234567).
Що таке Маска підмережі:
Для зручності комп'ютера і наочності користувача, розбили цю 32-значну адресу, і вийшло, що перша частина 32-значної адреси відповідає за адресу підмережі, а друга частина - за адресу хоста (комп'ютера). Але розділили не навпіл! Для визначення довжини підмережі використовується маска. Наприклад, 255.255.255.0 - послідовність із 24 одиниць і 8 нулів - говорить про те, що перші 24 символи (біта) адреси - підмережа, а решта 8 біт - адреса хоста в цій підмережі. Це потрібно для того, щоб комп'ютер, формуючи пакет для іншого комп'ютера, подивився на свою підмережу і підмережу токо хоста до якого звертається, порівнявши їх, компютер розуміє куди слати пакет. Якщо підмережа однакова - значить безпосередньо комп'ютеру-одержувачу, якщо різна - то шлюзу, а шлюз пересилає далі.
На апельсинах: в Москві телефонні номери можуть бути в коді 495 або 499. Коли ми дивимося на весь номер (4991234567), то автоматично розуміємо, в одній "підмережі" ми з ним чи ні. Якщо в одній, то дзвонимо прямо 1234567, а якщо в різних, то через "шлюз" - вісімку.
Шлюз
Коли я кажу "напряму слати пакет туди-то" або "слати пакет шлюзу", я повинен відразу розповісти про те, як же це відбувається: сформований пакет просто викидається в дріт, а далі його ловлять всі, до кого він дійшов. По ідеї, комп'ютери звіряють інформацію про одержувача в пакеті зі своїми даними і в разі помилки просто відкидають його. Інформація, яка нас цікавить: MAC-адресу одержувача, ip-адреса одержувача. Коли ми посилаємо пакет через шлюз, то комп'ютер вказує MAC-адресу шлюзу (який він сам отримає з ip-адреси шлюзу за допомогою arp-запиту) і ip-адресу кінцевого комп'ютера.
На апельсинах: раніше потрібно було дзвонити "дівчині" і просити її з'єднати з "Ларисою Іванівною". Номер дівчини і є аналогія MAC-адресою шлюзу.
DNS:
Коли ми намагаємося підключитися до "сторінки" http://www.yandex.ru, комп'ютер повинен сформувати пакет-запит для віддаленого комп'ютера, на якому ця сторінка знаходиться. Для того, щоб дізнатися адресу цього комп'ютера, йому необхідно спочатку переглянути локальний файл hosts (в windows - C :/ windows/system32/drivers/etc/hosts, в linux - / etc / hosts) і, якщо там немає записів з цим ім'ям , то послати запит ДНС-серверу, який отримає запит про http://www.yandex.ru і поверне його 32-бітну адресу. Якщо ДНС-сервер не відповідає, то ми відправляємо запит другому ДНС-серверу.
На апельсинах: спочатку йдемо в записну книжку свого мобільного телефону і шукаємо там "Серьогу", якщо там його немає, то дзвонимо Антону (він знає номери всіх людей на планеті). Антон нам говорить номер Серьоги, після чого дзвонимо Серьозі. Якщо ж Антон сам не піднімає трубку, то дзвонимо його братові Коляну, у них одна записна книжка на двох яку вони час від часу синхронізують між собою.
Відповідно: якщо Вам хтось сказав, що у нього не працює інтернет, перевірте, може бути, у нього просто не прописані або прописані неправильно ДНС-сервера. Перевірити це можна "пропінгувавши" спочатку yandex.ru, а потім його ip-адреса: 77.88.21.11.
Всі адреси діляться на два типи: унікальні (білі, реальні, зовнішні) і неунікальні (сірі, внутрішні). Було багато причин для їх розділення, наприклад:
- обмежена кількість реальних адрес (підключених до послуг інтернет комп'ютерів в світі набагато більше, ніж можлива кількість зовнішніх адрес)
- як спосіб захистити внутрішні компютери організації від атак із зовні (завдяки фільтрації на шлюзах)
- і т.п.
Так вже домовилися, що адреси, що відносяться до підмереж, представленим нижче, не використовуються в інтернеті в якості реальних адрес:
10.0.0.0 — 10.255.255.255 (одна мережа класу A)
172.16.0.0 — 172.31.255.255 (шістнадцять мереж класу B)
192.168.0.0 — 192.168.255.255 (256 мереж класу C)
Це і є "сірі", "внутрішні" адреси. Їх використовують у відокремлених комп'ютерних мережах, які якщо і мають підключення до інтернет, то через особливий комп'ютер або ровтер (шлюз), у якого є зовнішній адрес (ну або він може бути в мережі з тим комп'ютером, у якого зовнішній адрес і т.д.) . Особливий він тим, що у нього налаштований forwarding (пропуск) пакетів з однієї мережі в іншу через нього. Якщо у цього шлюзу друга мережа - інтернет, і адресу якраз реальна (зовнішня), то необхідно налаштувати на ньому технологію транслювання мережевих адрес (network address translation, NAT). Це робиться для того, щоб мережеві пакети з локальної мережі, що пройшли через нього в інтернет, не мали сірого адреси-відправника, тому в цьому випадку сервер, для якого призначений пакет, не зрозуміє, кому саме з мільйонів локальних мереж повертати пакет-відповідь. При використанні NAT шлюз міняє адресу відправника на свій зовнішній адресу, а у себе записує "відповідь пакети з цього сервера перенаправляти такому-комп'ютерові ...". У цьому випадку використовується SNAT (source network address translation).
Якщо ж нам необхідно змінювати адресу одержувача (наприклад, в нашій локальній мережі є поштовий сервер з сірим адресою, а ми б хотіли мати до нього доступ з інтернету), то можна використовувати на нашому шлюзі DNAT (destination network address translation) або, як говорять в народі, "проброс портів". Тобто ми вказуємо в правилах файервола, що пакети, призначені нам і прийшли на порт 110, перенаправляти на внутрішню сіру адресу поштового сервера з ip-адресою 192.168.0.10 наприклад. Також за допомогою проброса портів на шлюзі(маршрутизаторі - маршрутизатор може виконувати роль шлюза) можна зробити свій ftp-сервер на локальному компютері.