2010-11-11 8 views
1

Предположим, что у вас уже есть ненадежный канал с потерями между двумя сверстниками. Какие методы вы можете предложить надежно передавать данные, а также без потери производительности? Также базовый протокол не TCP (который уже является надежным). (Я использовал с потерями канала обобщать вопрос.)Надежная передача данных по каналу с потерями

(AFAIK, некоторые методы существуют как РДТ (гк-908), Go Back-N.)

+0

Даже после того, как вы отредактировали сообщение о том, что вы не используете TCP, попробуйте имитировать поведение TCP на этом канале с потерями, и вы получите надежную передачу данных. – Poni

+0

Poni, я пытаюсь выяснить другие протоколы уровня приложения. – whoi

ответ

1

http://en.wikipedia.org/wiki/Transmission_Control_Protocol#Reliable_transmission

Потому что кто-то уже решил проблему и есть библиотека (TCP/IP) или десять, которая делает это на каждом существующем языке.

Это вопрос философии?

+0

+1 простой, но очень правильный ответ. Больше ничего не нужно. Я рекомендую whoi полностью прочитать спецификации и понять, почему каждый бит в заголовке TCP на самом деле существует. Вы получите ответ очень быстро. – Poni

+0

Ну, да, действительно, весь стек TCP можно прочитать, и можно снова открыть этот метод. Но вместо того, чтобы внедрять TCP, я сказал, что есть и другие методы. То, что я прошу, действительно на уровне приложений, а не протокола. – whoi

+0

Достаточно честный. Я бы рекомендовал искать научные статьи по этой теме, в обычных местах, таких как IEEE. В WLAN-технологии должно быть много возможностей. –

0

Без потери производительности обычно означает уменьшение зависимости от обратного канала от приемника, отправляющего ACK к отправителю. Обычно это означает настраиваемый протокол с использованием дейтаграмм и использование некоторой формы коррекции прямой ошибки (FEC). Обратите внимание, что FEC - это скользящая шкала, которая часто может быть значительным снижением производительности, поскольку, по определению, вы предварительно отправляете дополнительные избыточные данные, чтобы получатель не требовал ее.

http://en.wikipedia.org/wiki/Forward_error_correction http://udt.sourceforge.net/

0

Как Steve-O сказал, FEC и, как Kdansky предложил ретрансляцию, являются хорошими отправными точками. Основным узким местом Retransmission является время туда и обратно, что вызывает задержку получения потерянного пакета. Тем не менее, FEC является совершенно другим предметом и применим на уровне пакета. Как снова сказал Стив-о, узкое место становится превышением пропускной способности, которое вы вызываете, создавая избыточный поток. Хотя это выглядит так просто, различные схемы FEC, такие как Parity FEC, Reed-Solomon, Turbo коды, Raptor Q и т. Д., Оказывают различное влияние на задержку, пропускную способность и т. Д. В соответствии с их параметрами. (В основном, по скорости кодирования, которую вы используете для генерации избыточного потока)

Смежные вопросы