O TCP é um protocolo de streaming e não um protocolo de mensagens. A pilha TCP no sistema operacional garante que os dados sejam encaminhados para o aplicativo na ordem correta e que nenhuma perda de dados e nenhuma duplicação de dados seja feita. Ele não se preocupa em manter limites de pacotes, já que eu disse que o TCP é um protocolo de fluxo. Além disso, o remetente é livre para dividir uma única gravação em vários pacotes ou combinar várias gravações em um único pacote. Ele fará a divisão para adaptar o tamanho do pacote ao MTU / PMTU, a fim de evitar a fragmentação do pacote durante a entrega e a combinação para reduzir a sobrecarga de entrega.
Assim, o aplicativo nunca deve depender dos limites implícitos de mensagens devido à maneira como o aplicativo de envio gravou os dados, mas, em vez disso, limites de mensagens explícitas (no nível do aplicativo) devem ser usados.
Is there a way to configure the OS to re-assemble these packets as they are received on the port on this layer?
Não, você precisa lidar com isso corretamente em seu aplicativo.