Wie ist der ICAP-Dialog mit einem Virenscanner, wenn die Preview-Größe größer als die Chunk-Größe ist, und welche Daten werden dabei an den Scanner gesendet?

Antwort

Ein Dialog mit einem Virenscanner via ICAP (Internet Content Adaptation Protocol) läuft typischerweise so ab, dass ein ICAP-Client (z. B. ein Proxy) eine Anfrage an einen ICAP-Server (z. B. einen Virenscanner) sendet, um Inhalte prüfen oder modifizieren zu lassen. Dabei wird der zu prüfende Inhalt oft in Chunks (Teilstücken) übertragen. Die "Preview"-Funktion von ICAP erlaubt es, dem Server zunächst nur einen Teil der Daten zu schicken, damit dieser entscheiden kann, ob er den Rest benötigt. **Szenario:** Die Preview-Größe (z. B. 1024 Bytes) ist größer als die Chunk-Größe (z. B. 512 Bytes). Das bedeutet, dass der Client mehrere Chunks senden muss, um die gewünschte Preview-Größe zu erreichen. **Beispielhafter Ablauf und gesendete Daten:** 1. **OPTIONS-Anfrage (optional, zur Feature-Erkennung):** ``` OPTIONS icap://icap-server.example.com/scan HTTP/1.1 Host: icap-server.example.com ``` 2. **REQMOD/RESPMOD-Anfrage mit Preview:** ``` REQMOD icap://icap-server.example.com/scan ICAP/1.0 Host: icap-server.example.com Allow: 204 Preview: 1024 Encapsulated: req-hdr=0, req-body=... ``` 3. **HTTP-Header (z. B. bei REQMOD):** ``` GET /file.exe HTTP/1.1 Host: www.example.com ... ``` 4. **Body mit Chunks (ICAP verwendet HTTP/1.1 chunked encoding):** - **Erster Chunk (512 Bytes):** ``` 200 <512 Bytes Daten> ``` - **Zweiter Chunk (512 Bytes):** ``` 200 <weitere 512 Bytes Daten> ``` - **Preview-Ende (null chunk mit "ieof" für "End of Preview"):** ``` 0; ieof ``` **Gesamte gesendete Daten (vereinfacht):** ``` REQMOD icap://icap-server.example.com/scan ICAP/1.0 Host: icap-server.example.com Allow: 204 Preview: 1024 Encapsulated: req-hdr=0, req-body=... GET /file.exe HTTP/1.1 Host: www.example.com ... 200 <512 Bytes Daten> 200 <weitere 512 Bytes Daten> 0; ieof ``` **Erklärung:** - Die Preview-Größe ist 1024 Bytes, aber die Chunks sind nur 512 Bytes groß. - Der Client sendet also zwei Chunks à 512 Bytes, um die Preview zu erfüllen. - Nach dem zweiten Chunk wird mit `0; ieof` signalisiert, dass das Ende der Preview erreicht ist. - Der Server entscheidet nun, ob er den Rest der Daten benötigt (204 oder 100 Continue). **Weitere Infos:** - [ICAP RFC 3507](https://datatracker.ietf.org/doc/html/rfc3507) - [Beispiel für ICAP-Dialoge](https://www.openicaps.org/icap/icap_faq.html) **Zusammenfassung:** Wenn die Preview-Größe größer als die Chunk-Größe ist, sendet der Client mehrere Chunks, bis die Preview-Größe erreicht ist, und signalisiert das Ende der Preview mit `0; ieof`.

Neue Frage stellen

Verwandte Fragen

Wie läuft der Dialog mit einem Virenscanner via ICAP ab, wenn ein Preview in mehreren Chunks gesendet wird, und welche Daten werden an den Scanner geschickt?

Ein Dialog mit einem Virenscanner via ICAP (Internet Content Adaptation Protocol), bei dem ein Preview in mehreren Chunks gesendet wird, läuft typischerweise wie folgt ab: **1. ICAP-REQMOD-Anfra... [mehr]

Wie ist der HTTP-Teil eines ICAP-Requests an einen Virenscanner aufgebaut, um binäre Daten direkt zur Überprüfung zu senden?

Um binäre Daten (z. B. eine Datei) direkt an einen Virenscanner über das ICAP-Protokoll zu senden, wird typischerweise der ICAP-Request mit einem eingebetteten HTTP-Request oder HTTP-Respons... [mehr]

Wie erkenne ich bei einem Virenscan über ICAP anhand von 'ICAP/1.0 204' oder 'ICAP/1.0 200', ob die Daten virenbehaftet sind?

Beim Einsatz von ICAP (Internet Content Adaptation Protocol) zur Virenprüfung gibt der ICAP-Server nach der Analyse einer Datei eine Antwort an den Client zurück. Die wichtigsten Statuscodes... [mehr]