Предупреждение: входящее упрощение. Тем не менее, это должно помочь вам понять.
TCP надежен. Если вы отправляете данные, они либо будут доставлены целыми и в идеальном порядке, либо не получатся. Эта надежность достигается за счет увеличения накладных расходов на трафик, поскольку получатель должен подтвердить свое получение отправителю, и отправитель может отправлять одни и те же данные несколько раз для обеспечения правильной доставки.
UDP ненадежен, но без таких издержек. Отправитель бросает пакеты в получателя. Пакеты, которые поступают, по-прежнему гарантированно прибывают целым, но не все пакеты гарантированно прибывают. UDP полезен, когда вы можете позволить потерю передачи, а издержки TCP слишком велики, чтобы оправдать надежность.
Примеры использования UDP включают потоковую передачу контента в режиме реального времени (видео / аудио) и непрерывные обновления состояния ( например, , пакеты, уведомляющие клиента о состоянии различных объектов в игровой вселенной). В целом, это адекватные цели, потому что данные становятся неактуальными очень быстро, поскольку они заменяются новыми данными. Лучше продолжать бросать биты и пыхтеть, чем беспокоиться о неповрежденном поступлении прошлых данных, которые могут больше не иметь значения.
С другой стороны, что-то вроде аутентификации, системы обновления контента или внутриигрового чата сильно выиграет от более надежного TCP-соединения, поскольку задержка гораздо менее важна, чем целостность.