Потеря пакетов и дублирование пакетов

Я пытаюсь выяснить, в чем разница между потерей пакетов и проблемами дублирования пакетов. Кто-нибудь знает, что такое "дублирование пакетов"? Это то же самое, что и повторная передача пакетов при обнаружении потери в TCP?

2 ответов


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

потеря пакетов и дублирование-проблема, связанная с ненадежными протоколами, ориентированными на дейтаграмму, как UDP. В UDP при отправке дейтаграммы это может прибыть дублированным, не по порядку или даже не прибыть вообще.

это то же самое, что и повторная передача пакетов при обнаружении потери в Протокол TCP?

да и нет. Предположим, что TCP использует внутренне механизм подтверждения для выявления недостающих данных, и автоматически retrasmit их. Таким образом, отсутствующие данные являются прозрачными для пользователя и обрабатываются самим протоколом.

кто-нибудь знает, что такое "дублирование пакетов"?

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

TCP ручки продублированы IP проблема с пакетами, поэтому вы не заботитесь о них.

UDP не обрабатывает их. Когда вы получаете дейтаграмму, это не гарантирует, что вы не получили ту же самую дейтаграмму раньше. Ты должен это проверить.


есть две вещи, которые вы могли бы означать дублирование пакетов: дублирование полезной нагрузки (отправляемых данных) или точный дубликат полезной нагрузки и заголовков. TCP попытается повторно отправить данные, для которых он не получает ACK (подтверждение от получателя, что пакет прибыл нормально). Однако это приводит к знаменитому "двух генералов " проблема, когда вы никогда не можете быть уверены в том, что данные действительно прибыли, или если вы просто не получили ACK, потому что пакет ACK был потерян. Приемник мог бы получить пакет, ответил ACK, но ACK был потерян. В этом случае отправитель будет считать, что пакет никогда не был получен, и отправить другой пакет с такой же полезной нагрузкой дублируется. Из-за этого случая протоколы, такие как TCP, должны обрабатывать получение данных, отправленных несколько раз. В этом случае ответ " да " - это одно и то же.

второе, что дубликаты пакетов могут означать фактический 100% дубликат пакета (полезная нагрузка и заголовки.) Это может произойти из-за ошибок в программном обеспечении, оборудовании или проблемах маршрутизации или неправильных конфигураций. В этом случае нет, это несколько другая проблема, чем TCP intentially отправку новых пакетов с одинаковыми грузоподъемностью от обнаружения потери пакетов. В этом случае отправитель отправил только один пакет, но он был дублирован где-то по пути маршрутизаторами или аппаратными интерфейсами.