Si tengo un paquete HTTP grande que se ha dividido en varios paquetes TCP, ¿cómo puedo reconstruirlos de nuevo en un único paquete HTTP? Básicamente, ¿en qué parte del paquete busco saber cuándo está comenzando/finalizando un paquete HTTP? Parece que no veo banderas/campos en el encabezado TCP que indiquen el inicio o el final del paquete HTTP.Reconstrucción de paquete HTTP
EDITAR: En seguimiento de las respuestas. Si TCP administra la transmisión, ¿cómo sabe cuándo comienza y termina la transmisión? ¿Eso está determinado por la apertura y el cierre del socket? Algún protocolo, en algún nivel, debe ser capaz de saber cuándo el flujo/paquete HTTP ha comenzado y terminado. Eso es lo que me gustaría saber.
La situación en la que me encuentro es que estoy usando un analizador de paquetes en C# que lee en paquetes TCP, y me gustaría poder reconstruir las solicitudes HTTP/respuestas/etc. pasando por la interfaz, como cómo se las arregla wireshark y varios otros sniffers. Alternativamente, ¿hay alguna biblioteca C# que te permita acceder a las secuencias HTTP en el nivel superior, ahorrándome tener que reconstruir las secuencias/paquetes HTTP yo mismo?
Gracias.
Si no se especifica el campo Content-Length, hay otras maneras de calcular el tamaño también. p.ej. http://www.httpwatch.com/httpgallery/chunked/ – mike
Podría ser un poco tarde, pero el encabezado 'Content-Length' NO especifica la longitud total del paquete. Simplemente especifica el tamaño del contenido, por lo tanto, el cuerpo, que viene después de los encabezados. Los encabezados y el cuerpo están separados por '\ r \ n \ r \ n'. –