Принципи роботи http

В середині 90-х років дуже популярною стала WWW (World Wide Web) - «Всесвітня павутина». Це набір протоколів і програм для Інтернету, що представляють інформацію в гіпертекстовому форматі. Знаменитий браузер Mosaic, створений в Національному центрі по застосуванню супер-ЕОМ (National Center for Supercomputer Applications, NCSA), був першим графічним Web-браузером і сприяв популяризації WWW. Web розроблена в 1989 році в Європейській лабораторії фізики частинок (European Laboratory for Particle Physics, CERN) Тімоті Бернерс-Лі (Timothy Berners-Lee). В даний час усіма стандартами, що мають відношення до Web, розповідає Консорціум World Wide Web (W3C).

Для упаковки і передачі даних в Web застосовуються протоколи MIME (Multipurpose Internet Mail Extensions) і TCP / IP (Transmission Control Protocol / Internet Protocol), а також і інші, наприклад FTP і Telnet. Спеціально для Web розроблені покажчики URL (Uniform Resource Locator), протокол HTTP (Hypertext transfer Protocol), мова HTML (Hypertext Markup Language) і інтерфейс CGI (Common Gateway Interface).

Уніфіковані покажчики ресурсів (URL)

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

Покажчик URL складається з наступних частин:

де <схема> - це назва схеми (використовуваний протокол, наприклад http, ftp і т. Д.), А <специальное_имя> - ім'я в форматі, що залежить від використовуваної схеми.

Багато URL мають такий вигляд:

<пользователь> - це ім'я користувача, якщо воно необхідне (наприклад, для FTP з не анонімної реєстрацією);

<пароль> - пароль цього імені користувача;

- номер IP-порту для з'єднання (якщо він не вказаний, використовується стандартне значення для даного протоколу);

<путь> - пов'язані з URL дані, часто це вказівка ​​підкаталогу і імені файлу.

Для Web-сторінки URL виглядає, наприклад, так:

Фрагмент http вказує, що URL використовує протокол HTTP;

www.fictionalcorp.com - ім'я сервера, до якого бажає підключитися користувач;

/corpinfo/sales.html - підкаталог і ім'я HTML-файлу, що зберігає Web-сторінки.

Нижче перераховані деякі популярні схеми:

http Протокол HTTP

https Протокол HTTP, зашифрований за допомогою SSL (Secure Socket Layer)

ftp Протокол FTP

news Новини Usenet

file Імена файлів певного хоста

telnet Інтерактивний сеанс Telnet

Більш короткий URL - http: //www.fictionalcorp.com- вказує на "основну сторінку» цього сервера. Якщо явно не задано ім'я файлу, то HTTP-сервери використовують значення за замовчуванням (часто це default.html або index.html). наведений URL можна перетворити до більш явного виду: http://www.fictiorialcorp.com/default.html.

Для протоколу FTP застосовується подібний синтаксис. Звернення до файлу bar.txt підкаталогу / foo FТР-сервера ftp.fictionalcorp.com на мові URL виглядає наступним чином:

ftp://ftp.fictionalcorp.com/foo/bar.txt

Частковий або відносний URL - той, в якому не вказано протокол, хост, порт або шлях, а лише відносне ім'я ресурсу. Наприклад, якщо Web-сторінка http://www.fictionalcorp.com/piiblic/foo/bar.html посилається на bletch.html, це не що інше, як відносна форма від http://www.fictionalcorp.com/public/ foo / bletch.html.

Замість підкаталогу і імені файлу URL може містити іншу інформацію про ресурс. Так вигладить URL для протоколу NNTP:

Взагалі кажучи, в URL слід використовувати тільки алфавітно-цифрові символи, так як більшість спеціальних символів зарезервовані або їх пряме використання небезпечно. До перших відносяться: «;», «/», «?», «:», «@», «=», «». Ненадійні символи - «<», «>»,« »», «#», «%», «», «|», «\», «», «-», «[», «]», « '».

Якщо ім'я ресурсу містить зарезервований символ або символ, що не належить US-ASCII, то перед використанням в URL ім'я треба закодувати. При кодуванні символ замінюється трьома новими - знаком відсотка (%) і двома шестнадцатерічнимі цифрами, що представляють код замінного символу.

Протокол HTTP - основний і досить простий спосіб передачі даних між Web-сервером і клієнтом. До появи Web і HTTP для передачі файлів в Інтернеті в якості протоколу введення / виведення найчастіше застосовували FTP.

HTTP - це компактний, швидкий протокол введення / виведення, що працює з URL і призначений для середовищ гіпертекст / гіпермедіа. На відміну від FTP, це протокол без станів і має лише кілька команд (методів). Завдяки використанню MIME, HTTP пристосовується до багатьох форматів даних та різних завдань введення / виведення.

HTTP - клієнт-серверний протокол, який реалізує модель запит / відповідь. HTTP-клієнт, або призначений для користувача агент (зазвичай це Web-браузер), підключається до HTTP-сервера за допомогою URL і запитує ресурс, наприклад HTML-документ.

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

У сеансі зв'язку, як правило, беруть участь HTTP-клієнти (Web-браузери) і HTTP-сервери (Web-сервери) і рідше - проксі-сервери. Останні поступаються в якості сервера по відношенню до клієнта і в якості клієнта по відношенню до іншого сервера, передаючи вихідний запит клієнта через шлюз (наприклад, міжмережевий екран між внутрішнім Інтернетом компанії та Інтернетом).

Традиційно HTTP-клієнти і сервери спілкуються через 80-й порт TCP / IP, за замовчуванням зарезервований для HTTP. Однак можуть використовуватися й інші порти, явно зазначені в URL. На додаток зазначу, що HTTP не передбачає застосування саме TCP / IP і відмінно функціонує з іншими протоколами гарантованої доставки.

Web-браузер часто обробляє Web-сторінки, що складаються з багатьох об'єктів, наприклад, самого HTML-документа і декількох зображень (GIF, JPEG, PNG та ін.). Більшість HTTP-клієнтів для читання початкового HTML-документа створюють тільки один потік (з одним підключенням до сервера), а потім ще кілька потоків (кожен з окремим підключенням до сервера) для отримання інших необхідних файлів. З'єднання встановлюється за запитом клієнта і розривається після відповіді сервера.

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

GET /index.html HTTP / 1.0

використовується метод GET, яким за допомогою версії 1.0 HTTP запитується документ index.html. Методи HTTP більш детально розглядаються нижче.

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

User-Agent: Mozilla / 4.05 (WinNT; 1)

Accept: image / gif, image / x-xbitmap, image / jpeg, image / pjpeg, * / *

Завершується заголовок символом нового рядка.

3. Надіславши запит і заголовки, клієнт може відправити і додаткові дані. Ці дані використовуються головним чином тими CGI-програмами, які застосовують метод POST. Клієнти (наприклад, Netscape Navigator-Gold), також можуть використовувати їх для приміщення відредагованою сторінки назад на Web-сервер.

Сервер відповідає на запит клієнта наступним чином:

1. Перша частина відповіді сервера - рядок стану, що містить три поля: версію HTTP, код стану та його опис. Поле версії містить номер версії HTTP, якій даний сервер користується для передачі відповіді.

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

говорить про те, що сервер для відповіді використовує версію HTTP 1.0. Код стану 200 означає, що запит клієнта був успішним, і викликані дані будуть передані після заголовків.

2. Після рядка стану сервер передає клієнту інформацію заголовка, що містить дані про самому сервері і викликаній документі. Нижче наведено приклад заголовка:

Завершує заголовок порожній рядок.

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

У HTTP 1.0 за передачею сервером затребуваних даних слід роз'єднання з клієнтом, і транзакція вважається завершеною, якщо не переданий заголовок Connection: Keep Alive. У HTTP 1.1 сервер за замовчуванням не розриває з'єднання, і клієнт може посилати інші запити. Оскільки в багато документи вбудовані інші документи - зображення, кадри, аплети і т.д. це дозволяє заощадити час і витрати клієнта, якому в іншому випадку довелося б для отримання всього однієї сторінки багаторазово з'єднуватися з одним і тим же сервером. Таким чином, в HTTP 1.1 транзакція може циклічно повторюватися, поки клієнт або сервер не закриє з'єднання явно.

HTTP не зберігає інформацію по транзакціях, тому в наступної транзакції доводиться починати все заново. Перевага такого правила організації взаємодії полягає в тому, що HTTP сервер може обслужити в заданий проміжок часу набагато більше клієнтів, бо усуваються додаткові витрати на відстеження сеансів від одного з'єднання до іншого. Є і недолік: для збереження інформації щодо транзакцій більш складні CGI-програми повинні користуватися прихованими полями введення або зовнішніми засобами, наприклад "ключиками" (cookies) Netscape.

Схожі статті