Веб-інфраструктура 101

Пряма закулісна інформація про те, що відбувається, коли ви вводите holbertonschool.com і натискаєте Enter.

доменних імен

Недавно всі маленькі повсякденні завдання мали сенс. Все, що робили люди, мало ціль і було легко зрозуміти; Вбивання оленів для їжі, підняття відра води зі свердловини до зволоження, рубання деревини для створення притулку.

Сьогодні ... ну, сьогодні все трохи складніше. Більшість простих завдань, які ми виконуємо, ми робимо, не знаючи, що насправді відбувається. Я впевнений, що ви можете придумати деякі з них - керувати автомобілем, друкувати документ, заряджати телефон, телефонувати тощо.

У цій статті ми поглянемо за лаштунки одного з цих завдань: перегляду Інтернету! Чи замислювались ви коли-небудь про те, що насправді відбувається, коли ви вводите такий сайт, як https://www.holbertonschool.com, і натискаєте «Enter»? Давайте розпочнемо!

DNS - сервери доменних імен

Подумайте про DNS як про величезний телефонна книга (приблизно 333,8 млн. доменних імен станом на 2018 рік). Якби ви спробували запам’ятати всі номери телефонів вашого контакту, вам було б надзвичайно важко. Те саме стосується і доменних імен! Що легше запам’ятати - holbertonschool.com або 99.84.216.49 ?

Інтернет складається з мільйонів IP-адрес (ці 4 цифри розділені крапками - наприклад, 8.8.8.8). Насправді кожен пристрій з активним підключенням до Інтернету має власну IP-адресу, включаючи ваш смартфон та комп’ютер. Кожна ІР-адреса (ІР-адреси веб-сайту) має відповідне доменне ім’я, яке є фактичною назвою веб-сайту, яке ви знаєте. Вся мета серверів доменних імен полягає в тому, щоб вам не потрібно було запам'ятовувати кожну окрему IP-адресу.

DNS - це протокол у наборі стандартів для обміну даними комп’ютерами в Інтернеті та багатьох приватних мережах, відомий як пакет протоколів TCP/IP.

Ваш комп’ютер використовує сервер DNS для пошуку веб-сайту, до якого ви намагаєтесь отримати доступ; Правильним терміном для цього є DNS Name Resolution і зазвичай це передбачає використання вашого Інтернет-провайдера (Інтернет-провайдера) . Процес пошуку правильної адреси може бути досить складним і, як правило, проходить кілька різних етапів, але все це відбувається за лічені мілісекунди, навіть не знаючи про це. Ми могли б дуже глибоко заглибитися в цей процес, але це зайняло б решту цього допису в блозі 😃. Якщо вам цікаво дізнатись більше про DNS, я рекомендую цей чудовий мультфільм, який спрощує все!

TCP/IP

Протокол управління передачею (TCP) та Інтернет-протокол (IP, не плутати з IP-адресою, про яку ми говорили раніше) - дуже поширені мережеві протоколи, що визначають спосіб роботи нашого Інтернету в даний час.

Пам’ятаєте, коли раніше у нас були телевізори з антенами? Місцеві радіовежі передавали радіосигнали, а телевізори мали довгі антени, здатні приймати цей сигнал, який оброблявся і відображався на екрані для нашої особистої розваги. TCP/IP - подібна концепція, просто використовуючи Інтернет. Веб-сайти, які ми хочемо бачити, мають бути перенесені звідкись на наші пристрої.

Тепер, коли ми маємо IP-адресу веб-сайту, до якого ми намагаємось отримати доступ (через DNS), нам потрібно знайти спосіб насправді побачити вміст. Ці веб-сайти мають бути звідкись, оскільки не було б сенсу зберігати кожне окреме відео YouTube на вашому особистому сховищі для ноутбука.

Таким чином, виникає існування веб-сервера! Ці сервери зберігають вміст усіх веб-сайтів, до яких ми хочемо отримати доступ. Насправді, весь Інтернет працює навколо визначення клієнт-сервер. Коли ви хочете переглянути веб-сайт, ви стаєте клієнтом, який робить запит, а сервер відповідає із запитаним вмістом. Протоколи TCP/IP - це спосіб передачі вмісту з сервера на клієнта і навпаки.

Ці протоколи побудовані на чотирьох рівнях: рівень додатків, транспортний рівень, рівень Інтернету, рівень доступу до мережі.

Шар додатків призначений для розподілу вмісту, який буде відправлено, на менші сегменти, які називаються пакетами. Транспортний рівень визначає спосіб надсилання цих пакетів - або за допомогою TCP (Transfer Control Protocol), або UDP (протокол, що використовується для трансляції відео або прямих трансляцій). Ці два протоколи мають різні способи надсилання пакетів і використовуються для різних цілей. Протокол Інтернету (будучи Інтернет-рівнем) диктує логістику пакетів, даючи їм пункт призначення і спосіб дістатися туди.

HTTP/HTTPS

Протокол передачі гіпертексту (тобто захищений) - це, по суті, протокол рівня додатків у TCP/IP стандартів, і, мабуть, той, який ви використовуєте найбільше (Є кілька інших, таких як FTP). Цей протокол використовується між веб-клієнтом (наприклад, вашим браузером) та веб-сервером. Він визначає, як форматуються та передаються повідомлення, а також які дії повинні виконувати сервери та веб-клієнти у відповідь на різні команди. Ви коли-небудь пробували отримати доступ до сторінки веб-сайту, але отримували щось на зразок «Помилка 404! Ця сторінка не існує "? 404 - це код стану відповіді HTTP, тобто сторінка, яку ви вимагали, не існує на сервері.

HTTPS є більш безпечною версією HTTP. Всі дані надійно передаються за допомогою SSL (Рівень захищених сокетів) - кожен захищений веб-сайт, до якого ви отримуєте доступ (зазвичай поряд із URL-адресою є символ блокування), має сертифікат SSL, що підтверджує, що дані, які вам передаються, захищені.

Чому це взагалі актуально? Ну, скажімо, ви намагаєтесь щось замовити через Інтернет, і вам потрібно ввести дані своєї кредитної картки. HTTPS гарантує, що всі дані, які ви надсилаєте/отримуєте, неможливо прочитати. Він використовує алгоритми шифрування для скремблювання переданих пакетів, переконуючись, що ніхто не має можливості їх розшифрувати.

Говорячи про безпеку, нам слід пройти брандмауер .

Брандмауер - це мережевий пристрій захисту, який контролює вхідний та вихідний мережевий трафік і дозволяє або блокує пакети даних на основі набору правил безпеки.

Це досить зрозуміло. Призначення брандмауера - створити тип бар’єру між приватною мережею та вхідним трафіком із зовнішніх джерел (наприклад, Інтернету), щоб відкинути можливість шкідливого вмісту чи вірусів. Брандмауер може бути апаратним (фізично існуючим) або програмним. Існує багато різних типів брандмауерів, серед яких:

  • Фільтрування пакетів - процес перевірки кожного вхідного та вихідного пакета та відхилення/прийняття його на основі його вмісту.
  • Брандмауери проксі - Фільтрування мережевого трафіку на рівні програми. Це відбувається перед передачею пакетів. Проксі виконує роль посередника між двома кінцевими системами. Клієнт робить запит на брандмауер (а не на сам сервер), який потім визначається як безпечний або заблокований.

Балансир навантаження

Все, що пояснювалось досі, звучить досить прямо, але що відбувається, коли трафік починає зростати, і я маю на увазі ДІЙСНО зростати? Коли мільйони користувачів одразу роблять запити на веб-сайти, такі як Google і Facebook? Один веб-сервер не зможе обробляти всі ці відповідні запити, тому їм доведеться використовувати два (або багато інших) сервери. Виникає нова проблема - коли користувач робить запит, вміст надходитиме з веб-сервера 1 або веб-сервера 2? Саме з цієї причини веб-сайти таких типів мають Load Balancer (який насправді також є сервером).

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

Мета Load Balancers - розподілити вхідний трафік між кількома серверами, що підвищує ефективність, надійність та доступність вашого сайту. Якщо один веб-сервер раптово виходить з ладу, цей спеціальний сервер автоматично перенаправляє трафік на інші веб-сервери.

Балансир навантаження має різні алгоритми розподілу робочого навантаження, наприклад:

  • Round Robin (найпоширеніший) - запити розподіляються по всій групі серверів послідовно. Запит 1 спрямований на сервер 1, запит 2 - на сервер 2 тощо.
  • Найменші підключення - перед перенаправленням запиту на сервер, балансувальник навантаження обчислює, який сервер має найменше з'єднань, а потім надсилає запит туди.
  • IP-хеш - IP-адреса клієнта використовується для визначення, на який сервер буде спрямований запит. Наприклад, усі IP-адреси від 100.100.100.100 - 400.400.400.400 будуть надіслані на сервер 3 .

Сервер додатків та бази даних

Якби у нас у світі були лише веб-сервери, наші веб-сайти були б дуже, дуже простими. Немає користувачів, немає логінів, немає програм, немає ігор - в основному це просто простий текст та картинки.

У міру того, як веб-сайти ставали дедалі складнішими, для поєднання всього цього доводилося залучати різні програми. Наприклад, коли Девід входить у Facebook, і перша сторінка, яку він бачить, - це «Привіт Девід! Ласкаво просимо назад ”, як це можливо? Замість того, щоб на веб-сервері зберігати 2,4 мільярда особистих сторінок (кількість користувачів у Facebook), Facebook використовує бази даних для зберігання користувачів. За допомогою серверів додатків ми можемо отримати доступ до вмісту в базі даних і перетворити його на статичний HTML-вміст, щоб він міг відображатися на наших пристроях.

Сервери програм дозволяють веб-сайтам стати більш активними та динамічними. Користувачі можуть взаємодіяти з ним, увійшовши в систему, розмістивши повідомлення на форумі та багато іншого. Вони необхідні для сучасних веб-сайтів і використовуються з більшістю веб-сайтів, з якими ви взаємодієте.

Ось схема, яка ілюструє потік процесів, що відбуваються від клієнта до сервера. У цьому прикладі ми використовуємо Nginx як веб-сервер, а MySQL для бази даних. Крім того, ми використовуємо систему моніторингу, про яку ми не говорили. Докладніше тут.