Протоколи - це правила в інтернеті, за якими пристрої з різними операційними системами та програмним забезпеченням обмінюються даними. З їх допомогою, наприклад, користувач Safari на MacBook отримує повідомлення відправлене через Chrome на Android. Щоб обмінюватися даними було зручніше, завдання щодо їх відправлення та отримання розділені. Створено архітектуру клієнт-сервер, де клієнт відправляє запит, а сервер приймає його і повертає відповідь. Сервер — це спеціальна програма або потужний комп'ютер, його ще називають хост-системою. Клієнт — будь-який пристрій для роботи з сайтом, наприклад ноутбук, смартфон або бортовий комп'ютер в автомобілі. Веб-додаток — це клієнт-серверна програма, в якій клієнтом виступає браузер. Допустимо, на сервері зберігається HTML-сторінка з кодом. Браузер одержує файл і показує цей код як звичну сторінку сайту. Браузер відправляє запит, а сервер приймає його та повертає відповідь Протоколи визначають правила виконання конкретних завдань. Але фронтендерам необов'язково знати всі існуючі протоколи — достатньо розумітися на основних. 👉 Хочеться розібратися у протоколах? У нас з'явився курс «Протоколи та мережі». Він навчить вас розуміти принципи передачі даних та захищати свій код від атак. IP відповідає за пошук комп'ютерів у мережі за їх IP-адресами. Ще він надає стратегію маршрутизації, тобто складає оптимальний маршрут передачі даних. Дані в Інтернеті передаються IP-пакетами. Кожен пакет має заголовок і дані.У заголовку знаходяться IP-адреси джерела та пункту призначення. Дані — це вміст, наприклад, частина веб-сторінки. Роботу IP можна порівняти з поштовим відділенням: протокол надсилає IP-пакети через інтернет так само, як пошта розсилає листи по всьому світу. При доставці пошта використовує пункти передачі: лист із відділення спочатку потрапляє на поїзд, потім на вантажівку та наприкінці вручається адресату. В інтернеті також є «пункти передачі» — їх називають маршрутизаторами. Мета маршрутизатора — відправити пакет до пункту призначення найкоротшим шляхом. Якщо все йде добре, пакет прибуває на найближчий маршрутизатор до одержувача, який точно знає, куди його відправити. Але буває і так, що якийсь із маршрутизаторів на шляху зламаний або вийшов з ладу, і тоді вибирається інший шлях: Безліч сусідніх шляхів робить передачу даних більш надійною. Унікальна IP-адреса має кожен домен. Він записується у вигляді чотирьох чисел від нуля до 255 – наприклад, 74.125.20.113. Введіть цю адресу в браузерний рядок та подивіться, на який сайт ви потрапили. DNS пов'язує IP-адресу зі зрозумілим для людей доменним ім'ям, наприклад, 178.79.181.169 перетворюється на htmlacademy.ru: Принцип роботи DNS схожий на пошук та виклик контактів у телефоні. Навряд чи хтось пам'ятає друзів — та це й необов'язково, адже вони зберігаються у списку контактів. Коли ми хочемо комусь зателефонувати, то просто знаходимо потрібне ім'я і натискаємо кнопку виклику - в цей момент починається з'єднання, але не по імені, а по 1317 телефону. DNS-сервер - це і є "список всіх контактів", тобто IP-адрес, які там зберігаються. Кожній IP-адресі надано домен.І коли ми вводимо в рядку браузера ім'я домену, то відбувається запит до DNS-сервера - запитується IP-адреса. SSL — криптографічний протокол шифрування запитів та відповідей, він потрібний для безпечного переміщення даних через інтернет, а TLS — його просунута версія. SSL вже майже не використовують, але ця назва була такою популярною, що її досі використовують, а будь-який SSL-сертифікат у хостинг-компаній — TLS-сертифікат. Обидва протоколи відповідають за передачу даних та працюють поверх IP, але з невеликою різницею. TCP доставляє дані без втрат, тому його використовують для передачі фотографій, повідомлень та іншої інформації. А ось UDP не гарантує доставку, але він набагато швидше. Його використовують, коли швидкість важливіша за надійність, наприклад, при передачі аудіоповідомлень або відеотрансляціях. HTTP і HTTPS призначені передачі даних і в результаті користувачі можуть переглядати веб-сторінки. Насправді HTTPS — це окремий протокол, а розширення HTTP. Він безпечніший, оскільки використовує SSL/TLS для шифрування звичайних запитів та відповідей. HTTP — один із найпопулярніших протоколів в інтернеті, тому подивимося докладніше, як він працює. Протокол працює у форматі запит-відповідь із двома учасниками спілкування: Клієнт робить запит на сервер для передачі кожного ресурсу: файлів HTML, CSS, JavaScript, зображень чи відеофайлів. Потім сервер відповідає запит, відправляючи ресурс. Припустимо, що ми створили HTML з наступною розміткою: Це простий HTML-файл, в якому підключено два ресурси: стильовий файл style.css та зображення logo.svg. Браузер запросить три ресурси: index.html, style.css та logo.svg. Для кожного запиту та відповіді відкривається своє TCP-з'єднання. При кожному з'єднанні відбувається тристороннє «рукостискання»: клієнт та сервер тричі обмінюються порожніми пакетами даних, щоб упевнитися в існуванні один одного та готовності до роботи з даними: Запит-відповідь виглядає так: Тристороннє «рукостискання» потрібно проводити в кожному TCP-з'єднанні, тому що HTTP не запам'ятовує стану, тому ні клієнт, ні сервер не можуть зберігати інформацію між різними запитами. HTTP — один з ранніх протоколів, і при його створенні ніхто не очікував, що на веб-сторінці доведеться завантажувати так багато ресурсів. Таке «рукостискання» робить завантаження сторінки повільнішим. Щоб вирішити проблему, розробникам доводиться скорочувати кількість ресурсів, що завантажуються, наприклад, використовувати спрайти або розділяти файли по різних доменах - цей метод називається domain sharding. Такі маніпуляції зменшують кількість TCP-з'єднань, хоч і створюють свої проблеми. HTTP/2 — покращена версія HTTP. За даними Can I Use, його підтримує більшість браузерів. Головне нововведення цього протоколу - одне TCP-з'єднання на різні запити або мультиплексування: Як виглядає запит-відповідь у HTTP/2: Ще в HTTP/2 з'явився push-сервер, тобто сервер може надсилати більше відповіді один клієнтський запит. Наприклад, якщо клієнт запитує файли index.html, style.css і logo.svg, сервер відправить відразу три файли. Без push-сервера клієнту потрібно вимагати кожен файл окремо Тому багато оптимізації під HTTP під час переходу на HTTP/2 не потрібні. Наприклад, можна відмовитися від поділу ресурсів за доменом. HTTP/3 - третя версія HTTP, заснована на QUIC - протоколі, який передбачає швидке підключення до інтернету через UDP. Головна перевага HTTP/3 – скорочення затримки під час встановлення з'єднання. QUIC достатньо одного «рукостискання» для встановлення безпечного сеансу. А ще HTTP/3 працює поверх UDP, тому швидкість доставки даних швидше, ніж у HTTP і HTTP/2 поверх TCP. Протокол вже набув статусу запропонованого стандарту, тобто браузери майже завершили роботу над підтримкою протоколу. Але поки що підтримки недостатньо, щоб переводити сайт з HTTP/2 на HTTP/3. У цьому протоколі з'єднання встановлюється набагато швидше, ніж у HTTP – тут відправляється «рукостискання» відразу з усією необхідною інформацією передачі даних. Канал при цьому залишається відкритим, поки хтось із сторін не перерве його. Це означає, що запити та відповіді відбуватимуться практично миттєво. Якщо сервер отримає нові дані, він відправить їх клієнту без запиту. Протокол WebSockets використовують там, де важлива швидкість доставки даних, наприклад, у чатах та месенджерах, іграх, онлайн-трансляціях. Він, швидше за все, не стане в нагоді при розробці простих веб-додатків, невеликих CMS або при використанні REST API, де достатньо HTTP-запитів GET, POST, PUT і DELETE. Протоколи це те, з чим ви вже працювали, але, можливо, навіть не підозрювали.Знаючи принципи їх роботи, ви зможете глибше розібратися у зв'язку з фронтендом і бекендом, а також зрозумієте, які оптимізації проводити у веб-додатку, як краще передавати дані або як захистити сайт від злому. Знання протоколів дає розуміння, які технології використовуватиме певних завдань. Який протокол вибрати для онлайн-чату з великою кількістю користувачів, а який для завантаження фотографії користувача в профіль. Якщо знати вразливості на шляху передачі даних, можна передбачити та пом'якшити наслідки атак на веб-програму. Наприклад, створити стратегію захисту даних банківських карток на стороні клієнта та на стороні сервера. Знаючи особливості протоколів, можна прискорити веб-додаток та не витрачати час на непотрібну оптимізацію. А ще з'являється розуміння, що змінювати під час переходу на інший протокол. Наприклад, щоб оптимізувати програму під HTTP/1, потрібно зменшити кількість TCP-з'єднань. Для цього розробники скорочують кількість файлів: усі стилі поєднують у styles.css, а всі скрипти – у scripts.js. Для HTTP/2 така оптимізація не потрібна, тому можна розділити загальні CSS та JS-файли на окремі та підключати на сторінку лише необхідні. Спрайти — оптимізація протоколу HTTP. Їх мінус у тому, що для кожної сторінки завантажується спрайт з іконками всієї веб-програми, навіть якщо на сторінці використовується лише кілька іконок. Для HTTP/2 можна завантажувати лише ті зображення, які потрібні користувачеві. При цьому необов'язково повністю позбавлятися спрайтів - можна створити спрайти для компонентів і використовувати необхідні на конкретній сторінці. Якщо програма оптимізована до HTTP/2, то для переходу на HTTP/3 нічого не потрібно робити: всі оптимізації підійдуть і для HTTP/3. Знання протоколів та мереж підвищує цінність фронтендера та впливає на його зарплату. Щоб успішно пройти співбесіду на мідла у великі компанії, корисно знати TCP/IP, HTTP/HTTPS, DNS та WebSocket. Ще потрібно хоча б на базовому рівні знати про безпеку: XSS-атаки та CORS – а розібратися в цій темі без знання протоколів не вдасться. При розробці програм корисно знати, як працює Інтернет і за якими принципами передаються дані. Розуміння протоколів дозволяє ширше дивитися на свою роботу, а також знати, куди рухається сфера IT і які технології будуть потрібні в майбутньому. А ще ці знання стануть у нагоді при співбесіді на позицію мідла чи сеньйора. "Доктайп" - журнал про фронтенд. Читайте, слухайте та навчайтеся з нами. Розповідаємо про найчастіше використовувані правила взаємодії пристроїв у мережі. Ця інструкція є частиною курсу «Як працюють мережеві протоколи». Дивитись весь курс У світі існує понад 7 000 протоколів, і їхня кількість продовжує зростати. Розповідаємо про найчастіше використовувані правила взаємодії пристроїв у мережі. Мережевий протокол — це набір правил, визначальний принципи взаємодії пристроїв у мережі. Щоб надсилання та отримання інформації пройшли успішно, всі пристрої-учасники процесу повинні приймати умови протоколу та дотримуватися їх. У мережі їх підтримка вбудовується або в апаратну частину (залізо), або в програмну частину (в код системи), або і туди, і туди. Для взаємодії протоколів між собою існує модель OSI або Open Systems Interconnection. Дослівно назва перекладається як «взаємодія відкритих систем». Модель OSI - це модель, що дозволяє різним системам зв'язку комунікувати між собою за загальноприйнятими стандартами. Її можна порівняти з англійською, тобто глобальною, універсальною мовою у світі мереж. Модель заснована на принципі поділу комунікаційної системи на сім окремих рівнів. Якщо передачі інформації трапляються збої, модель допомагає швидше і легше локалізувати проблему конкретному рівні і значно прискорити процес відновлення працездатності системи. Модель OSI є еталонним стандартом, але зараз вона застаріла, оскільки сучасні протоколи працюють відразу на кількох рівнях моделі OSI. Модель TCP/IP допомагає зрозуміти принцип роботи та взаємодії вузлів у мережі Інтернет. Її назва включає два основні протоколи, на яких побудований інтернет TCP/IP розшифровується як Transmission Control Protocol/Internet Protocol, або протокол управління передачею (даних)/інтернет. -протокол. Модель використовується у всьому сучасному інтернеті, нові мережеві протоколи розробляються з опорою на модель TCP/IP. Докладніше про модель TCP/IP можна прочитати у блозі. Далі ми розглянемо основні протоколи міжмережевого, транспортного рівнів та рівня додатків. Саме з ними ми стикаємося найчастіше, аналізуючи будь-які проблеми у мережі чи сервері. Internet Protocol (IP) — це найпростіший протокол, який об'єднав окремі комп'ютери у глобальну мережу. Головним його завданням є маршрутизація дейтаграм - визначення маршруту проходження пакетів по вузлах мережі. Кожен пристрій - ваш комп'ютер, принтер і т.д. — має IP-адресу, щоб дані потрапляли до потрібного адресата. Так, наприклад, надісланий на друк файл не виявиться замість принтера в особистому ПК вашого колеги. Як мінуси протоколу можна відзначити низьку надійність. Він визначає факт передачі пакета і контролює цілісність даних. IP просто здійснює пересилання. Для пересилання пакетів необхідно визначити, який порт відправити пакет. Для цього протокол має власну систему адресації. Як адреси виступає 32-бітові (IPv4) або 128-бітові (IPv6) адреси. Перед відправкою пакета до нього додаються header (заголовок) і payload (дані для доставки). IPv4 є 32-розрядною системою, що складається з чотирьох розділів (123.123.123.123). Він підтримує до 4294967296 адрес і є протоколом за замовчуванням. Основною його перевагою є простота. У недоліках — обмежений адресний простір, який також називається «вичерпанням адрес». IPv6, Навпаки, - 128-бітний адресний простір, який забезпечує приблизно 2 ^ 128 ступеня адрес. Формат запису складається з восьми розділів, у кожен із яких записується чотири 16-річні цифри.Недолік протоколу — складно мережного адміністрування. При оренді сервера або віртуальної машини в Selectel видається IPv4, проте можна запросити і IPv6-адреси, у хмарі на базі VMware видаються лише IPv4-адреси. Один з основних протоколів, який працює поверх IP, - це протокол TCP, через що його часто позначають як TCP/IP. Але це не єдиний протокол, який є частиною інтернет-протоколу. TCP допомагає пристроям у мережі обмінюватися повідомленнями. Він працює на четвертому, транспортному рівні моделі OSI. Для передачі відбувається дроблення вихідного файлу на частини, які передаються одержувачу, а далі збираються назад. Наприклад, людина запитує веб-сторінку, далі сервер обробляє запит і надсилає у відповідь HTML-сторінку за допомогою протоколу HTTP. Він, у свою чергу, запитує рівень TCP для встановлення необхідного з'єднання та надсилання HTML-файлу. TCP конвертує дані блоки, передаючи їх у рівень TCP користувача, де відбувається підтвердження передачі. Властивості протоколу TCP: На відміну від протоколу ТСР, User Datagram Protocol забезпечує передачу даних без отримання підтвердження від користувача про результат дії. Завдяки цьому досягається велика швидкість роботи та передачі даних на шкоду надійності та безпеці. Особливості протоколу диктують специфіку застосування. Так він підходить для додатків, наприклад, Skype, Discord та інші, які працюють в реальному часі і де затримка передачі може бути проблемою. Також його переважно використовувати в додатках з великою кількістю підключених клієнтів, наприклад, в іграх, голосових або відеоконференціях, а також при потоковій передачі мультимедіа. UDP працює шляхом збору даних в UDP-пакеті та додавання до пакету власної інформації заголовка. Заголовок UDP включає чотири поля, обсяг яких становить 2 байти кожен: номер порту джерела, номер порту призначення, довжина заголовка та контрольна сума блоку. Протокол UDP люблять зловмисники при організації DDOS або DOS-атак. Через те, що цей протокол не вимагає підтвердження від сервера, відкривається можливість просто "залити" сервер запитами. Стандартна атака має на увазі відправлення великої кількості дейтаграм.Це змушує сервер відповідати на кожен із них, витрачаючи обчислювальні потужності. Ще один протокол, який відноситься до транспортного рівня. SCTP забезпечує надійну послідовну передачу даних. Підтримує багатоадресне з'єднання, коли один або обидва кінцеві вузли можуть складатися з більш ніж однієї IP-адреси. Це забезпечує прозоре перемикання між резервними мережевими шляхами. SCTP аналогічний протоколам UDP і TCP, які забезпечують функції транспортного рівня деяких інтернет-додатків. Оскільки перевага протоколу SCTP — у швидкому перемиканні між інтерфейсами, на нього переходять лише компанії, котрим критична недоступність додатків. SCTP працює поверх безконтактної пакетної мережі, такої як IP, та підтримує передачу даних у випадках з одним або декількома IP. Real-time Transfer Protocol – це протокол, який використовується при передачі потокового аудіо та відео та застосовується при передачі голосу переважно в IP-телефонії. RTP застосовується разом із протоколом управління RTCP. Коли RTP транслює медіа, RTCP застосовується під час аналізу статистик QoS (Quality of Service) і забезпечує синхронізацію різних потоків. RTP надсилається та приймається за допомогою парних номерів портів, а RTCP використовує непарні номери. Також протокол вважають головним стандартом, який застосовується при передачі аудіо та відео по IP-мережі. Оскільки RTP може здійснювати її кільком кінцевим адресатам одночасно за допомогою багатоадресної IP-розсилки. Завдання протоколу - Діагностика проблем при взаємодії пристроїв. Він визначає, досягли ці місця призначення чи ні. Основна мета ICMP – повідомляти про помилки. Якщо будь-які дані не потрапили за призначенням, ICMP генерує помилки для обміну з пристроєм, що відправляє. Наприклад, якщо об'єм даних, що передаються, занадто великий для маршрутизатора, маршрутизатор відкине пакет і надішле ICMP-повідомлення вихідному джерелу даних. Як і у випадку UDP, протокол ICMP можна використовувати для мережевих атак, таких як ICMP flood та ping of death, де головний прийом – генерація великої кількості ICMP-повідомлень. Open Shortest Path First використовується для пошуку найкращого шляху між вихідним та кінцевим маршрутизатором. Працює на міжмережевому рівні моделі OSI. Після налаштування OSPF аналізуватиме сусідні маршрутизатори та збиратиме всі доступні дані про стан каналу для побудови топологічної карти всіх доступних шляхів у своїй мережі. Потім він збереже інформацію у своїй базі даних топології, також відомої як база даних стану каналу (LSDB). На основі зібраної інформації він обчислить найкращий найкоротший шлях до кожної доступної мережі/мережі, використовуючи алгоритм під назвою Shortest Path First (SFP). FTP — це клієнт-серверний протокол, який використовує два канали передачі даних: командний, управляючий процесом передачі, і транспортний, безпосередньо передає інформацію. Для FTP-протоколу пристрій кінцевого користувача називається локальним хостом, а другий комп'ютер - віддаленим хостом, що відіграє роль сервера.Для роботи протоколу потрібне його правильне налаштування з боку хоста та спеціальний клієнт на локальному хості. Користувачеві потрібно увійти на FTP-сервер. Тут потрібно враховувати, що деякі сервери дозволяють доступ до частини або всіх своїх даних без авторизації. Це називається "анонімним FTP". При цьому файли з сервера можна лише передавати на комп'ютер клієнта. Далі клієнт починає діалог із сервером – запитує дозвіл на зміну файлів на сервері. Використовуючи авторизований FTP-клієнт, можна завантажувати файли із сервера, відвантажувати їх на нього та виконувати інші маніпуляції. FTP-сесії працюють у двох режимах — активному та пасивному: Через те, що клієнт створює всі підключення до пасивного режиму, цей протокол добре підходить для роботи з брандмауерами. Браузери взаємодіють між собою через IP-адреси. Люди, намагаючись підключитися до сайту, використовують його доменне ім'я - наприклад https://selectel.ru/. Domain Name System перетворює домени на IP-адреси, щоб зробити можливим завантаження інтернет-ресурсу через браузер. Кожному пристрою в мережі призначається власна IP-адреса, яка використовується іншими пристроями для підключення до нього, а DNS-сервер дозволяє людям не запам'ятовувати їх. На даний момент існують чотири основні DNS-сервери, які беруть участь у завантаженні веб-сторінок: Розміщуйте домени та записи на наших DNS-серверах. Запуск за кілька хвилин. HTTP є основою інтернету та використовується для завантаження веб-сторінок з використанням гіпертекстових посилань. Належить до прикладних протоколів і працює поверх інших рівнів стека мережевих протоколів. Зазвичай принцип передачі даних по протоколу HTTP включає комп'ютер клієнта (наприклад, ваш ПК), що відправляє запит на сервер, який потім повертає відповідь. Кожен HTTP-запит включає ряд закодованих даних, що містять різну інформацію, в тому числі: Після отримання запиту, сервер повинен дати відповідь. У його стандартну структуру входять код стану, заголовок і тіло відповіді. Код стану HTTP-запиту — це тризначні коди, які зазвичай вказують на успішність його виконання. Вони розбиваються на п'ять основних блоків: *ХХ позначають цифри від 00 до 99. Аналогічно запиту, відповідь має заголовок, який містить різну інформацію - наприклад, мову даних, що надсилаються. У більшості випадків там містяться HTML-дані, які веб-браузер клієнта перетворює на сторінку. При розмові про HTTP не можна не згадати важливий аспект - незахищеність протоколу. При передачі даних все відбувається відкрито, у результаті зловмисник може перехопити дані. Для виключення цієї проблеми було розроблено протокол HTTPS. Детальне порівняння цих протоколів є у нашому блозі. SSH або Secure Shell — це захищений протокол, який використовується як основний засіб підключення до серверів. За допомогою нього при підключенні до сервера користувач входить до вже існуючого облікового запису, де виконуються всі надіслані команди. Це з'єднання реалізовано за схемою «клієнт-сервер». Для створення на віддаленому пристрої повинна бути запущена програма, звана демоном. Демон здійснює підключення до певного мережного порту, перевіряє справжність запитів на підключення та створює відповідне середовище, якщо користувач вводить правильні облікові дані. Також з боку клієнта має бути встановлене відповідне ПЗ. У панелі керування Selectel користувач може завантажити власний SSH-ключ для підвищення надійності та безпеки підключення або згенерувати його на місці. Докладніше — у нашій базі знань. На сьогоднішній день існує понад 7 000 тисяч протоколів. Мережа постійно розвивається, тому деякі протоколи старіють, наприклад, Gopher, FTP, Telnet. Останній розглянемо докладніше. Telnet це старий, але дуже надійний протокол зв'язку. Спочатку він був розроблений як символьно-орієнтований протокол емуляції терміналу, що використовується серед UNIX. Сьогодні Telnet широко використовується для системного адміністрування маршрутизаторів, комутаторів та віддалених серверів, а також для базового текстового зв'язку, в якому графіка не потрібна. У цій статті ми розглянули популярні протоколи взаємодії пристроїв та програм у мережі. У реальному житті на одному тільки вашому ПК використовуються сотні протоколів, оскільки кожен виконує певні завдання. Дізнатися про завдання та принципи роботи протоколу можна у спеціальному документі, який називається RFC-стандартом.Основні протоколи передачі
Які бувають протоколи
Internet Protocol - IP
DNS
SSL/TLS
TCP та UDP
HTTP та HTTPS
HTTP
HTTP/2
HTTP/3
WebSockets
Навіщо розбиратися в протоколах та мережах
Вибір технології для програми
Захист даних
Оптимізація програми під протоколи
Проходження співбесід
Матеріали на тему
Мережеві протоколи: базові поняття та опис найбільш затребуваних правил
Поняття протоколу мережі
OSI - еталонна модель взаємодії пристроїв у мережі
TCP/IP – модель, на якій працює мережа Інтернет
Протоколи транспортного рівня: короткий опис
Інтернет-протокол та IP-адреси
TCP — протокол обміну повідомленнями в Інтернеті
UDP — аналог TCP: опис відмінностей у поведінці протоколу мережі
SCTP – протокол передачі керування потоком
RTP – транспортний протокол реального часу
Протоколи міжмережевого рівня: короткий опис
ICMP — протокол керуючих повідомлень у мережі
OSPF – протокол маршрутизації стану каналу мережі
Протоколи прикладного рівня: короткий опис
FTP — протокол передачі даних у мережі
Опис роботи протоколу в Інтернеті
DNS – довідник мережі Інтернет
Безкоштовний DNS-хостинг від Selectel
HTTP(S) - протокол передачі гіпертексту
SSH – основний засіб підключення до серверів
Застарілі протоколи: Telnet, Gopher, FTP
Висновок