Loading AI tools
З Вікіпедії, вільної енциклопедії
HTTP — протокол передачі даних, що використовується в комп'ютерних мережах. Назва скорочена від Hypertext Transfer Protocol, протокол передачі гіпертекстових документів
HTTP належить до протоколів моделі OSI 7-го прикладного рівня.
Основним призначенням протоколу HTTP є передача вебсторінок (текстових файлів з розміткою HTML, зображень та застосунків), проте за його допомогою успішно передаються й інші файли (в цьому плані HTTP складає конкуренцію складнішому FTP).
HTTP припускає, що клієнтська програма — веббраузер — здатна відображати гіпертекстові вебсторінки та файли інших типів у зручній для користувача формі. Для правильного відображення HTTP дозволяє клієнтові дізнатися мову та кодування символів вебсторінки, запитати версію сторінки з потрібною мовою чи в потрібному кодуванні, використовуючи позначення зі стандарту MIME.
Якщо в URL зі схемою http:// не вказаний порт, то за замовчуванням береться 80[1], (для схеми https — 443[2]).
HTTP — протокол прикладного рівня, схожими на нього є FTP та SMTP. Обмін повідомленнями йде за звичайною схемою «запит-відповідь». Для ідентифікації ресурсів HTTP використовує глобальні URI. На відміну від багатьох інших протоколів, HTTP не зберігає свого стану. Це означає відсутність збереження проміжного стану між парами «запит-відповідь». Компоненти, що використовують HTTP, можуть самостійно здійснювати збереження інформації про стан, пов'язаний з останніми запитами та відповідями. Браузер, котрий посилає запити, може відстежувати затримки відповідей. Сервер може зберігати IP-адреси та заголовки запитів останніх клієнтів. Проте, згідно з протоколом, клієнт та сервер не мають бути обізнаними з попередніми запитами та відповідями, у протоколі не передбачена внутрішня підтримка стану й він не ставить таких вимог до клієнта та сервера.
Кожен запит/відповідь складається з трьох частин:
Обов'язковим мінімумом запиту є стартовий рядок. Починаючи з HTTP/1.1 обов'язковим став заголовок Host: (щоб розрізнити кілька доменів, які мають одну й ту ж IP-адресу).
Стартові рядки розрізняються для запиту й відповіді. Рядок запиту виглядає так:
‹Метод› ‹URI› HTTP/‹Версія›
де ‹Метод› можливо:
Переважно використовуються методи GET і POST.
Перший рядок відповіді має такий вигляд:
HTTP/‹Версія› ‹Код статусу› ‹Опис статусу›
Коди статусу:
Найбільш поширені статуси:
Заголовки HTTP — це рядки, кожен з яких складається з імені параметра, за яким слідує двокрапка і його значення. Вони несуть інформацію для браузера або для серверних програм (таких, як CGI-застосунки). Між заголовками і тілом обов'язково повинен бути порожній рядок.
GET /wiki/HTTP HTTP/1.1 Host: uk.wikipedia.org User-Agent: firefox/5.0 (Linux; Debian 5.0.8; en-US; rv:1.8.1.7) Gecko/20070914 Firefox/2.0.0.7 Connection: close
HTTP/1.1 200 OK Server: Apache Content-Language: uk Content-Type: text/html; charset=utf-8 Content-Length: 1234 (пустий рядок) (далі йде текст html-сторінки)
Важливо: HTTP-заголовок відокремлюється від повідомлення пустою стрічкою (послідовністю CRLF CRLF
). Довжина повідомлення в байтах вказується в параметрі Content-Length
.
В першій стрічці відповіді вказується протокол, код відповіді.
Цікавою особливістю мережевих програм є те, що найкраща швидкість роботи досягається, якщо не використовувати мережу. Тому її використання намагаються уникнути запам'ятовуванням попередніх запитів (вебкешуванням), зменшенням частоти запитів або взагалі відсутністю необхідності деяких запитів за допомогою переміщення обробника даних ближче до даних, які він обробляє (див. мобільний код[en])[3].
Цей розділ потребує доповнення. (січень 2017) |
У лютому 2015 комітет IETF (Internet Engineering Task Force), що займається розвитком протоколів і архітектури Інтернет, надав специфікації HTTP/2.0 статус «пропозиції стандарту»[4], а також приступив до формування окремих RFC для протоколу HTTP/2.0 і формату стиснення заголовків HPACK.
Основним завданням створення HTTP/2.0 є підвищення ефективності використання мережевих ресурсів і зниження затримок при з'єднанні і обміні даними між клієнтом і сервером в сучасних умовах, при яких для завантаження сайту потрібно відправити низку окремих запитів (у середньому приблизно 100), пов'язаних з отриманням CSS, файлів JavaScript і картинок. Протокол HTTP/1.1, в силу блокувань при конвеєрній передачі даних і високих накладних витрат на віддачу ресурсів невеликого розміру, не може забезпечити належну ефективність і змушує встановлювати кілька одночасних TCP-з'єднань до сервера. В основу HTTP/2.0 покладений протокол SPDY, розроблений компанією Google — він дозволяє прискорити завантаження сайтів на 15-50 %.
Основні особливості (PDF) HTTP/2.0:
Google Chrome і Firefox, вони вже багато років підтримують цю технологію, і Apple додала підтримку в браузер Safari в 2014 році. В Internet Explorer 11[5][6][7] підтримка реалізована лише для Windows 10.
Великі мобільні браузери, в тому числі Android-браузер, Chrome для Android і iOS, а також Safari в iOS 8 і вище підтримують HTTP/2 для мобільного доступу до Інтернету.
Seamless Wikipedia browsing. On steroids.
Every time you click a link to Wikipedia, Wiktionary or Wikiquote in your browser's search results, it will show the modern Wikiwand interface.
Wikiwand extension is a five stars, simple, with minimum permission required to keep your browsing private, safe and transparent.