ВходНаше всё Теги codebook 无线电组件 Поиск Опросы Закон Пятница
19 апреля
980769
Evgeny_CD, Архитектор (22.02.2020 16:05, просмотров: 1748)
[TCP/IP стек с расширенным прикладным API] Концепт-идея http://caxapa.ru/976411.html
Пусть у нас есть сотовый модем с не очень качественной связью. Типовая ситуация: -- в сокет пришла пачка IP пакетов -- один посредине сгинул по дороге -- стек послал запрос на потерянное, но оно где-то в пути. -- при обычном интерфейсе для прикладухи это выглядит как "стек замер". И х.з. что он там творит. В свое время при для телематических устройств придумали способ открывания нового соединения с сервером на новый сокет при наличии такого "замирания" (старое соединение сервер закрывал по тайм ауту). Опытным путем подобрали задержки, при которых был разумный баланс между расходом трафика и надежностью соединения. Эффект получился удивительный. Наш бортовой телематический блок мог обмениваться с сервером по GPRS в условиях, когда голосовая связь была неустойчива. Качать архивы логов со скоростью пусть и 50 байт/сек, но качать. Как мы уже выясняли, именно TCP у сотовиков живет лучше, чем UDP, по причине NAT. Т.е. строго говоря, когда UDP пакеты ходят, это скорее чудо, а не правило. Пусть у нас есть продвинутое кодирование типа -> И наши пакеты достаточно короткие, чтобы точно влазить в IP пакет даже при малом MTU. Значит, если наши пакеты достаточно короткие, то анализируя пакеты после похеренного, мы сможем не потерять то, что было после потерянного. Далее пусть первый TCP коннект работает как ему положено, но, зная точно, что потерялось, мы открываем новый коннект, и четко спрашиваем что надо. Придет дубликат по первому коннекту - выкинем. Долго нет пакетов по первому коннекту - закрываем. Первый коннект ожил - второй закрываем. В результате: -- имеем минимально возможный расход ресурсов канала. -- если применить метод RAID-1 (XOR двух пакетов есть третий пакет, наши пакеты, не IP, можно потерять один любой из трех), то часть перезапросов можно отменить. Сложность работы стека будет выше, это да. Кодить надо очень аккуратно, чтобы ни одна ветвь из весьма ветвистого графа работы не зависла. Но и преимущество может быть существенным. Мнения бедуинов?