Понимание протокола HTTP (часть 1)

Опубликовано: 25 Марта, 2023

HTTP протокол

Мир компьютерных сетей существует уже несколько десятилетий, но только в начале 1990-х Интернет, каким мы его знаем сегодня, начал набирать обороты. Примерно в это же время Интернет стал более известен, и его популярность среди публики росла. Теперь есть много причин, которые я слышал, относительно того, почему Интернет вырос на дрожжах. Я присоединюсь к городской легенде о том, что только с появлением веб-сайтов с контентом для взрослых Интернет стал по-настоящему популярным.

Что общего у всех этих сайтов? Что ж, все они использовали протокол HTTP, также известный как протокол передачи гипертекста, для ведения своего бизнеса. Хотя HTTP поддерживается как IP, так и TCP, именно HTTP позволяет вам взаимодействовать с веб-сервером. Ваш любимый веб-браузер говорит HTTP с веб-сервером, и вы, в свою очередь, получаете запрошенную веб-страницу.

Это гораздо больше, чем это, так как необходимо обмениваться большим количеством информации между веб-клиентом, например, Internet Explorer, и веб-сервером, например, IIS. Именно этот обмен информацией поможет наладить отношения между браузером и сервером. На самом деле вы можете думать об этом как о рукопожатии TCP/IP, поскольку туда и обратно отправляются различные детали для облегчения веб-транзакций.

Итак, на этой ноте давайте приготовимся взглянуть на то, что веб-браузер отправляет на веб-сервер после завершения рукопожатия TCP/IP. Ну, во-первых, как только наше трехстороннее рукопожатие TCP/IP выполнено, браузер, или в данном случае Internet Explorer, отправляет информацию на сервер. Прямо под этим предложением находится пакет, показывающий такой пример. Я прокомментирую информацию, содержащуюся в нем, непосредственно под ним.

10:14:50.479387 IP (tos 0x0, ttl 128, id 11651, смещение 0, флаги [DF], протокол: TCP (6), длина: 529) 192.168.1.100.1722 > 72.14.207.99.80: P, cksum 0x899f (правильно), 3141402438:3141402927(489) акк 3866955399 победа 65535
0x0000: 4500 0211 2d83 4000 8006 f1e5 c0a8 0164 E…[электронная почта защищена]……..d
0x0010: 480e cf63 06ba 0050 bb3d ff46 e67d 0e87 H..c…P.=.F.}..
0x0020: 5018 ffff 899f 0000 4745 5420 2f20 4854 P ……. ПОЛУЧИТЬ./.HT
0x0030: 5450 2f31 2e31 0d0a 486f 7374 3a20 7777 TP/1.1..Хост:.ww
0x0040: 772e 676f 6f67 6c65 2e63 610d 0a55 7365 w.google.ca ..Использовать
0x0050: 722d 4167 656e 743a 204d 6f7a 696c 6c61 r -Агент:.Mozilla
0x0060: 2f35 2e30 2028 5769 6e64 6f77 733b 2055 / 5.0.(Windows;.U
0x0070: 3b20 5769 6e64 6f77 7320 4e54 2035 2e31 ;. Windows.NT.5.1
0x0080: 3b20 656e 2d55 533b 2072 763a 312e 372e ;. en-US;.rv:1.7.
0x0090: 3130 2920 4765 636b 6f2f 3230 3035 3037 10 ).Gecko/200507
0x00a0: 3136 2046 6972 6566 6f78 2f31 2e30 2e36 16.Firefox /1.0.6
0x00b0: 0d0a 4163 6365 7074 3a20 7465 7874 2f78 .. Accept:.text/x
0x00c0: 6d6c 2c61 7070 6c69 6361 7469 6f6e 2f78 мл, приложение /x
0x00d0: 6d6c 2c61 7070 6c69 6361 7469 6f6e 2f78 мл, приложение /x
0x00e0: 6874 6d6c 2b78 6d6c 2c74 6578 742f 6874 html +xml,текст/ht
0x00f0: 6d6c 3b71 3d30 2e39 2c74 6578 742f 706c мл ;q=0.9,текст/pl
0x0100: 6169 6e3b 713d 302e 382c 696d 6167 652f ain;q=0,8,изображение/
0x0110: 706e 672c 2a2f 2a3b 713d 302e 350d 0a41 png ,*/*;q=0.5..A
0x0120: 6363 6570 742d 4c61 6e67 7561 6765 3a20 ccept-Language:.
0x0130: 656e 2d75 732c 656e 3b71 3d30 2e35 0d0a en-us,en;q=0.5..
0x0140: 2d2d 2d2d 2d2d 2d2d 2d2d 2d2d 2d2d 2d3a —————:
0x0150: 202d 2d2d 2d2d 2d2d 2d2d 2d2d 2d0d 0a41.————.. А
0x0160: 6363 6570 742d 4368 6172 7365 743a 2049 ccept -Charset:.I
0x0170: 534f 2d38 3835 392d 312c 7574 662d 383b SO -8859-1,utf-8;
0x0180: 713d 302e 372c 2a3b 713d 302e 370d 0a4b q =0,7,*;q=0,7..K
0x0190: 6565 702d 416c 6976 653a 2033 3030 0d0a eep -Alive:.300..
0x01a0: 436f 6e6e 6563 7469 6f6e 3a20 6b65 6570 Соединение :.keep
0x01b0: 2d61 6c69 7665 0d0a 436f 6f6b 6965 3a20 жив..Cookie:.
0x01c0: 5052 4546 3d49 443d 3031 6130 3832 3234 ПРЕФ =ID=01a08224
0x01d0: 3534 6163 6232 3933 3a4c 443d 656e 3a54 54acb293:LD=en:T
0x01e0: 4d3d 3131 3231 3633 3830 3934 3a4c 4d3d M =1121638094:LM=
0x01f0: 3131 3231 3633 3830 3934 3a53 3d6a 2d30 1121638094:S =j-0
0x0200: 3970 3851 6870 5953 5f43 7253 500d 0a0d 9p8QhpYS _CrSP…
0x0210: 0а



Если вы помните из статей о TCP/IP, которые я написал, вы поймете, что данные прикладного уровня, в данном случае HTTP, начинаются после заголовка TCP. Я подчеркнул первые две строки, показывая, где именно они начинаются. Хотя я подчеркнул только две строки, пожалуйста, поймите, что вся остальная часть пакета состоит из данных HTTP. Теперь мы объясним различные слова, которые мы видим в содержимом ASCII этого пакета.

ПОЛУЧИТЬ /HTTP/1.1

Это говорит о том, что веб-клиент отправляет запрос GET на веб-сервер, т. е. что-то от него хочет, и что веб-клиент понимает HTTP 1.1. Существует также HTTP 1.0, но он в значительной степени был заменен более новой версией HTTP 1.1. В настоящее время предпринимаются усилия по развертыванию HTTP 2.0 в будущем.

Хост: www.google.ca

Это веб-сайт, к которому клиент хочет подключиться или, так сказать, ПОЛУЧИТЬ.

Агент пользователя: Mozilla/5.0 (Windows; U; Windows NT 5.1;

Это сообщает веб-серверу, что веб-клиент — это Mozilla версии 5.0, работающий под управлением Windows версии NT 5.1 или, как это более известно, Windows XP, что и является моей операционной системой.

ан-США; рв: 1.7.10)

Приведенная выше информация сообщает веб-серверу, что веб-клиент понимает или использует набор символов en:US и, если я не ошибаюсь, версию 1.7.10.

Геккон/20050716 Firefox/1.0.6

Здесь указан точный веб-браузер, который использует клиент, как указано выше, это Firefox.

Принять: текст/xml, приложение/xml, приложение/xhtml+xml

Здесь клиент сообщает веб-серверу, что он может принимать следующие форматы как для текста, так и для приложения, то есть: он будет принимать текст в формате xml и так далее.

текст/html; q=0,9, текст/обычный; q=0,8, изображение/png, */*;q=0,5

В приведенном выше клиент говорит, что он будет принимать текст как в формате html, так и в обычном формате, а также будет принимать изображения в png и всех других форматах. Различные значения q=0,8 и т. д. являются весовыми значениями, используемыми Firefox, чтобы указать, что он предпочитает различные типы пантомимы. Эти значения представляют собой числа с плавающей запятой и имеют вес от 0 до 1.

Accept-Charset: ISO-8859-1, utf-8; д=0,7, *;д=0/7

Здесь перечислены наборы символов, которые понимает веб-клиент, например: ISO-8859-1 и utf-8.

Keep-Alive: 300 Соединение: keep-alive

Это сообщает веб-серверу, что он будет поддерживать сеанс в течение 300 секунд или до тех пор, пока клиент явно не завершит сеанс. В версии 1.1 HTTP соединение будет оставаться открытым до тех пор, пока клиент не разорвет его, в отличие от версии 1.0 HTTP, которая разрывала соединение после каждого запроса. Гораздо разумнее просто держать его открытым в течение определенного времени или до тех пор, пока веб-клиент не закроет его.

Cookie: PREF=ID=01a0822454acb293: LD=en:TM=1121638094…..

Эта последняя часть головоломки — это файл cookie и его значения. У многих людей есть странные представления о печенье. Все файлы cookie — это простой текст, плоский ASCII, если хотите. В нем нет ничего исполняемого. Однако файлы cookie содержат информацию о вашем компьютере, например: тип браузера и тому подобное. Кратко говоря, есть также два типа файлов cookie; основанный на сеансе и постоянный. Первый файл cookie действителен только на время работы вашего браузера, а второй будет оставаться на жестком диске вашего компьютера до тех пор, пока он запрограммирован. Вы также можете просмотреть файлы cookie в своем браузере, если хотите. Если вы когда-либо нажимали «да» на один из вопросов «Хотите ли вы, чтобы мы запомнили ваше имя пользователя и пароль?», пожалуйста, поймите, что это делается с помощью файла cookie, который сервер сохраняет на вашем компьютере.

Вывод

Что ж, это подводит нас к концу первой части серии статей о HTTP. В этой статье мы рассмотрели, что видно в ASCII-содержимом пакета, когда веб-клиент впервые подключается к веб-серверу. Как видите, перечислены многие области интересов, особенно для тех, кто может быть, например, хакером. Помните, что строка пользовательского агента покажет тип вашего браузера и операционную систему. Это, безусловно, помогает хакеру, который пытается использовать эксплойт на стороне клиента ;-). Пока я не увижу вас во второй части, получайте удовольствие!