TCP - это потоковый протокол, а не протокол сообщений. Стек TCP в ОС гарантирует, что данные передаются приложению в правильном порядке и что не происходит потеря данных и их дублирование. Он не заботится о сохранении каких-либо границ пакетов, поскольку, как я сказал, TCP является потоковым протоколом. Кроме того, отправитель может разделить одну запись на несколько пакетов или объединить несколько записей в один пакет. Будет выполнено разделение, чтобы адаптировать размер пакета к MTU / PMTU, чтобы избежать фрагментации пакетов во время доставки, и объединение для уменьшения накладных расходов на доставку.
Таким образом, приложение никогда не должно полагаться на неявные границы сообщений из-за того, как отправляющее приложение записало данные, но вместо этого должны использоваться явные (уровень приложения) границы сообщений.
Есть ли способ настроить ОС для повторной сборки этих пакетов по мере их поступления на порт на этом уровне?
Нет, вы должны правильно разобраться с этим в своем заявлении.