Потому что сплошь и рядом сообщение пихают в поток байт и без разделителей, и без длины. И нужно самому догадаться, по каким признакам верно будет разрезать склейку.
Кстати, где ты видел "сплошь и рядом поток байт без разделителей/длины"?
Длины может не быть только там, где, собственно.. Потоковый протокол. Например, интернет-радио. Там не будет длины, и условный ogg-файл будет передаваться бесконечно.
Я тут просто интересный грабель выкопал в lua sys. Если создать сокет, не важно даже, tcp или udp, то длина принимаемого сообщения не может превысить 4096 байт.
Это должно быть задано какой-нибудь опцией, но... Может быть и захардкоженой багой.
Потому что непрерывные неразделённые логи — это немножко мусор. Там должна быть как минимум метка времени, которая может работать началом сообщения.
И опять же, запрос содержит вложенные метки времени того же формата. Если отделать по ним, один запрос будет добиться на 4-5 штук без целостного смысла