И все таки что же лучше для мобильных устройств TCP или UDP?

Хотелось бы услышать мнения о плюсах и минусах обоих протоколов применительно к мобильным устройствам, например таким как GPS трекер, которые используют мобильные сети (чаще GPRS) для передачи информации.

UPD: Что будет с нагрузкой на сервер в случаях применения того или иного протокола?
  • Вопрос задан
  • 5971 просмотр
Пригласить эксперта
Ответы на вопрос 5
@agmt
Читаем их описание в википедии. Думаем, что есть GPS. Понимаем, что он должен как можно чаще слать мало информации, но если какая-то часть информации потеряется, то и хрен с ней — она уже не актуальна.
Ответ написан
UDP имеет смысл использовать в таких случаях:
1. На сервер будет отправлен единственный запрос и будет получен единственный ответ, который уберется в один пакет (передать данные проще чем установить TCP-соединение)
2. Идет поток данных в реальном времени, при этом в случае потери или задержки сетевого пакета, лучше вообще потерять эти данные чем заново отправлять (TCP соединение будет только мешать)
3. Планируются мультикастные реализации для этого протокола (TCP в принципе не годится)

Во всех остальных случаях лучше использовать TCP
Ответ написан
@rustler2000
погромист сикраш
Не зависит от терминала. Зависит от «приложения».
С TCP не получите ping/rtt, но легче «горизонтально» масштабировать сервера.
С UDP легче адаптироваться под реально плохие каналы, избежать чудес билинга(за перепосылку данных вам платить но сколько данных не дошло на TCP знает только его стэк), но будут сложности с прокси и nat.

Если о gps трекере, то яб делал на UDP. Накапливаеш трек, и когда данных под завязку для MTU (тут есть нюансы но для трэкера их можно не учитывать) отправляешь на сервер. Сервер же молчит пока не заметит дыры в треке (или раз в н пакетов или м минут) делает запрос на повтор интервала/ов. Клиент очищает пересылает данные и очищает трэк вплоть до первого запрашиваемого интервала(фактически это ACK).
Если надо лаг уменьшить (к примеру трэкер смотрят онлайн) то сервер просит трекер уменьшить «MTU» на х секунд (фактически это может быть полем в запросе на пересылку). На трэкере в трек писать и инфу о выключенном трэкере. Трэк хранить в файле исплльзуемом как ленту стримера, чтобы никаких fseek за исключением возврата в начало файла.
Ответ написан
С непрограммерской, но с логической точки зрения мне кажется, что если речь о передаче координат, то можно в пакете отправлять текущие и пару предыдущих. Таким образом будет достигнуто тройное резервирование от ошибок и не понадобится дополнительные протоколы создавать.

Извините, если ошибаюсь, лучше объясните где не прав.
Ответ написан
@tgz
Ну в мобильных то сетях сам бох велел sctp использовать :)
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы