протокол http

HTTP / 1.0 використовується також для комунікацій між різними призначеними для користувача броузерами (клієнтами) і шлюзами, що дають гіпермедіа доступ до існуючих Internet протоколів, таким як SMTP, NNTP, FTP, Gopher, WAIS. HTTP / 1.0 розроблений так, щоб дозволяти таким шлюзів через proxy сервери, без будь-якої втрати передавати дані за допомогою згаданих протоколів більш ранніх версій.

HTTP ґрунтується на парадигмі запитів / відповідей. Запитуюча програма (клієнт) встановлює зв'язок з обслуговуючою програмою-одержувачем (сервер) і надсилає запит серверу в наступній формі:

  • метод запиту,
  • URL,
  • версія протоколу,
  • MIME-подібне повідомлення, що містить керуючу інформацію запиту (параметри), інформацію про клієнта і, можливо, тіло повідомлення.

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

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

В Internet комунікації звичайно ґрунтуються на TCP / IP протоколах. Для WWW номер порту за замовчуванням - TCP: 80, але також можуть бути використані і інші номери портів - це не виключає можливості використовувати HTTP як протокол верхнього рівня.

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

Accept - тип даних, які може прийняти браузер (в кодуванні MIME).

Accept-Language - бажана мова, на якому браузер хоче прийняти дані. User-Agent - тип програми, яка відіслала запит.

Cookie - кукіси (дані, які були збережені сервером на локальному диску клієнта, при відвідуванні даного хоста минулого разу).

Набір параметрів запиту не фіксований. Крім наведених, можуть бути присутні й інші параметри.

Найбільш цікаві такі параметри, як referer і cookie. Ці параметри використовуються, в основному, для ідентифікації користувача сервером.

GET ?<параметр 1>=<значение 1><параметр 2>=<значение 2>...

Такий тип передачі даних серверу зручний, проте має обмеження на обсяг. Занадто великі масиви даних передавати через URL не можна. Для таких цілей існує інший тип зпросов: запит POST. Запит POST дуже схожий на GET. з тією лише різницею, що дані в запиті POST передаються окремо від самого заголовка запиту:

Тіло запиту має відділятися від заголовка порожнім рядком. Якщо сервер зустрічає порожній рядок в POST запиті, то все що йде далі він вважає тілом запиту (переданими даними). Відзначимо наступне: формат даних в тілі POST запиту довільний. Незважаючи на те, що найчастіше застосовується CGI формат, він не обов'язковий. Крім того, POST запит не вимагає наявності тіла запиту, і може передавати дані також і через URL.

Крім CGI формату, іноді для передачі великих обсягів інформації (наприклад файлів) застосовують т.зв. multipart формат (формат переданих даних визначається параметром Content-Type):

Схожі статті