Введення
У 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. Протоколи нижніх рівнів (транспортного, мережевого і канального)


Вітаю всіх читачів. Тепер настав час поговорити про протоколах, що знаходяться на нижніх рівнях. У цій статті будуть розібрані протоколи канального, мережного та транспортного рівнів. Сідайте зручніше і читайте на здоров'я.

Читати далі →

Brubeck — швидкий, statsd-сумісний агрегатор метрик від GitHub



Історія появи

Однією з головних цілей команди розробників GitHub завжди була висока продуктивність. У них навіть існує приказка: «it's not fully shipped until it's fast» (продукт вважається готовим тільки тоді, коли він працює швидко). А як зрозуміти, що щось працює швидко чи повільно? Потрібно міряти. Вимірювати правильно, надійно вимірювати, виміряти завжди. Потрібно стежити за вимірами, візуалізувати різні метрики, тримати руку на пульсі, особливо, коли маєш справу з високонавантаженими онлайн системами, такими як GitHub. Тому метрики — це інструмент, що дозволяє команді надавати настільки швидкі і доступні сервіси, майже без даунтаймов.

У свій час GitHub одними з перших запровадили у себе інструмент під назвою statsd від розробників з Etsy. statsd — це агрегатор метрик, написаний на Node.js. Його суть полягала в тому, щоб збирати всілякі метрики й агрегувати їх на сервері, для подальшого збереження в будь-якому форматі, наприклад, Graphite у вигляді даних на графіку. statsd — це хороший інструмент, побудований на UDP сокетах, зручний у використанні як на основному Rails додатку, так і для збору найпростіших метрик, на зразок виклику nc-u. Проблема з ним почала виявлятися пізніше, у міру зростання кількості серверів та метрик, які надсилаються в statsd.
Читати далі →

Все, що нажито непосильною працею. Про використання безкоштовної версії Arcserve UDP в побуті



Завжди неприємно, включивши комп'ютер, зрозуміти, що жорсткий диск, на якому зберігалися важливі дані і улюблені фотографії за кілька останніх років, більше не подає ознак життя. Або усвідомити, що ноутбук, необачно залишений в багажнику автомобіля на хвилинку, зник, забравши з собою роботу останніх місяців.

Рецепт від таких неприємностей придуманий давно: зберігайте дані в кількох примірниках у різних місцях (ДВА портсигари золотих, ДВІ кінокамери імпортних,… ). Природно, вручну робити копії даних – це не наш метод. По-перше, лінь. По-друге, можна забути, що копіював, а що не копіював. І коли це робив востаннє.

За нас ці турботи можуть взяти на себе програми резервного копіювання. Але вони коштують грошей (які на софт для домашнього комп'ютера взагалі витрачаються зі скрипом), або, будучи безкоштовними, можуть раптом припинити свій розвиток і взагалі існування.

Не так давно список безкоштовних коштів резервного копіювання даних для персональних комп'ютерів поповнився ще одним продуктом Arcserve UDP. Точніше, його безкоштовною редакцією для робочих станцій (читай – для комп'ютерів з Windows 7, 8, 8.1 ). Отримуємо продукт промислового якості, але зі злегка урізаною функціональністю. Забігаючи вперед, скажу, що урізано те, що вдома взагалі навряд чи може знадобитися.

Оскільки з цим продуктом (в попередніх реінкарнації) я знайомий давно, дозволю собі розповісти про те, як з його допомогою захистити свої домашні дані від втрати.

Читати далі →

IO Ninja - програмований емулятор терміналу/сніффер (частина 2)

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

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

Читати далі →

IO Ninja - програмований емулятор терміналу/сніффер

ioninjaВітаю вас, шановні хабровчане!

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

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

Читати далі →

Пишемо багатокористувацький чат на C# за 15 хвилин



З# настільки ж безглуздий мова, наскільки і простий. А він настільки простий, що чат на кілька персон з мінімальною захистом пишеться в ньому за п'ятнадцять, ну, максимум тридцять хвилин. У нас це зайняло трохи більше двох діб, але тут вже проблема дурнів, а не інструментів.

Оформимо завдання: ми хочемо зробити децентралізований груповий чат з якоїсь захистом. Для такої «великої» завдання нам знадобиться всього нічого: C# (можна навіть використовувати неправославный MonoDevelop) з його чарівним .NET Framework'ом.

Спочатку напишемо частина відправки і прийому повідомлень. Проблема полягає в тому, що треба якось розібратися з відправкою повідомлень декільком клієнтам. Це зробити досить складно, незнайомим з мережами в голову відразу приходять всякі брудні думки а-ля: зберігати всі айпишники, які коли-небудь надсилали на повідомлення, або там організувати який-небудь хитрий граф між користувачами. Як правило, проблема вирішується, якщо подивитися на неї з боку: а навіщо нам використовувати TCP, коли є UDP?

Читати далі →

UDP і C# Reactive Extensions

Нещодавно прочитав пост про UDP і C# async/await, у якій опис розв'язання нескладної задачі за опитуванням пристроїв по UDP одним клієнтом. Рішення задачі за допомогою async\await дійсно скорочує обсяг коду, в порівнянні з ручною реалізацією асинхронних викликів. З іншого боку створює багато проблем з синхронізацією завдань, конкурентним доступом до даних та обробкою виключень. Отримане рішення дуже схильний до помилок. Первісна версія автора містила помилки незвільнення ресурсів.

Можна зробити простіше і надійніше?

Читати далі →