Re[7]: Максимальная длина TCP пакета в сети
От: Marty Пират https://www.youtube.com/channel/UChp5PpQ6T4-93HbNF-8vSYg
Дата: 20.02.20 20:41
Оценка: +1
Здравствуйте, netch80, Вы писали:

AG>>>P.S. Проблему удалось решить — за счет контроля длины блоков.

AG>>>Предыдущее решение — за счёт маркёра конца — не такое изящное и (по совету уважаемого товарища Pzz) я отказался от него.

M>>Маркер конца — вообще какая-то малоосмысленная штука.


N>Есть много примеров неплохой практики для такого маркера.

N>SMTP, POP3, NNTP и прочие: маркер конца — строка из одной точки.

Плохие примеры. Эти протоколы разрабатывались в те времена, когда по ним общались не программы, а люди

N>HTTP chunked encoding: маркер конца — чанк длины 0.


Лень уточнять, о чем тут, но весь HTTP изначально текстовый человеко-читаемый, так что грабли растут примерно оттуда же

N>ATM: AAL5 для транспорта IP — бит пометки "последний фрагмент IP пакета" (если позанудствовать, тоже, вероятно, фрагмента, но уже на уровне IP).

N>Да даже просто текстовый интерфейс с другой стороной: маркер конца — LF или CRLF, начало предполагается автоматически (пришёл на линк и послал AT\n).
N>А пока он не пришёл — набираешь данные. Да, заранее тут не предскажут их длину, надо иметь свой лимит и возможность запасти до него.
N>И это не противоречит возможности продублировать длиной в конце (для сверки) или CRC.

Маркер конца может быть полезен в купе с остальным, не более.

Вот тебе по UART'у шлют: "убить нельзя помиловать\r\n", а ты не вовремя влез и получил "нельзя помиловать\r\n". Маркер конца есть? Есть. Пошли убивать, сообщение вполне однозначное
Маньяк Робокряк колесит по городу
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.