Me parece que no puede obtener una respuesta definitiva sobre la siguiente pregunta (buscar en Google su mayoría y la lectura de HTTP/1.1 espec):(fragmentada) HTTP cuerpo del mensaje binario y CRLFs
Cuando 'fragmentada' se utiliza la codificación de transferencia, ¿por qué el servidor necesita escribir AMBOS el tamaño del fragmento en bytes y los datos posteriores del fragmento terminan con CRLF. ¿Esto no hace que el envío de datos binarios "CRLF-unclean" y el método sea un poco redundante? ¿Qué pasa si los datos tienen un 0x0A seguido de 0x0D en algún lugar (es decir, estos son en realidad parte de los datos)? ¿Se espera que el cliente se adhiera al tamaño del fragmento explícitamente provisto a la cabeza del trozo o estrangulador en el primer CRLF que encuentra en los datos? Mi comprensión hasta ahora es simplemente tomar el tamaño de porción proporcionado por el servidor, pasar a la siguiente línea, luego leer exactamente esta cantidad de bytes dentro de los siguientes datos (CRLF o sin CRLF adentro), luego omitir ese CRLF que sigue a los datos y repite el procedimiento hasta que no queden más trozos ... ¿Estoy en lo cierto? ¿Cuál es el punto del CRLF después de cada datachunk entonces? ¿Legibilidad?
Gracias por la explicación. ¿Lo tomas del documento RFC 2616, o en otro lugar? ¿Su explicación también implica que el fragmento de respuesta NO PUEDE contener la combinación CRLF como parte de los datos en sí? – amn
Se sigue del EBNF en el RFC; tenga en cuenta que 'chunk-data' consiste en' OCTET', que sugiere que esos bytes no deben interpretarse. Un fragmento de respuesta ciertamente puede contener CRLF. Implementé un códec fragmentado dos veces, ambas veces en Java, y en cada caso no hice ninguna interpretación del contenido de los datos del fragmento. Es opaco para el encuadre del trozo. El decodificador determina la longitud esperada, lee tantos bytes y luego asegura que los siguientes dos bytes son CR y LF. – seh
Eso lo hace perfectamente claro para mí. Regla de los Octetos. Gracias por tu tiempo. – amn