TCP numbers bytes, acknowledges them and retransmits lost ones, so the application sees a stream, not messages. Message boundaries are the application’s job.