Размер пакета гарантии TCP - PullRequest
2 голосов
/ 29 сентября 2010

Мы используем встроенное устройство для отправки пакетов с последовательного порта через преобразователь последовательный в Ethernet на сервер.Один производитель, которого мы используем, Moxa, всегда будет отправлять пакеты таким же образом, как они построены.Это означает, что если мы создадим пакет размером 255, он всегда будет отправлять пакет длиной 255.Другой производитель, Tibbo, если мы отправим пакет размером 255, он разорвет пакет, если он больше 128. Это ответ, который я получил от инженеров Tibbo в то время:

«Из того, что я понимаю и что сказали инженеры, даже если другие устройства предоставляют вам правильный размер пакета, теперь не гарантирует, что при реализации в других сетях произойдет то же самое. Это причина, по которой мы чувствуем, что данные на основе размера пакетапередача через TCP не надежна, так как это было не так, как было разработано для использования TCP. "

Я понимаю, что это может быть не так, как было разработано для использования TCP, но если я создаю пакет255 байт и TCP это позволяет, тогда как это за пределами того, как работает TCP?Я понимаю, что в какой-то момент пакет может сломаться, но если сервер ожидает пакет определенного размера и предложение Moxa не имеет такой же проблемы, как у устройства Tibbo.

Итак, можно ли гарантировать разумный размер TCP-пакета?

1 Ответ

11 голосов
/ 29 сентября 2010

Нет. TCP - это не пакетный протокол, это потоковый протокол. Это гарантирует, что все отправленные вами байты будут доставлены в правильном порядке, но не более того. В частности, TCP не предоставляет никаких сообщений или границ пакетов. Если вам нужны такие вещи, они должны быть реализованы на более высоком уровне по вашему протоколу.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...