Você não lê um número fixo de bytes. Você leu quantos bytes houver (ou até você abortar) até atingir a marca END OF HEADER
(para HTTP que é \n\r\n
até onde eu saiba). Embora, por razões de segurança, o tamanho real do cabeçalho seja limitado pelo servidor HTTP :
There is no limits to size of each header field name or value, or number of headers in standard itself. However most servers, clients and proxy software impose some limits for practical and security reasons. For example Apache 2.3 server by default limits each header size to 8190 bytes, and there can be at most 100 headers in single request.
Basear-se em buffers de tamanho fixo nessa comunicação seria um grande erro. Seu buffer precisa crescer dinamicamente. Você não deve confiar na exatidão do campo Content-Length
ao receber o corpo da mensagem.