ilyachalov (ilyachalov) wrote,
ilyachalov
ilyachalov

Categories:

Стратегии подтверждений при передаче файла

Вопрос из книги Таненбаума про компьютерные сети к главе 1 «Введение», цитата:

20. При передаче файла между двумя компьютерами возможны (как минимум) две стратегии подтверждений. В первом случае файл может быть разбит на отдельные пакеты, получение которых подтверждается получателем индивидуально, но получение всего файла не подтверждается. Во втором случае получение каждого пакета не подтверждается, а подтверждается получение всего файла. Обсудите оба варианта.


При передаче по сети любые данные (в том числе какой-нибудь файл) разбиваются на пакеты (блоки данных), размер каждого из которых может составлять сотни или тысячи байт. Тут подробнее:
https://ru.wikipedia.org/wiki/Пакет_(сетевые_технологии)

Каждый пакет содержит некие служебные данные (например, адрес хоста-получателя) и кусочек данных, которые изначально хочет передать хост-отправитель. Служебные данные обычно в пакете помещаются в начале пакета (заголовок пакета) и в конце пакета (хвост пакета), а между ними помещается кусочек передаваемых данных (в нашем случае — кусочек передаваемого файла).

Пакеты по сети могут передаваться с подтверждениями, где подтверждение представляет из себя очень маленький пакет, отправляемый по сети хостом-получателем хосту-отправителю. Это что-то вроде сигнала, который дает понять хосту-отправителю, что отправленный им пакет получен хостом-получателем успешно.

Также пакеты по сети могут передаваться без подтверждений. С одной стороны, такой метод делает передачу ненадежной (пакеты могут теряться в процессе передачи, не доходить до хоста-получателя), но, с другой стороны, такой метод уменьшает дополнительные расходы (по-английски «overhead») на передачу (хосту-получателю не нужно тратить вычислительные ресурсы на отправку подтверждений, а хосту-отправителю не нужно тратить вычислительные ресурсы на обработку подтверждений) и задержки при передаче (хосту-отправителю не нужно тратить время на ожидание подтверждения, прежде, чем отправлять следующий пакет). Этот метод выгодно применять, к примеру, при передаче по сети мультимедиа в реальном времени (IP-телефония или видеоконференция): в этом случае потери некоторых пакетов не слишком важны, а ликвидация задержек — важна.

При передаче файлов, очевидно, потеря даже одного бита файла является недопустимой. К примеру, если файл является исполняемым, то при потере какого-нибудь бита в этом файле этот файл, скорее всего, не запустится на выполнение. Потеря же любого пакета (который, как указано выше, может содержать сотни или тысячи байт) при передаче файла тем более является недопустимой. То есть при передаче по сети файла подтверждения необходимы.

Итак, у нас есть две стратегии подтверждений при передаче файла. Они описаны в задании. У каждой из них есть свои плюсы и минусы. Их следует учитывать при выборе одной из этих стратегий.

При первой стратегии хост-получатель отправляет подтверждение о получении каждого пакета, а хост-отправитель ожидает от хоста-получателя подтверждения получения каждого из отправленных пакетов. При второй стратегии хост-получатель отправляет лишь одно подтверждение — после получения всех пакетов, на которые был разбит передаваемый файл.

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

Преимущество второй стратегии над первой: очевидно, что отправка только одного подтверждения уменьшает дополнительные расходы на отправку и задержки на ожидание подтверждений.

Получается, что если в данной сети высока вероятность потери пакетов, то лучше использовать первую стратегию (подтверждение получения каждого пакета). Если же данная сеть достаточно надежна, то использование второй стратегии (только одно подтверждение о получении всего файла целиком) уменьшит нагрузку на канал (но потребует переотправки файла заново при потере даже одного-единственного пакета).
Tags: Образование
Subscribe

  • Post a new comment

    Error

    Anonymous comments are disabled in this journal

    default userpic

    Your IP address will be recorded 

  • 0 comments