Введення
У 2017 році більшість популярних веб-ігор типу agar.io використовує для передачі даних WebSockets через TCP. Якби в браузерах був вбудований UDP-аналог WebSockets, то це б значно поліпшило роботу з мережами в цих іграх.

Вступна інформація
Робота веб-браузерів заснована на протоколі HTTP (протоколі запитів і відповідей без збереження стану). Спочатку він був призначений для обслуговування статичних веб-сторінок. HTTP працює поверх TCP, низькорівневого протоколу, гарантує надійну доставку і правильний порядок переданих по мережі даних.

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

На жаль, новий комплект стандартів веб-розробки не відповідає потребам багатокористувацьких ігор або занадто складний у реалізації.

Це викликає розчарування у розробників ігор, адже вони просто хочуть мати можливість відправляти і приймати UDP-пакети через браузер.

Читати далі →

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

Ці проблеми виникли через вибору архітектури, який був зроблений при створенні системи регулювання заторів TCP у 80-ті роки — тоді втрату пакетів вирішили інтерпретувати як «затор». [13] Еквівалентність цих понять була справедливою для того часу, але тільки із-за обмежень технології, а не за визначенням. Коли NIC (контролери мережевих інтерфейсів) модернізували з мегабітних до гігабітних швидкостей, а мікросхеми пам'яті — з кілобайт до гігабайт, до зв'язок між втратою пакетів і заторами стала менш очевидною.

У сучасному TCP регулювання заторів по втраті пакетів — навіть в найбільш досконалої технології такого роду CUBIC [11] — основна причина цих проблем. Якщо буфери вузьких місць занадто великі, то система регулювання заторів по втраті пакетів тримає їх повними, викликаючи надмірну мережеву буферизацію. Якщо буфери занадто маленькі, то система регулювання заторів по втраті пакетів невірно інтерпретує втрату пакета як сигнал затору, що веде до зниження пропускної здатності. Рішення цих проблем вимагає альтернативи регулювання заторів по втраті пакетів. Для знаходження цієї альтернативи слід розібратися, де і як виникають затори.

Читати далі →

Обмеження швидкості передачі трафіку. Policer або shaper, що використовувати в мережі?


Коли мова заходить про обмеження смуги пропускання на мережевому обладнанні, в першу чергу в голову приходять дві технології: policer і shaper. Policer обмежує швидкість за рахунок відкидання «зайвих» пакетів, які призводять до перевищення заданої швидкості. Shaper намагається згладити швидкість до потрібного значення шляхом буферизації пакетів. Дану статтю я вирішив написати після прочитання примітки в блозі Івана Пепельняка (Ivan Pepelnjak). В ній вкотре піднімалося питання: що краще – policer або shaper. І як часто буває з такими запитаннями, відповідь на нього: все залежить від ситуації, так як у кожної з технологій є свої плюси і мінуси. Я вирішив розібратися з цим трішки детальніше, шляхом проведення нескладних експериментів. Отримані результати підкатом.
Читати далі →

Головоломки TCP


Кажуть, що не можна повністю зрозуміти систему, поки не зрозумієш її збої. Ще будучи студентом я заради забави написав реалізацію TCP, а потім кілька років працював в IT, але досі продовжую глибше і глибше вивчати роботу TCP — і його помилки. Найдивніше, що деякі з цих помилок проявляються в базових речах. І вони неочевидні. У цій статті я подарую їх як головоломки, в стилі Car Talk або старих головоломок Java. Як і будь-які інші хороші головоломки, їх дуже просто відтворити, але рішення зазвичай дивують. І замість того, щоб зосереджувати нашу увагу на загадкових подробиці, ці головоломки допомагають вивчити деякі глибинні принципи роботи TCP.

Читати далі →

Основи комп'ютерних мереж. Тема №3. Протоколи нижніх рівнів (транспортного, мережевого і канального)


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

Читати далі →

Security Week 33: відключення Secure Boot, сортування адресатів в GMail, наслідки TCP-бага в Linux

На цьому тижні по ландшафту загроз бурхливим потоком розлилась ріка політики. Тема безпеки і так політизована донезмоги, але якщо вам раптом здається, що вже якось забагато, то поспішаю вас засмутити. Все тільки починається. 13 серпня аноніми, які переховуються під псевдонімом ShadowBrokers, виставили на продаж арсенал інструментів, ймовірно, використовувалися в кибершпионской кампанії The Equation. Нагадаю, дослідження цієї атаки опубликовали у лютому минулого року експерти «Лабораторії», назвавши її «Зіркою смерті галактики шкідливого ПЗ». Було за що: вражає як тривалість кампанії (з 2001 року, а може і раніше), так і складність і широка функціональність інструментів для злому і крадіжки даних. Ну і технічний рівень заодно, аж до приміщення шкідливого коду в прошивку жорстких дисків.

Розпродаж влаштована за кращим стандартам комерційного діловодства: «шліть гроші, а ми подумаємо». Але крім обіцянок, в мережу був викинутий набір файлів, явно вирізаний з чиєюсь середовища розробки: трошки коду, трошки скриптів, документації і так далі. Якщо не вестися на поводу у ЗМІ, які весь тиждень обговорюють версії авторства витоку — те, що апріорі неможливо підтвердити фактами, про ShadowBrokers можна виразно сказати наступне. По-перше, імплементація алгоритмів шифрування RC5 і RC6 у витоку збігається з такою у The Equation. Це дозволяє з певною часткою впевненості говорити, що зв'язок між, строго кажучи, кодом, знайдені в мережі зараз і пару років тому, є. Детальніше з прикладами тут. По-друге, у витоку виявлені реальні уразливості в пристроях Cisco (дуже докладно написано у них в блозі і Fortinet.

Читати далі →

Public Text Chat Server

image
Дана стаття буде цікава людям, які цікавляться мережами, логічним пристроєм серверів і нативним програмуванням. Тут не буде довгих лістингів вихідних кодів, а лише загальні начерки і підходи.
TL;DR GitHub

Це як имиджборж тільки текстовий
Такий же текст, як і по більшій мірі цей пост.
Повертаючись до своєї дитячої мрії, мені захотілося зробити текстовий чат. Для мене це як один з варіантів збільшити кількість відсутніх api в бібліотеці, оскільки тільки таким шляхом розумієш по-справжньому, що необхідно програмісту, коли пишеш щось більш менш прикладне.


Читати далі →

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

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

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

Читати далі →

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

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

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

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

Читати далі →

Пишемо свій tcp-мультиплеєрний сервер

У цій серії статей хочу розповісти про те, як створити tcp мультіплєєрний сервер. Плюс до цього я хочу зробити його краще, ніж він їй зараз, і навчиться краще програмувати — за допомогою коментарів.

У цьому пості ми вивчимо, як підключитися до сервера, в наступному я планую розібратися з тим, як передавати цілісні пакети даних.

Насамперед треба створити рішення і 2 проекту в ньому. Два проекти — це, власне, сам сервер, а так само тести до нього. Першим ділом зробимо тести довірчої бібліотекою для сервера для доступу до internal c допомогою додавання в AssemblyInfo.cs строчк: [assembly: InternalsVisibleTo(«НАЗВА ПРОЕКТУ»)]. Так само додамо до проекту з тестами бібліотеку NUnit (це лише моя перевага). На цьому початкові приготування закінчені.

Читати далі →