Помогите с HTTP chunked

Тема в разделе "WASM.NETWORKS", создана пользователем pinya, 20 апр 2009.

  1. pinya

    pinya New Member

    Публикаций:
    0
    Регистрация:
    31 авг 2007
    Сообщения:
    30
    Смотрю на rfc пол дня.. ничего понять не могу..
    помогите разобраться, как строится заголов для chunk'a
    т.е. с HTTP заголовком все понятно.
    потом идут данные первого chunk. Там где-то размер его.

    цитата из rfc
    Chunked-Body = *chunk
    "0" CRLF
    footer
    CRLF

    chunk = chunk-size [ chunk-ext ] CRLF
    chunk-data CRLF

    hex-no-zero = <HEX за исключением "0">

    chunk-size = hex-no-zero *HEX
    chunk-ext = *( ";" chunk-ext-name [ "=" chunk-ext-value ] )
    chunk-ext-name = token
    chunk-ext-val = token | quoted-string
    chunk-data = chunk-size(OCTET)

    footer = *entity-header


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

    Задача: собрать все чунки в HTML страницу.
     
  2. reverser

    reverser New Member

    Публикаций:
    0
    Регистрация:
    27 янв 2004
    Сообщения:
    615
    Что-то типа такого:
    Код (Text):
    1. <size1>
    2. <chunk1>
    3. <size2>
    4. <chunk2>
    5. ...
    6. 0
    Где sizeN - шестнадцатиричное число, а chunkN - массив байтов соответствующей длины.
    С chunk-ext вживую не видал.
     
  3. pinya

    pinya New Member

    Публикаций:
    0
    Регистрация:
    31 авг 2007
    Сообщения:
    30
    в реальности получается так:
    HTTP header
    CRLF
    CRLF
    ??? непонятно что
    CHUNK1_SIZE (шестнадцатиричное число)
    CRLF
    CHUNK1_DATA
    Код (Text):
    1. HTTP/1.1 200 OK
    2. Date: Tue, 21 Apr 2009 11:39:17 GMT
    3. Server: Apache/2.2.9 (Unix) mod_perl/2.0.4 Perl/v5.8.8
    4. Cache-Control: private, max-age=3600
    5. Content-Type: text/html; charset=utf-8
    6. Expires: Tue, 21 Apr 2009 12:39:17 GMT
    7. Vary: Accept-Encoding
    8. Content-Encoding: gzip
    9. Connection: close
    10. Transfer-Encoding: chunked
    11.  
    12. 10
    13. ................
    14. 179c
    15. .<.s..y....\LRJx8<..#u...(..d...8..f...A........Y.c..Du&.8....N...SY.j.ay...\...........")..;c......}...^...D...;.a../.E.t..[dWz.v.`.^.....uY.$w.B.v..6]1;4.Y..E..^...O....O.n.F..d{9{.q..94bgO..mdG.k.Y.eY...vW.s..._.w.......sp}..n. ~....>Q.U......[.h...........m..9.B.....E......X.Q@..K%.mK{.......d.Zt..I..q
    16. ...F.....2.....o..\.H....+=..-..G..4..+....Z.5E.WjEU.U*.M..:T0.(...n..T...F..5\Xa..WA.+ hQ.D....U.-..uB.4......7..{c.....$.,.......xQ..I.A.{t.89I..2.-Y...... ..0..
    179c это размер чунка. а что такое 10.....
     
  4. _w0rm_

    _w0rm_ New Member

    Публикаций:
    0
    Регистрация:
    21 июл 2008
    Сообщения:
    10
    10hex = 16 dec
    stlen ("................") = 16

     
  5. pinya

    pinya New Member

    Публикаций:
    0
    Регистрация:
    31 авг 2007
    Сообщения:
    30
    ыгыг.... согласен я тормоз. спасибо.