0% нашли этот документ полезным (0 голосов)
4 просмотров17 страниц

02 HTTP

Документ описывает основы протокола HTTP, включая его версии, структуру сообщений и методы запросов. Он также освещает взаимодействие клиентов и серверов, а также возможности, такие как HTTP-куки и аутентификация. Приведены примеры запросов и ответов, а также использование telnet для взаимодействия с HTTP-серверами.

Загружено:

leto.chan123
Авторское право
© All Rights Reserved
Мы серьезно относимся к защите прав на контент. Если вы подозреваете, что это ваш контент, заявите об этом здесь.
Доступные форматы
Скачать в формате PDF, TXT или читать онлайн в Scribd
0% нашли этот документ полезным (0 голосов)
4 просмотров17 страниц

02 HTTP

Документ описывает основы протокола HTTP, включая его версии, структуру сообщений и методы запросов. Он также освещает взаимодействие клиентов и серверов, а также возможности, такие как HTTP-куки и аутентификация. Приведены примеры запросов и ответов, а также использование telnet для взаимодействия с HTTP-серверами.

Загружено:

leto.chan123
Авторское право
© All Rights Reserved
Мы серьезно относимся к защите прав на контент. Если вы подозреваете, что это ваш контент, заявите об этом здесь.
Доступные форматы
Скачать в формате PDF, TXT или читать онлайн в Scribd

Основы протокола HTTP

HTTP (Hypertext Transfer Protocol) в стеке протоколов


TCP/IP
Application BGP · DHCP · DNS · FTP · HTTP · IMAP · IRC · LDAP · MGCP · NNTP · NTP · POP
· RIP · RPC · RTP · SIP · SMTP · SNMP · SSH · Telnet · TLS/SSL · XMPP

Transport TCP · UDP · DCCP · SCTP · RSVP · ECN


Internet IP (IPv4, IPv6) · ICMP · ICMPv6 · IGMP · IPsec ·
Link ARP/InARP · NDP · OSPF · Tunnels (L2TP) · PPP · Media Access Control
(Ethernet, DSL, ISDN, FDDI)
Версии протокола HTTP

• HTTP/0.9 – 1990-1992 г.
• HTTP/1.0 – 1996 г.
• HTTP/1.1 – 1999 г. – текущая версия

• HTTP-NG (HTTP Next Generation) – предложен в 1998 году, но


развития не получил
Программное обеспечение

• Исходные серверы – хранение ресурсов, обработка запросов


• Клиенты – потребители услуг (браузеры, менеджеры закачек, а
также роботы, краулеры)
• Прокси, кэши – транспортные функции, кэширование,
распределение нагрузки.
Сообщения протокола
• Запросы
• Ответы
Структура сообщений протокола
• Стартовая строка (англ. Starting line) — определяет тип сообщения;
• Заголовки (англ. Headers) — характеризуют тело сообщения, содержат
параметры передачи и прочие сведения;
• Тело сообщения (англ. Message Body) — непосредственно данные
сообщения. Обязательно должно отделяться от заголовков пустой
строкой.
Стартовая строка запроса

GET URI — для версии протокола 0.9.


Метод URI HTTP/Версия — для остальных версий.
Методы запроса

Метод URI HTTP/Версия


• GET – запрос содержимого ресурса
• POST – передача данных ресурсу
• HEAD – получение только заголовков ответа
• OPTIONS – определение возможностей сервера
• PUT – загрузка содержимого запроса на указанный URI
• DELETE – удаление ресурса
Пример

• Запрос GET
GET /wiki/страница HTTP/1.1
Host: [Link]
User-Agent: Mozilla/5.0 (X11; U; Linux i686; ru;
rv:1.9b5) Gecko/2008050509 Firefox/3.0b5
Accept: text/html
Connection: close
Стартовая строка ответа

HTTP/Версия КодСостояния Пояснение


Статусы ответа

• 1xx Informational (Информационный) – информируют о процессе


передачи.
• 2xx Success (Успешно) – успешное получение и обработка
запроса.
• 3xx Redirection (Перенаправление) – для выполнения запроса
нужно обратиться по другому адресу.
• 4xx Client Error (Ошибка клиента) – неверный запрос
• 5xx Server Error (Ошибка сервера) – неудачное выполнение
операции на сервере
Пример

• Ответ
HTTP/1.1 200 OK
Date: Wed, 11 Feb 2009 11:20:59 GMT
Server: Apache
X-Powered-By: PHP/5.2.4-2ubuntu5wm1
Last-Modified: Wed, 11 Feb 2009 11:20:59 GMT
Content-Language: ru
Content-Type: text/html; charset=utf-8
Content-Length: 1234
Connection: close

(далее следует запрошенная страница в HTML)


Пример

• Запрос POST
POST /login HTTP/1.1
Host: [Link]
Content-Type: application/x-www-form-urlencoded
Content-Length: 49

email=test%[Link]&password=secure&login=login
HTTP cookie

• Запрос браузера 1
GET /[Link] HTTP/1.1
Host: [Link]
• Заголовки ответа сервера
HTTP/1.1 200 OK
Content-type: text/html
Set-Cookie: name=value; expires=date; path=/;
domain=.[Link].; secure; httponly
• Запрос браузера 2
GET /[Link] HTTP/1.1
Host: [Link]
Cookie: name=value
Другие возможности протокола

• Частичные GET и докачка


GET /[Link] HTTP/1.0
Range: bytes=64397516-80496894

HTTP/1.1 206 Partial Content


Accept-Ranges: bytes
Content-Range: bytes 64397516-80496894/160993792
Content-Length: 16099379
• Условные GET
If-Modified-Since: Wed, 21 Apr 2010 12:33:42 GMT

HTTP/1.1 304 Not Modified


Другие возможности протокола

• Множественное содержание
POST /[Link] HTTP/1.1
Host: [Link]
Content-Type: multipart/form-data;
boundary="Asrf456BGe4h"

--Asrf456BGe4h
Content-Disposition: form-data; name="DestAddress"

test@[Link]
--Asrf456BGe4h
Content-Disposition: form-data; name="MessageTitle"

Другие возможности протокола

• HTTP Authentication
GET /private/[Link] HTTP/1.1
Host: localhost

HTTP/1.1 401 Authorization Required


WWW-Authenticate: Basic realm="Secure Area“

GET /private/[Link] HTTP/1.1


Host: localhost
Authorization: Basic base64(username:password)
HTTP взаимодействие с помощью telnet
• Запустить консоль (Windows+R, cmd)
• В консоли набрать telnet [Link] 80
• Чтобы видеть вводимые команды сделать следующее:
• Нажать Ctrl+]
• Набрать set localecho, ввод
• Еще раз ввод
• Набрать
GET / HTTP/1.1
Host: [Link]
• Дважды нажать ввод

Вам также может понравиться