Подтвердить что ты не робот

Минимальный размер запроса HTTP-запроса в байтах

Каков минимальный размер байтов HTTP-запроса? Я имею в виду размер обязательных данных, из которых должен состоять HTTP-запрос, например полей, связанных с заголовками, и учитывая, что тело запроса пуст.

4b9b3361

Ответ 1

Самый короткий возможный HTTP-запрос - это простой метод GET, созданный путем прямого подключения к определенному серверу. Самый короткий запрос:

GET / HTTP/0.9<CR><LF>

который составляет в общей сложности 16 байт, включая пару CR/LF в конце строки.

Для HTTP 1.x(1.0 и 1.1) ожидается наличие заголовков, поэтому для обозначения конца заголовков вам нужна пустая строка. Самый короткий запрос:

GET / HTTP/1.0<CR><LF>
<CR><LF>

который составляет в общей сложности 18 байт.

(Добавлено после комментариев Doug; спасибо:) Для HTTP 1.1 требуется заголовок Host:. См. Ответ @DougRichardson для кратчайшего запроса HTTP 1.1.

Ответ 2

26 байт

для исключительного случая 1-байтового ресурса и 1-байтового имени хоста.

GET / HTTP/1.1<CR><LF>
Host:x<CR><LF>
<CR><LF>

Вам нужна начальная строка запроса и, если вы используете HTTP 1.1, заголовок Host. Каждая новая строка составляет два байта (CRLF). Две части этого минимального запроса GET являются переменными: путь к ресурсу и имя хоста.

Минимальная начальная строка запроса - GET / HTTP/1.1, которая составляет 16 байтов (включая два невидимых байта CRLF, которые вы не видите).

Минимальная строка хоста - Host:x, то есть однобайтовое имя хоста, которое дает 8 байтов (опять же два байта CRLF).

Чтобы обозначить конец заголовков, вам нужен еще один CRLF, так что еще 2 байта.

16+8+2=26 bytes для минимального размера HTTP-запроса.

Конечно, это увеличивается, если у вас более длинное имя хоста или более длинный путь к ресурсу. Чтобы принять это во внимание, минимальный размер HTTP-запроса: 24 + length(resource_path) + length(host)

Вот реальный пример использования netcat от bash (обратите внимание, что путь к ресурсу и имя хоста длиннее минимального):

nc -c www.example.com 80 <<EOF
GET /index.html HTTP/1.1
Host:www.example.com

EOF