Wie berechnet man den Encapsulated Header für ICAP RESPMOD genau? Drei Beispiele mit Preview und unbekannter Inputstream-Länge inklusive Daten.

Antwort

Der **Encapsulated Header** im ICAP-Protokoll (RFC 3507) gibt an, an welchen Byte-Offsets im ICAP-Body die verschiedenen eingebetteten HTTP-Nachrichten (z.B. HTTP-Request, HTTP-Response, Body) beginnen. Er ist besonders wichtig bei RESPMOD-Anfragen, bei denen HTTP-Response-Header und -Body übertragen werden. Die Werte im Encapsulated Header sind **Byte-Offsets** relativ zum Beginn des ICAP-Bodys (also nach den ICAP-Headern und dem doppelten CRLF). **Allgemeines Format:** ``` Encapsulated: res-hdr=0, res-body=<offset> ``` - `res-hdr` = Offset des HTTP-Response-Headers (meist 0) - `res-body` = Offset des HTTP-Response-Bodys (nach dem Header und CRLF) **Mit Preview:** Wenn ein Preview verwendet wird, wird nur ein Teil des Bodys übertragen, gefolgt von einem Null-Chunk (`0\r\n\r\n`). **Inputstream unbekannter Länge:** Der Body wird als Chunked Encoding übertragen, die Länge ist nicht im Voraus bekannt. --- ### **Beispiel 1: RESPMOD mit Preview, Body beginnt nach 123 Bytes** **ICAP-Header:** ``` RESPMOD icap://icap.example.net/respmod ICAP/1.0 Host: icap.example.net Encapsulated: res-hdr=0, res-body=123 Preview: 50 [leere Zeile] ``` **ICAP-Body:** - **res-hdr** (HTTP-Response-Header, 123 Bytes lang, z.B.): ``` HTTP/1.1 200 OK\r\n Content-Type: text/html\r\n Content-Length: 9999\r\n \r\n ``` - **res-body** (ab Byte 123): ``` 32\r\n [50 Bytes Preview-Daten]\r\n 0\r\n \r\n ``` --- ### **Beispiel 2: RESPMOD mit Preview, Body beginnt nach 87 Bytes** **ICAP-Header:** ``` RESPMOD icap://icap.example.net/respmod ICAP/1.0 Host: icap.example.net Encapsulated: res-hdr=0, res-body=87 Preview: 20 [leere Zeile] ``` **ICAP-Body:** - **res-hdr** (HTTP-Response-Header, 87 Bytes lang): ``` HTTP/1.1 404 Not Found\r\n Content-Type: text/plain\r\n \r\n ``` - **res-body** (ab Byte 87): ``` 14\r\n [20 Bytes Preview-Daten]\r\n 0\r\n \r\n ``` --- ### **Beispiel 3: RESPMOD mit Preview, Body beginnt nach 102 Bytes** **ICAP-Header:** ``` RESPMOD icap://icap.example.net/respmod ICAP/1.0 Host: icap.example.net Encapsulated: res-hdr=0, res-body=102 Preview: 40 [leere Zeile] ``` **ICAP-Body:** - **res-hdr** (HTTP-Response-Header, 102 Bytes lang): ``` HTTP/1.1 302 Found\r\n Location: http://example.com/\r\n Content-Type: text/html\r\n \r\n ``` - **res-body** (ab Byte 102): ``` 28\r\n [40 Bytes Preview-Daten]\r\n 0\r\n \r\n ``` --- **Zusammenfassung der Berechnung:** - `res-hdr=0` (Header beginnt immer bei 0) - `res-body=<Länge des HTTP-Response-Headers>` (Body beginnt direkt nach dem Header und CRLF) - Die Länge des Headers muss exakt gezählt werden (inklusive aller CRLF) - Bei Preview wird nur ein Teil des Bodys übertragen, gefolgt von einem Null-Chunk **Weitere Infos:** - [RFC 3507, Abschnitt 4.5 Encapsulated Header](https://datatracker.ietf.org/doc/html/rfc3507#section-4.5) - [ICAP.org FAQ](http://www.icap.org/faq/) Falls du ein konkretes Beispiel mit echten Daten brauchst, kann die genaue Byte-Zählung anhand der Header und CRLF

Neue Frage stellen

Verwandte Fragen

Wie unterscheiden sich bei ICAP RESPMOD und REQMOD und welche je 3 Beispiele gibt es für Request und Response bei gleicher Anfrage?

ICAP (Internet Content Adaptation Protocol) wird genutzt, um HTTP-Anfragen und -Antworten durch externe Server (z. B. Virenscanner, Content-Filter) zu modifizieren. Die beiden Hauptmodi sind: - **REQ... [mehr]

Wie unterscheiden sich ICAP RESPMOD Requests mit HTTP GET und direkter ByteArray-Übertragung, inklusive je zwei ausführlicher Beispiele mit Erläuterung?

ICAP (Internet Content Adaptation Protocol) wird genutzt, um HTTP-Nachrichten (Requests oder Responses) an externe Dienste wie Virenscanner oder Content-Filter weiterzuleiten. Dabei gibt es verschiede... [mehr]

Wie sieht ein ICAP-Request im RESPMOD aus, wenn ein binäres Byte-Array zur Virenprüfung gesendet wird? Gib vier Beispiele für Arrays mit 4 bis 30 Bytes und erläutere die Requestelemente.

Ein ICAP-Request im RESPMOD-Modus (Response Modification) wird verwendet, um z. B. einen HTTP-Response (etwa eine heruntergeladene Datei) an einen ICAP-Server zu senden, der diesen Inhalt z. B. auf Vi... [mehr]

Was ist die Query in einer ICAP URI, wofür wird sie genutzt und wie wird sie eingesetzt? Bitte 5 ausführliche Beispiele mit vollständiger ICAP URI.

Die **Query** in einer ICAP-URI ist der optionale Teil nach dem Fragezeichen (`?`). Sie funktioniert ähnlich wie bei HTTP-URIs: Sie überträgt zusätzliche Parameter oder Information... [mehr]

Welche ICAP Header sind bei OPTIONS, REQMOD und RESPMOD jeweils in Request und Response zu verwenden? Komplette tabellarische Übersicht, erforderliche Header markieren.

Hier ist eine tabellarische Übersicht der wichtigsten ICAP-Header für die Methoden **OPTIONS**, **REQMOD** und **RESPMOD** – jeweils unterteilt nach Request und Response. Erforderliche... [mehr]

Welche ICAP Header sind mit OPTIONS, REQMOD und RESPMOD in Request und Response jeweils zulässig? Bitte tabellarisch darstellen.

Hier ist eine tabellarische Übersicht der wichtigsten ICAP-Header, die gemäß [RFC 3507](https://datatracker.ietf.org/doc/html/rfc3507) in den jeweiligen ICAP-Methoden (OPTIONS, REQMOD,... [mehr]

Welche ICAP-Header sind bei den drei ICAP-Methoden in Request und/oder Response zulässig? Vollständige Liste mit Bedeutung.

Im ICAP-Protokoll (Internet Content Adaptation Protocol, [RFC 3507](https://datatracker.ietf.org/doc/html/rfc3507)) gibt es drei Hauptmethoden: **REQMOD**, **RESPMOD** und **OPTIONS**. Jede Methode ve... [mehr]