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