Рубрика «udp»

Лаги в играх бывают по многим причинам, но две основные, как правило: недостаточно мощный компьютер и проблемы с сетью в случае онлайн-игр.
 
Что мешает нормально поиграть, почему фризитлагает и как улучшить ситуацию? Универсальные советы как для игроков через облачную платформу, так и в принципе для любителей онлайн-игр на ПК — в ликбезе от Алексея Лыкова.

Алексей Лыков, технический директор Playkey: Немного матчасти. Любой трафик состоит из пакетов, пересылаемых по сети. И в зависимости от качества сети некоторые пакеты могут теряться.
 
В пакете идет определенный сигнал. Когда пакет теряется, то два узла, взаимодействующих между собой (например, два сетевых коммутатора: на стороне игрока и на стороне сервера онлайн-игры), должны решить проблему с потерей информации. Образно их «общение» выглядит так:
 
Как улучшить качество сети, из-за чего лагают онлайн-игры и почему лучше не использовать для стримов Wi-Fi или 4G? - 1
 
Чем больше потерь, тем больше таких запросов от получателя до отправителя.
 
И что в итоге? Допустим, кадр состоит из нескольких пакетов. Приходят на компьютер 10 из 10 пакетов, кадр собирается и отображается. Пользователю клёво. Но если из 10 пакетов пришло 9, то картинка собраться не может.
Или, возможно, она соберется с какими-то артефактами. Мы называем это «рассыпанием» картинки. Вот как это выглядит в одном из худших случаев:
 
Как улучшить качество сети, из-за чего лагают онлайн-игры и почему лучше не использовать для стримов Wi-Fi или 4G? - 2
 

Что же происходит в сети?

Читать полностью »

Задержка в онлайн-трансляциях с веб-камеры, бессердечная ты стерва - 1

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

Далее мы покажем что происходит с задержкой на примере реализации WebRTC и как при использовании WebRTC удается сохранить задержку на низком уровне, пригодном для комфортного общения.Читать полностью »

Юный оператор нагрузочного сервера Titanium получил два года тюрьмы - 1

Среди представителей киберпреступного мира иногда попадаются очень юные таланты, которые не просто хотят заработать деньги, но в своём возрасте обладают высоким интеллектом и недюжинными способностями к программированию. Например, британский юноша Адам Мадд (Adam Mudd) пять лет назад открыл удобный веб-сервис для запуска стресс-тестов: нагрузочный сервер (стрессер) Titanium. Cервер работал в автоматическом режиме и запускал стресс-тесты по произвольному адресу, который указал клиент. Для новых клиентов предлагалось несколько бесплатных демонстрационных сеансов. Вы могли «завалить» какой-нибудь сайт просто для теста. Но в бесплатном режиме атака длилась только 60 секунд.

Суть в том, что «стрессер» якобы не делает ничего противозаконного. Здесь не используются чужие компьютеры, как в случае с DDoS. Это обычный Linux-сервер, подключенный по толстому каналу. Его задача — максимально нагрузить сервер жертвы с помощью стандартных запросов. Но в реальности такая активность всё-таки нарушает законодательство, потому что злоумышленник ставит целью вывести из строя сервер жертвы или нарушить его работу.
Читать полностью »

Браузерная WebRTC трансляция с RTSP IP-камеры с низкой задержкой - 1

По некоторым данным, на сегодняшний день, в мире установлены сотни миллионов IP-камер для видеонаблюдения. Однако далеко не для всех из них критична задержка в воспроизведении видео. Видеонаблюдение, как правило, происходит «статично» — поток записывается в хранилище и может быть проанализирован на движение. Для видеонаблюдения разработано множество программных и аппаратных решений, которые хорошо делают свою работу.

В данной статье мы рассмотрим немного другое применение IP-камеры, а именно применение в онлайн-трансляциях, где требуется низкая коммуникационная задержка.
Читать полностью »

Введение

В 2017 году большинство популярных веб-игр типа agar.io использует для передачи данных WebSockets через TCP. Если бы в браузерах был встроенный UDP-аналог WebSockets, то это бы сильно улучшило работу с сетями в этих играх.

Вводная информация

Работа веб-браузеров основана на протоколе HTTP (протоколе запросов и ответов без сохранения состояния). Первоначально он был предназначен для обслуживания статичных веб-страниц. HTTP работает поверх TCP, низкоуровневого протокола, гарантирующего надёжную доставку и правильный порядок передаваемых по Интернету данных.

Всё это отлично работало многие годы, но недавно веб-сайты стали более интерактивными и перестали отвечать парадигме «запрос-ответ» протокола HTTP. Для решения этой проблемы изобретены современные веб-протоколы, такие как WebSockets, WebRTC, HTTP 2.0 и QUIC, имеющие потенциал значительного улучшения интерактивности сети.

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

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

image

Сегодня компания «Ростелеком» сообщила об отражении атаки ботнета «интернета вещей» на пять крупнейших российских банков. Атака проводилась 5 декабря с использованием TCP SYN Flood. По информации «Ростелекома» пиковая нагрузка составляла 3,2 миллиона пакетов в секунду.

Каких-либо деталей, кроме того, что часть трафика генерировалась с IoT-устройств, провайдер не предоставил. Также была предоставлена общая информация об опасности DDoS-атак и о том, кто уже пострадал от действия злоумышленников, управляющих ботнетами из «интернета вещей». В целом, пресс-релиз «Ростелекома» вызывает больше вопросов, чем ответов.
Читать полностью »

Основы компьютерных сетей. Тема №3. Протоколы нижних уровней (транспортного, сетевого и канального) - 1

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

От переводчика: У меня возникла необходимость разобраться с работой UDP-сокетов в неблокирующем режиме в java и создать свой собственный класс для работы с сетевыми соединениями на их основе. К сожалению, толковой русскоязычной документации на эту тему я не нашёл. Зато наткнулся на несколько попыток на хабре осветить тему создания надёжного соединения поверх UDP. В том числе и перевод нескольких статей Гленна Фидлера, сделанный пользователем bvasilyev. И хотя статьи рассматривают создание подобного подключения для применения его в играх (не совсем то, что мне необходимо), а также языком реализации является не java, а c++, они стали для меня отправной точкой. К сожалению bvasilyev около года назад прервал перевод данного цикла, а самое интересное осталось на языке оригинала. Поэтому я решил перевести четвёртую статью цикла и переписать реализацию виртуального соединения из третей статьи цикла на java (чуть позже выложу). Ну а для того, чтоб данной статьёй мог воспользоваться кто-либо, кроме меня, выкладываю её здесь. Профессиональным переводом, к сожалению, никогда не занимался, всегда изучал англоязычную документацию. Но в данном случае, из-за многочисленного употребления некоторых слов в совершенно различных значениях, а также в роли наименования всевозможных определений, неоднократно — в пределах одного предложения, счёл более целесообразным осуществить перевод, а после уже работать с текстом на привычном для себя языке. Поправки и аргументированные предложения приветствуются.

Первая статья
Вторая статья
Третья статья

(напомню: переведены bvasilyev)


Надежность, упорядочивание и избежание перегрузок поверх UDP

Вступление

Привет, меня зовут Гленн Фидлер и я приветствую вас в своей четвёртой статье из цикла “Сетевое программирование для разработчиков игр”.

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

Теперь мы будем добавлять надёжность, упорядоченность и предотвращение перегрузок к нашему виртуальному UDP соединению.

Это, безусловно, самая сложная часть низкоуровневой сетевой работы в играх, так что эта статья будет весьма насыщенной, поэтому пристегнулись и поехали!

Проблемы с TCP

Те из вас, кто знаком с TCP, знают, что он уже имеет свою внутреннюю концепцию соединений, с надёжной и упорядоченной системой передачи пакетов и предотвращением перегрузок, так зачем же мы пишем свою собственную мини версию TCP на основе UDP?
Читать полностью »

io ninjaДанная статья является продолжением предыдущей, вводной статьи, в которой речь шла о мотивации и истории создания терминала/сниффера IO Ninja, и было немного рассказано про встроенные возможности нашего продукта. Продолжим рассказ о том, что доступно «из коробки», но с более практическим уклоном.

IO Ninja изначально задумывалась как утилита типа «всё-в-одном», и в комплект поставки входит большое количество встроеных плагинов для работы со всеразличными транспортами в разных режимах. Однако вместо сухого перечисления списка плагинов и их возможностей я решил продемонстрировать маленькую выборку задач из жизни, с которыми в нашей компании сталкивались на практике, и с которыми общеизвестные терминалы и мониторы справляются хуже, чем IO Ninja (а чаще не справляются вообще).
Читать полностью »

ioninjaПриветствую вас, уважаемыее!

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

Разговор пойдёт про программируемый терминал/сниффер IO Ninja (здесь и далее я буду опускать слово «эмулятор» и говорить просто «терминал»). Подозреваю, что само определение «терминал/сниффер» может выглядеть достаточно непривычно, если не сказать странно. Поэтому начнём с истории возникновения IO Ninja.
Читать полностью »