Що таке HTTP сервіс




Що таке HTTP сервіс



Що таке HTTP?

HTTP (або HyperText Transfer Protocol) лежить в основі World Wide Web і призначений для передачі даних між веб-сторінками за допомогою гіпертекстових посилань. Протокол HTTP відноситься до прикладних рівнів і розроблений з урахуванням інших рівнів стека мережевих протоколів передачі даних по мережі. Зазвичай протокол HTTP працює так: клієнт посилає серверу свій запит, а той у свою чергу відправляє повідомлення у відповідь.

Що міститься в запиті HTTP?

  1. тип виконання HTTP
  2. url
  3. метод HTTP
  4. заголовки запитів HTTP
  5. додатковий текст HTTP (опційно)

Розберемо більш детально, як ці процеси функціонують і як за допомогою тіла запиту здійснюється обмін інформації.

Що таке метод HTTP?

HTTP-метод є дією, яке виконується на сервері у відповідь на HTTP-запит. Найчастіше зустрічаються два методи HTTP: "GET" та "POST"; при запиті "GET" передбачається отримати як відповідь будь-яку інформацію (найчастіше у формі веб-сторінки), а при запиті "POST" зазвичай вказується, що клієнт передає Web-серверу дані (такі, як ім'я, прізвище та пароль, зазначені у формі).

Що таке заголовки HTTP-запиту?

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

Приклади заголовків HTTP-запитів із вкладки "Мережа" в Google Chrome:

Що знаходиться в HTTP-запиті?

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

Що міститься в HTTP-відповіді?

HTTP-відповідь є реакцією, одержувану web-клієнтами (в більшості випадків браузерами) з web-сервера в результаті виконання HTTP-запиту. Відповіді надають важливу для користувача інформацію, отриману на основі запитів, зроблених у запиті HTTP.

Звичайний відгук HTTP містить:

  1. код стану HTTP
  2. заголовки HTTP-відповіді
  3. опціональний текст HTTP.

Давайте розділимо їх на частини:

Що таке код стану HTTP?

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

  • 1xx (інформація)
  • 2xx (успішність)
  • 3xx (перенаправлення)
  • 4xx (помилка клієнта)
  • 5xx (помилка сервера)

Під "xx" розуміються різноманітні числа від 00 до 99.

Коди стану, які розпочинаються з "2", вказують на успішність виконання запиту. Наприклад, при запиті веб-сторінки клієнт найчастіше отримує відповідь із кодом стану "200 OK", що свідчить про успішну обробку запиту.

У разі початку відповіді з цифр "4" або "5" це означає, що виникла проблема і веб-сторінку не буде показано. Код стану, що складається з "4", свідчить про помилкову дію з боку клієнта (дуже поширена ситуація, коли друкарська помилка в URL призводить до появи статусу "404 NOT FOUND"). Код стану, що складається з цифр "5", свідчить про несправність на стороні сервера.Статусні коди можуть починатися з "1" і "3", що означають або інформаційну відповідь, або редирект (перенаправлення), отже.

Чи можуть DDoS-атаки запускатись через HTTP?

Слід пам'ятати, що протокол HTTP відноситься до розряду "stateless", тобто кожен HTTP-запит обробляється незалежно від інших. У початковій версії протоколу HTTP кожен запит створював та закривав з'єднання TCP. У нових модифікаціях HTTP (HTTP 1.1 і вище) встановлюється постійне з'єднання, яке дозволяє відправлення безлічі HTTP-запитів по стійкому з'єднанню TCP, що сприяє більш ефективному використанню ресурсів. В умовах DoS- або DDoS-атак для проведення нападу на цільове обладнання застосовується безліч запитів HTTP, що вважається елементом прикладного рівня або атаки сьомого рівня.

Що таке HTTP-протокол Як працює і з чого складається

І інтернет та передача даних у ньому побудовані на протоколах – наборах машиночитаних інструкцій, що дають можливість усім учасникам процесу розуміти одне одного. Основою роботи Інтернету є HTTP, на ньому побудовані мільярди веб-сайтів та додатків. HTTP був розроблений Тімом Бернерс-Лі та його командою в CERN (Європейський центр ядерних досліджень) наприкінці 1980-х та на початку 1990-х років. HTTP продовжує розвиватись, залишаючись критично важливою технологією для сучасного Інтернету.

Що таке HTTP

HTTP (Hypertext Transfer Protocol) — це протокол прикладного рівня, який використовується для передачі даних в Інтернеті. Він визначає правила та формат обміну даними між клієнтом (наприклад, веб-браузером) та сервером. HTTP має клієнт-серверну архітектуру: клієнт (зазвичай браузер) відправляє запити серверу, сервер відповідає на них. HTTP працює на основі запитів та відповідей. Клієнт надсилає запит, що містить метод, URL, заголовки та, іноді, тіло. Сервер відповідає за допомогою статусу відповіді, заголовків та, іноді, тіла. Як запити, і відповіді містять заголовки, які передають метаінформацію про повідомлення. Наприклад, заголовки можуть вказувати тип контенту, методи автентифікації, кешування та інші параметри.

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

Версії HTTP

Існують різні версії протоколу

HTTP/1.0. Перша версія не підтримує постійні з'єднання.

HTTP/1.1. Покращена версія з підтримкою постійних з'єднань та більш ефективного керування кешуванням.

HTTP/2. Більш сучасна версія, що забезпечує більш швидку та ефективну передачу даних за рахунок мультиплексування та стиснення заголовків.

HTTP/3. Остання версія, яка використовує протокол QUICщо забезпечує ще більш швидку та безпечну передачу даних.

Структура HTTP

Структура HTTP-запитів та відповідей включає кілька ключових компонентів. стартовий рядок, заголовки, порожній рядок та тіло (у деяких випадках). Розглянемо кожен із цих елементів докладніше.

Стартовий рядок запиту

Метод. Вказує тип операції (наприклад, GET, POST, PUT, DELETE).

URI (Uniform Resource Identifier). Вказує ресурс, якого виробляється звернення.

Версія протоколу. Вказує версію HTTP (наприклад, HTTP/1.1).

Приклад стартового рядка запиту.

GET /index.html HTTP/1.1

Заголовки запиту

Заголовки містять додаткову інформацію про запит. Вони записуються у форматі "ключ: значення".

Приклади заголовків

Host: www.example.com

User-Agent. Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.124 Safari/537.36

Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,/;q=0.8

Порожній рядок відокремлює заголовки від запиту тіла.

Тіло запиту (необов'язково)

Містить дані, що передаються на сервер, наприклад, під час використання методу POST.

Як працює HTTP

HTTP (Hypertext Transfer Protocol) працює за моделлю клієнт-сервер, де клієнт (наприклад, веб-браузер) відправляє запити серверу, а сервер обробляє ці запити і відправляє назад відповіді.

Встановлення з'єднання

Коли користувач вводить URL у браузері, браузер спочатку виконує DNS-запит, щоб перетворити доменне ім'я (наприклад, www.example.com) у IP-адреса сервера. Клієнт встановлює з'єднання з сервером по IP-адресою через порт, зазвичай порт 80 для HTTP і 443 для HTTPS (HTTP Secure).

Надсилання HTTP-запиту

Браузер формує HTTP-запит, який включає стартовий рядок, заголовки та, можливо, тіло запиту (для методів, таких як POST). Запит надсилається через встановлене TCP-з'єднання.

Обробка запиту сервером

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

Надсилання HTTP-відповіді

Сервер формує HTTP-відповідь, яка включає стартовий рядок з кодом стану, заголовки та тіло відповіді.Відповідь відправляється назад клієнту через встановлене TCP-з'єднання.

Отримання та обробка відповіді клієнтом

Клієнт отримує HTTP-відповідь від сервера. Браузер аналізує відповідь, обробляє заголовки та відображає тіло відповіді (наприклад, HTML-сторінку) користувачеві. Якщо відповідь містить посилання на додаткові ресурси (зображення, стилі, скрипти), браузер надсилає додаткові ресурси HTTP-запити їх отримання.

Закриття з'єднання

Після завершення обміну даними з'єднання може бути закрите. У випадку HTTP/1.1 з'єднання зазвичай залишається відкритим для повторного використання (persistent connection).

Приклад роботи HTTP

GET /index.html HTTP/1.1

Host: www.example.com

User-Agent. Mozilla/5.0

Accept: text/html

HTTP/1.1 200 OK

Date: Sat, 25 May 2024 12.00.00 GMT

Content-Type: text/html

Content-Length: 138

HTTP-методи

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

Основні HTTP-методи

GET

Використовується для запиту даних із сервера.

Немає тіла запиту.

Дані передаються через URL.

Безпечний та ідемпотентний (багаторазові запити не змінюють стан ресурсу).

приклад. `GET /index.html HTTP/1.1`

POST

Використовується для надсилання даних на сервер, часто для створення нового ресурсу.

Має тіло запиту, що містить дані.

Дані можуть бути у форматі JSON, XML, або звичайний текст.

Не є демпотентним (повторні запити можуть змінити стан).

приклад. `POST /submit-form HTTP/1.1`

PUT

Використовується для оновлення існуючого або створення ресурсу, якщо він не існує.

Має тіло запиту, що містить дані.

Ідемпотентний (повторне виконання операції не призводить до зміни стану системи чи ресурсу)

приклад. `PUT /update-resource HTTP/1.1`

DELETE

Використовується для видалення ресурсу із сервера.

Зазвичай немає тіла запиту.

приклад. `DELETE /delete-resource HTTP/1.1`

HEAD

Аналогічний методу GET, але сервер повертає лише заголовки без тіла повідомлення.

Використовується для одержання метаінформації про ресурс.

Безпечний та ідемпотентний.

приклад. `HEAD /index.html HTTP/1.1`

OPTIONS

Використовується для запиту підтримуваних методів для конкретного ресурсу чи сервера загалом.

Сервер повертає заголовок Allowмістить список підтримуваних методів.

Безпечний та ідемпотентний.

приклад. `OPTIONS /resource HTTP/1.1`

PATCH

Використовується для часткового оновлення ресурсу.

Має тіло запиту, що містить дані оновлення.

Не обов'язково йдемо патентний.

приклад. `PATCH /update-resource HTTP/1.1`

Додаткові HTTP-методи

Крім основних методів, існують інші, менш часто використовувані методи.

Використовується для встановлення тунелю зв'язку для проксі-з'єднання.

приклад. `CONNECT www.example.com.443 HTTP/1.1`

Використовується для діагностики, щоб отримати зворотний шлях запиту від клієнта до сервера.

приклад. `TRACE /index.html HTTP/1.1`

Таким чином, HTTP-Методи надають кошти взаємодії з ресурсами на сервері, визначаючи тип операції, що її клієнт хоче виконати.

Чим HTTP відрізняється від HTTPS

HTTPS (Hypertext Transfer Protocol Secure) - це розширення протоколу HTTP, що забезпечує безпечну передачу даних через мережу Інтернет з використанням шифрування за допомогою SSL/TLS. HTTPS забезпечує конфіденційність, цілісність та автентифікацію даних між клієнтом та сервером, захищаючи їх від перехоплення та підробки.

HTTP (Hypertext Transfer Protocol) та HTTPS (Hypertext Transfer Protocol Secure) є протоколами передачі даних в мережі Інтернет, але між ними є важливі відмінності, пов'язані з безпекою та шифруванням даних. Розглянемо основні відмінності між HTTP і HTTPS.

Основні відмінності між HTTP і HTTPS

Шифрування даних

HTTP. Дані передаються у відкритому вигляді, без шифрування. Це означає, що всі дані, що надсилаються між клієнтом та сервером, можуть бути перехоплені та прочитані третіми особами.

HTTPS. Дані передаються у зашифрованому вигляді з використанням SSL/TLS (Secure Sockets Layer / Transport Layer Security). Це забезпечує конфіденційність даних, захищаючи їх від перехоплення та читання.

Аутентифікація

HTTP. Не надає механізмів для автентифікації сервера. Клієнт не може бути впевнений, що він взаємодіє з справжнім сервером.

HTTPS. Використовує цифрові сертифікати для автентифікації сервера. Це дозволяє клієнту впевнитись у автентичності сервера, з яким він встановлює з'єднання.

Цілісність даних

HTTP. Дані можуть бути змінені під час передачі і клієнт не зможе визначити, що вони були змінені.

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

Порт

HTTP. Використовує порт 80 за замовчуванням.

HTTPS. Використовує порт 443 за замовчуванням.

Продуктивність

HTTP. Як правило, трохи швидше, оскільки не вимагає додаткових ресурсів для шифрування та розшифрування даних.

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

SEO та довіра користувачів

HTTP. Сайти, що працюють за протоколом HTTP, можуть сприйматися користувачами та пошуковими системами як менш безпечні.

HTTPS. Пошукові системи, такі як Google, віддають перевагу сайтам, які використовують HTTPSщо може позитивно впливати на ранжування у результатах пошуку. Користувачі також більше довіряють сайтам, які використовують HTTPS.

HTTP: `http.//www.example.com`

HTTPS: `https.//www.example.com`

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

Читайте також

Як працює інтернет та хто може його відключити?

Чи можливо вимкнути від інтернету цілу країну? Хто керує всесвітньою мережею

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

Що таке інтернет, як він влаштований та як працює?

Що таке Інтернет? Що таке інтернет, як він влаштований та як працює

Інтернет — інформаційно-комунікаційна мережа та всесвітня система об'єднаних комп'ютерних мереж для зберігання та передачі інформації. Якщо ви читаєте цю статтю, ви вже в ньому. Але як саме він працює?

Що таке хостинг і як вибрати найкращий для сайту

Як вибрати найкращий хостинг в 2023 році? Що це таке хостинг, де його знайти та як його вибрати

Що таке хостинг? Все просто – це послуга інформаційного характеру, коли клієнту від віддаленого сервера видається певний обчислювальний ресурс. Але практично під цим терміном мається на увазі місце для вашого сайту. Розповідаємо, де його знайти.

Що таке IP адреса: як виглядає, з чого складається, навіщо потрібен

Що таке IP-адреса Пояснюємо простими словами

У цій статті ми докладно розповімо про IP-адреси, завдання, які він виконує, принцип його роботи

IPTV: що це таке, як підключити і як воно працює

Що таке IPTV У чому різниця від цифрового та інших типів телебачення

Розповідаємо про IPTV і про те, як він працює. Виділимо основні його відмінності від інших способів доставки телесигналу

Простою мовою про HTTP

До вашої уваги пропонується опис основних аспектів протоколу HTTP — мережевого протоколу, який з початку 90-х і до цього дня дозволяє вашому браузеру завантажувати веб-сторінки. Ця стаття написана для тих, хто тільки починає працювати з комп'ютерними мережами та займатися розробкою мережевих додатків, і кому поки що складно самостійно читати офіційні специфікації.

HTTP — широко поширений протокол передачі даних, спочатку призначений передачі гіпертекстових документів (тобто документів, які можуть містити посилання, що дозволяють організувати перехід до інших документів).

Абревіатура HTTP розшифровується як HyperText Transfer Protocol, «Протокол передачі гіпертексту». Відповідно до специфікації OSI, HTTP є протоколом прикладного (верхнього, 7-го) рівня.Актуальна зараз версія протоколу, HTTP 1.1, описана в специфікації RFC 2616.

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

Завдання, яке традиційно вирішується за допомогою протоколу HTTP — обмін даними між додатком користувача, що здійснює доступ до веб-ресурсів (зазвичай це веб-браузер) і веб-сервером. На даний момент завдяки протоколу HTTP забезпечується робота Всесвітньої павутини.

Також HTTP часто використовується як протокол передачі інформації для інших протоколів прикладного рівня, таких як SOAP, XML-RPC та WebDAV. У такому разі кажуть, що протокол HTTP використовується як транспорт.

API багатьох програмних продуктів також передбачає використання HTTP для передачі даних - самі дані при цьому можуть мати будь-який формат, наприклад, XML або JSON.

Як правило, передача даних за протоколом HTTP здійснюється через TCP/IP-з'єднання. Серверне програмне забезпечення при цьому зазвичай використовує TCP-порт 80 (і, якщо порт не вказано явно, то зазвичай клієнтське програмне забезпечення за умовчанням використовує саме 80-й порт для HTTP-з'єднань, що відкриваються), хоча може використовувати і будь-який інший.

Як надіслати HTTP-запит?

Найпростіший спосіб розібратися з протоколом HTTP – це спробувати звернутися до якогось веб-ресурсу вручну.Уявіть, що ви браузер, і у вас є користувач, який хоче прочитати статті Анатолія Алізара.

Припустимо, що він ввів в адресному рядку наступне:

Відповідно, вам, як веб-браузеру, тепер необхідно підключитися до веб-сервера за адресою alizar.habrahabr.ru.

Для цього ви можете скористатися будь-яким відповідним утилітом командного рядка. Наприклад, telnet:

telnet alizar.habrahabr.ru 80

Відразу уточню, що якщо ви раптом передумаєте, то натисніть Ctrl + "]", а потім введення - це дозволить вам закрити HTTP-з'єднання. Крім telnet, можете спробувати nc (або ncat) — за смаком.

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

Для того, щоб сформувати HTTP-запит, необхідно скласти стартовий рядок, а також задати принаймні один заголовок - це заголовок Host, який є обов'язковим і має бути присутнім у кожному запиті. Справа в тому, що перетворення доменного імені в IP-адресу здійснюється на стороні клієнта, і, відповідно, коли ви відкриваєте TCP-з'єднання, то віддалений сервер не має жодної інформації про те, яка саме адреса використовувалася для з'єднання: це могло бути, наприклад , адреса alizar.habrahabr.ru, habrahabr.ru або m.habrahabr.ru - і у всіх цих випадках відповідь може відрізнятися. Однак фактично мережне з'єднання у всіх випадках відкривається з вузлом 212.24.43.44, і навіть якщо спочатку при відкритті з'єднання була задана не ця IP-адреса, а якесь доменне ім'я, то сервер про це ніяк не інформується — і саме тому ця адреса необхідна передати у заголовку Host.

Стартовий (початковий) рядок запиту для HTTP 1.1 складається за такою схемою:

Наприклад (такий стартовий рядок може вказувати на те, що запитується головна сторінка сайту):

Метод (В англомовній тематичній літературі використовується слово метод, а іноді слово verb — «дієслово») є послідовністю з будь-яких символів, крім керуючих і роздільників, і визначає операцію, яку потрібно здійснити із зазначеним ресурсом. Специфікація HTTP 1.1 не обмежує кількість різних методів, які можуть бути використані, проте з метою відповідності загальним стандартам та збереження сумісності з максимально широким спектром програмного забезпечення зазвичай використовуються лише деякі, найбільш стандартні методи, зміст яких однозначно розкритий у специфікації протоколу.

URI (Uniform Resource Identifier, уніфікований ідентифікатор ресурсу) - шлях до конкретного ресурсу (наприклад, документа), над яким необхідно здійснити операцію (наприклад, у разі використання методу GET мається на увазі отримання ресурсу). Деякі запити можуть не ставитись до будь-якого ресурсу, в цьому випадку замість URI в стартовий рядок може бути додана зірочка (астериск, символ «*»). Наприклад, це може бути запит, який стосується самого веб-сервера, а не будь-якого конкретного ресурсу. У цьому випадку стартовий рядок може виглядати так:

Версія визначає, відповідно до якої версії стандарту HTTP складено запит. Вказується як два числа, розділені крапкою (наприклад 1.1).

Для того, щоб звернутися до веб-сторінки за певною адресою (у даному випадку шлях до ресурсу – це «/»), нам слід надіслати наступний запит:

GET/HTTP/1.1
Host: alizar.habrahabr.ru

При цьому враховуйте, що для перенесення рядка слід використовувати символ повернення каретки (Carriage Return), за яким слідує символ перекладу (Line Feed). Після оголошення останнього заголовка послідовність символів для перенесення рядка додається двічі.

Втім, у специфікації HTTP рекомендується програмувати HTTP-сервер таким чином, щоб при обробці запитів як міжрядковий роздільник сприймався символ LF, а попередній символ CR, за наявності такого, ігнорувався. Відповідно, на практиці більша частина серверів коректно обробить і такий запит, де заголовки відокремлені символом LF, і він двічі доданий після оголошення останнього заголовка.

Якщо ви хочете надіслати запит у точній відповідності до специфікації, можете скористатися керуючими послідовностями \r і \n:

echo -en "GET / HTTP/1.1\r\nHost: alizar.habrahabr.ru\r\n\r\n" | ncat alizar.habrahabr.ru 80

Як прочитати відповідь?

Стартовий рядок відповіді має таку структуру:

Версія протоколу тут задається так само, як у запиті.

Код стану (Status Code) - Три цифри (перша з яких вказує на клас стану), які визначають результат здійснення запиту. Наприклад, якщо був використаний метод GET, і сервер надає ресурс із зазначеним ідентифікатором, такий стан задається за допомогою коду 200. Якщо сервер повідомляє про те, що такого ресурсу не існує — 404. Якщо сервер повідомляє про те, що не може надати доступ до даного ресурсу через відсутність необхідних привілеїв у клієнта, то використовується код 403.Специфікація HTTP 1.1 визначає 40 різних кодів HTTP, а також допускається розширення протоколу та використання додаткових кодів станів.

Пояснення до коду стану (Reason Phrase) - текстове (але не включає символи CR і LF) Пояснення до коду відповіді, призначене для спрощення читання відповіді людиною. Пояснення може не враховуватися програмним забезпеченням клієнта, а також може відрізнятися від стандартного в деяких реалізаціях серверного ПЗ.

Після стартового рядка йдуть заголовки, а також тіло відповіді. Наприклад:

HTTP/1.1 200 OK Server: nginx/1.2.1 Дата: Sat, 08 Mar 2014 22:53:46 GMT Content-Type: application/octet-stream Content-Length: 7 Last-Modified: Sat, 08 Mar 2014 53:30 GMT Connection: keep-alive Accept-Ranges: bytes Wisdom

Тіло відповіді слідує через два перенесення рядка після останнього заголовка. Для визначення закінчення тіла відповіді використовується значення заголовка Content-Length (в даному випадку відповідь містить 7 вісімкових байтів: слово "Wisdom" та символ перенесення рядка).

Але по тому запиту, який ми склали раніше, веб-сервер поверне відповідь не з кодом 200, а з кодом 302. Таким чином він повідомляє клієнту про те, що звертатися до даного ресурсу зараз потрібно за іншою адресою.

HTTP/1.1 302 Moved Temporarily Server: nginx Дата: Sat, 08 Mar 2014 22:29:53 GMT Content-Type: text/html Content-Length: 154 Connection: keep-alive Keep-Alive: timeout=25 Location: http: //habrahabr.ru/users/alizar/ 302 Found

302 Found


nginx

У заголовку Location передано нову адресу. Тепер URI (ідентифікатор ресурсу) змінився на /users/alizar/, а звертатися потрібно цього разу до сервера за адресою habrahabr.ru (втім, в даному випадку це той самий сервер), і його вказувати в заголовку Host.

GET /users/alizar/ HTTP/1.1
Host: habrahabr.ru

У відповідь на запит веб-сервер Хабрахабра вже видасть відповідь з кодом 200 і досить великий документ у форматі HTML.

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

А що з безпекою?

Сам собою протокол HTTP передбачає використання шифрування передачі інформації. Тим не менш, для HTTP є поширене розширення, яке реалізує упаковку даних, що передаються в криптографічний протокол SSL або TLS.

Назва цього розширення - HTTPS (HyperText Transfer Protocol Secure). Для HTTPS-з'єднань зазвичай використовується TCP-порт 443. HTTPS широко використовується для захисту інформації від перехоплення, а також, як правило, забезпечує захист від атак виду man-in-the-middle — якщо сертифікат перевіряється на клієнті, і приватний ключ сертифіката не був скомпрометований, користувач не підтверджував використання непідписаного сертифіката, і на комп'ютері користувача не були впроваджені сертифікати центру сертифікації зловмисника.

На даний момент HTTPS підтримується всіма популярними веб-браузерами.

А чи є додаткові можливості?

Протокол HTTP передбачає досить багато можливостей для розширення. Зокрема специфікація HTTP 1.1 передбачає можливість використання заголовка Upgrade для перемикання на обмін даними по іншому протоколу. Запит із таким заголовком надсилається клієнтом.Якщо серверу потрібно зробити перехід на обмін даними за іншим протоколом, він може повернути клієнту відповідь зі статусом «426 Upgrade Required», і у разі клієнт може надіслати новий запит, вже із заголовком Upgrade.

Така можливість використовується, зокрема, для організації обміну даними по протоколу WebSocket (протокол, описаний у специфікації RFC 6455, що дозволяє обом сторонам передавати дані в потрібний момент, без надсилання додаткових HTTP-запитів): стандартне «рукостискання» (handshake) зводиться до відправки HTTP-запиту із заголовком Upgrade, що має значення "websocket", на який сервер повертає відповідь зі станом "101 Switching Protocols", і далі будь-яка сторона може почати передавати дані вже за протоколом WebSocket.

Щось ще, до речі, використовують?

На даний момент існують інші протоколи, призначені для передачі веб-вмісту. Зокрема, протокол SPDY (вимовляється як англійське слово speedy, не є абревіатурою) є модифікацією протоколу HTTP, мета якої – зменшити затримки під час завантаження веб-сторінок, а також забезпечити додаткову безпеку.

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

Опублікована в листопаді 2012 року чернетка специфікації протоколу HTTP 2.0 (наступна версія протоколу HTTP після версії 1.1, остаточна специфікація для якої була опублікована в 1999) базується на специфікації протоколу SPDY.

Багато архітектурних рішень, що використовуються в протоколі SPDY, а також в інших запропонованих реалізаціях, які робоча група httpbis розглядала в ході підготовки чернетки специфікації HTTP 2.0, вже раніше були отримані в ході розробки протоколу HTTP-NG, проте роботи над протоколом HTTP-NG були припинені 1998 року.

На даний момент підтримка протоколу SPDY є у браузерах Firefox, Chromium/Chrome, Opera, Internet Exporer та Amazon Silk.

І що все?

Загалом, так. Можна було б описати конкретні методи та заголовки, але фактично ці знання потрібні скоріше в тому випадку, якщо ви пишете щось конкретне (наприклад, веб-сервер або якесь клієнтське програмне забезпечення, яке зв'язується із серверами через HTTP), та для базового розуміння принципу роботи протоколу не потрібні. До того ж, все це ви можете дуже легко знайти через Google - ця інформація є і в специфікаціях, і у Вікіпедії, і багато де ще.

Втім, якщо ви знаєте англійську і хочете заглибитися у вивчення не тільки самого HTTP, але й для передачі пакетів TCP/IP, то рекомендую прочитати цю статтю.

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

Удачі та плідного навчання!

Схожі статті

  • Що таке якісний сервіс
  • Що таке передплата сервісів
  • Що таке Ципру
  • Що таке режим Atti для дронів Drones Cameras
  • Що таке Адамове яблуко у чоловіків
  • Що таке добори на міжкімнатні
  • Що таке дека на газонокосарці
  • Що таке код помилки 601
  • Недавні статті

  • Як бродить зернова брага
  • Що робити якщо не засмагаєш на сонці чому засмага погано лягає на шкіру або перестає прилипати
  • Як швидко зняти гель лак без апарату
  • Як робиться Каті голови
  • Яка гребінець краще для об'єму
  • Чим роблять м'яку покрівлю
  • Чи можна залишати крем для обличчя на ніч
  • Де знаходиться датчик селектора
  • географія нашої діяльності
    вулиця Драгоманова, 27
    вул. Курчатова 1Б
    вул. Міцкевича 130
    вул. Лабунського, 1
    вул. Макарова-Пржевальського
    вул. Толстого 10
    вул. Грушевського 28
    вул. Перший промінь (Черняхівського)
    напишіть нам

    сообщение успешно отправлено
    x