Если я прямо скажу, что UDP быстрее, чем TCP, то он используется для таких приложений; вы не поверите и не примете. Разработчики, таким образом, повысили надежность UDP (называемого RUDP), чтобы заставить его в некоторой степени имитировать TCP. Тем не менее, он не полностью (полностью) реализует функции TCP.
Поэтому я хотел бы ответить на ваш вопрос со ссылкой на статью _ 1_:
TCP имеет набор инструкций, которые гарантируют, что каждый пакет данных будет доставлен своему получателю. Это сравнимо с зарегистрированной доставкой в самой простой форме. Однако, хотя поначалу кажется очевидным, что «убедиться, что сообщение доходит» имеет первостепенное значение при отправке чего-либо кому-то другому, необходимо отметить несколько дополнительных моментов. Если сетевая ссылка, использующая TCP / IP, замечает, что пакет прибыл не по порядку, то TCP останавливает передачу, отбрасывает все, что находится в пересылаемом пакете с нарушением последовательности, отправляет сообщение «вернуться туда, где он пошел не так», и снова начинает передачу.
Если у вас есть все время в мире, это нормально. Поэтому для передачи мне информации о моей зарплате из моей компании мне, честно говоря, все равно, занимает ли это микросекунда или час, я хочу, чтобы все было сделано правильно. TCP отлично подходит для этого.
Однако в модели услуг, ориентированной на видео, данных просто так много, что, если несколько пакетов не проходят по каналу связи, возникают ситуации, когда я предпочитаю пропустить эти пакеты и продолжить общий поток видео, чем получить каждую деталь первоисточника. Наш мозг может представить для нас пропущенные фрагменты видео, если его не отвлекает прерывистый звук и покадровое видео. В этих обстоятельствах есть возможность просто отправить столько данных с одного конца ссылки к другому - своевременно, независимо от того, насколько точно они передаются, это явно желательно. Именно для этого типа приложений оптимален UDP. Если кажется, что пакет не прибыл, то получатель ждет несколько секунд, чтобы увидеть, действительно ли он прибыл - возможно, вплоть до того момента, когда зрителю нужно увидеть этот блок видео - и если буфер доходит до точки. там, где должен быть отсутствующий пакет, тогда он просто продолжается, а приложение пропускает точку, где находятся недостающие данные, переходя к следующему пакету и сохраняя временную базу видео. Вы можете увидеть мерцание или какие-то артефакты, но момент проходит почти мгновенно, и, скорее всего, ваш мозг восполнит пробел.
Если эта ошибка возникает в TCP, TCP может потребоваться более 3 секунд для повторного согласования последовательности для перезапустите с отсутствующей точки, отбросив все последующие данные, которые необходимо повторно поставить в очередь для повторной отправки. Только один потерянный пакет может вызвать повторную отправку всего «окна» данных TCP.
Многие разработчики игр предпочитают сделать UDP надежным на уровне приложений. Разве не для этого создан TCP?
Если вы можете терпеть скорость обработки данных на обоих концах, это нормально.
Но в играх это не нормально. Вы должны передавать кадры видео (и аудио и т. Д.) Много раз в секунду, и это тоже для многих игроков (в многопользовательской игре). Все это требует гораздо большей скорости и более быстрой обработки данных; вместо использования сравнительно более медленного TCP. Даже если некоторые пакеты отбрасываются на полпути, это нормально для приложения, так как мозг тоже перейдет к следующему, вместо того, чтобы думать об этих дрожаниях.
Я сделал API, который обеспечивает связь клиент-сервер с использованием пакетов UDP и TCP. Стоит ли добавлять в список надежный UDP? И почему? Есть ли проблема, если я использую TCP?
Это зависит от того, насколько лучше вы хотите, чтобы приложение реагировало. Я бы посоветовал вам добавить надежный UDP в свой список.
Я уже упоминал о проблемах с ПТС.
Я просто хочу знать, имеет ли RUDP какие-либо преимущества по сравнению с TCP, чтобы я мог выбирать, добавлять ли поддержку RUDP или нет.
С низкими накладными расходами и более высокой скоростью я бы сделал ставку на надежный UDP, чем на громоздкий TCP - для разработки таких приложений (игр).
person
Am_I_Helpful
schedule
05.09.2016