если мое приложение использует протокол TCP? тогда мне нужен механизм повтора в моем приложении? - PullRequest
0 голосов
/ 03 апреля 2019

если я использую протокол tcp в своем приложении, то мне нужен другой механизм повтора в моем приложении?

Я хочу, чтобы мои сообщения были на 100% получены моим клиентом, если он получил дублированные сообщения, поэтому клиент повторно отправляет ACK на сервер. В каком случае сервер не может получить подтверждение, если я использую длинное соединение tcp? и скажем, код сервера / клиента не будет сбрасывать сам ACK, и tcp-соединение будет оставаться живым, в этом случае мне нужен механизм повторных попыток на моем сервере, чтобы убедиться, что клиент получает сообщение? или есть какое-то условие, что ack потеряет? или потеряет пакет tcp?

Ответы [ 2 ]

1 голос
/ 03 апреля 2019

TCP (только) заботится о том, чтобы данные доставлялись без потерь, дублировались или переупорядочивались в приложении.Но это не дает отправителю никакой обратной связи, когда данные действительно достигают целевой системы.Он также не заботится о том, обрабатывает ли приложение данные, и не обеспечивает надежной обратной связи, если приложение действительно прочитало все данные перед выходом.Таким образом, если вам нужна обратная связь о том, что приложение действительно обработало и отреагировало на отправленные вами данные, вам нужно добавить соответствующую обратную связь в протокол приложения.

0 голосов
/ 03 апреля 2019

TCP - это надежный протокол, он не будет сбрасывать или переупорядочивать любые данные из середины потока.(Данные OOB являются исключением)

Пример. При отправке сообщений A и B (в этом порядке) с клиента на сервер.TCP гарантирует, что серверное приложение получит A из потока TCP до B. TCP прервет соединение TCP перед нарушением этого правила.

TCP делает все необходимые повторные передачи для вас, чтобы гарантировать, что выходной поток от клиента идентичен входному потоку сервера.И наоборот.

Если ваши клиентские и серверные приложения не будут отбрасывать / игнорировать уже переданные сообщения, то не должно быть причин для повторной отправки сообщений на уровне приложения.Повторная отправка сообщения, скорее всего, приведет к дублированию.

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