Die kürzest mögliche HTTP-Anfrage ist eine einfache GET
-Methode, die durch direkte Verbindung zu einem bestimmten Server erstellt wird. Die kürzeste Anfrage lautet:
Das sind insgesamt 16 Bytes, einschließlich des CR / LF-Paares am Ende der Zeile.
Für HTTP 1.x (1.0 und 1.1) wird das Vorhandensein von Headern erwartet. Um also das Ende der Header zu kennzeichnen, benötigen Sie eine leere Zeile. Die kürzeste Anfrage lautet dann:
%Vor%was insgesamt 18 Bytes ist.
(Nach Kommentaren von Doug hinzugefügt; danke :) Für HTTP 1.1 ist der Header Host: erforderlich. Siehe @ DougRichardson's Antwort für die kürzest mögliche HTTP 1.1 Anfrage.
26 Bytes, für den Ausnahmefall einer 1 Byte Ressource und 1 Byte Hostname.
%Vor%Sie benötigen eine erste Anforderungszeile und, wenn Sie HTTP 1.1 verwenden, eine Host-Kopfzeile. Jede neue Zeile hat zwei Bytes (CRLF). Zwei Teile dieser minimalen GET-Anfrage sind variabel: der Ressourcenpfad und der Hostname.
Eine minimale erste Anforderungszeile ist GET / HTTP/1.1
, also 16 Byte (einschließlich der zwei unsichtbaren CRLF-Bytes, die Sie nicht sehen).
Eine minimale Host-Zeile ist Host:x
, dh ein Host-Name mit einem Byte, der 8 Bytes ergibt (wiederum zwei CRLF-Bytes).
Um das Ende der Header anzugeben, benötigen Sie eine weitere CRLF, also weitere 2 Bytes.
16+8+2=26 bytes
für eine minimale HTTP-Anforderungsgröße.
Dies erhöht sich natürlich, wenn Sie einen längeren Hostnamen oder einen längeren Pfad zur Ressource haben. Um dies zu berücksichtigen, lautet die Mindestanforderung für HTTP-Anfragen: 24 + length(resource_path) + length(host)
Hier ist ein Beispiel aus der realen Welt, in dem netcat von bash verwendet wird (beachten Sie, dass der Ressourcenpfad und der Hostname beide länger sind als das Minimum):
%Vor%