Рубрика «network»

P2P-форум с нуля | от NAT hole punching до автономной и полностью децентрализованной сети - 1


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

У NAT есть киллер-фича — он представляет собой идеальный фаервол: атаки извне не могут использовать порты локальных устройств напрямую, следовательно, это решает проблему атак на сетевую уязвимость ОС.

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

Разнообразные сервисы работают на серверах, т. е. имеют некую ноду, которая имеет белый адрес в интернете (находится не за NAT). Все пользователи же подключаются к этому единому серверу. В таком случае проблема «невидимости» пользователей отпадает. Однако чисто серверное взаимодействие ограничивает скорость участников, так ещё и не отказоустойчиво. Если сервер упадёт, то все клиенты отправятся за ним (считаем, что это одноклеточный сервис не на всяких там kubernetes).

Как вы уже могли были догадаться, даже в реалиях, когда практически все устройства находятся за NATами, P2P реален. Когда вы являетесь участником bittorrent-раздачи, трансфер больших данных осуществляется напрямую. Как это работает? Поиск ответа на этот вопрос завёл меня в глубокие дебри, разгребая которые я написал оверлейную p2p-сеть, где трекерами являются сами её участники. Интересно? Тогда добро пожаловать под кат.Читать полностью »

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

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

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

Динамическая маршрутизация на основе FRRouting - 1

Меня зовут Евгений, я занимаюсь развитием сетевой инфраструктуры в Домклик. Сегодняшняя статья будет охватывать только применение динамической маршрутизации на основе FRRouting (FRR), но, возможно, в будущем я напишу продолжение о том, как конфигурировать другое оборудование, которое вы встретите в тексте.

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

Всем привет, я — Сергей Бобрецов, CTO в Wildberries. 

Сегодня Wildberries — самый большой маркетплейс в России и мы так часто заняты повседневным хайлоадом, что не всегда успеваем рассказать что за всем этим стоит: какие технологии и решения под капотом, как мы справляемся с адом черной пятницы и ужасами киберпонедельника.

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

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

  • Искусственные нейроны

  • Весы(weights) и смещения(biases)

  • Активационные функции(activation functions)

  • Слои нейронов(layers)

  • Реализация нейронной сети на Java

Раскрывая нейронные сети

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

Введение

Компания, в которой я работаю, пишет свою собственную систему фильтрации трафика и защищает с помощью нее бизнес от DDoS-атак, ботов, парсеров, а также многого другого. В основе продукта лежит такой процесс, как реверсивное проксирование, с помощью которого мы в реальном времени анализируем большие объемы трафика и, в конце концов, пропускаем только легитимные пользовательские запросы, отсеивая все вредоносные.

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

Реверсивное проксирование

Давайте вернемся к реверсивному проксированию и посмотрим, как можно реализовать его на C++ и boost.asio. В первую очередь нам понадобятся два объекта под названием серверная и клиентская сессии. Серверная сессия устанавливает и обслуживает соединение с браузером, клиентская устанавливает и обслуживает соединение с сервисом. Также вам понадобится потоковый буфер, инкапсулирующий внутри себя работу с памятью, в которую происходит чтение из сокета серверной сессии и из которой происходит запись в сокет клиентской сессии. Примеры серверных и клиентских сессий можно найти в документации к boost.asio. Как работать с потоковым буфером можно подсмотреть там же.
Читать полностью »

Визуализация больших графов для самых маленьких - 1
Что делать, если вам нужно нарисовать граф, но попавшиеся под руку инструменты рисуют какой-то комок волос или вовсе пожирают всю оперативную память и вешают систему? За последние пару лет работы с большими графами (сотни миллионов вершин и рёбер) я испробовал много инструментов и подходов, и почти не находил достойных обзоров. Поэтому теперь пишу такой обзор сам.
Читать полностью »

Chaos Constructions 2019

24-25 августа, традиционно в последние выходные лета, в Санкт-Петербурге пройдет компьютерный фестиваль Chaos Constructions 2019. На конференции в рамках фестиваля вашему вниманию будут представлены более 60 докладов на разные тематики.

  • Безопасность
  • Администрирование
  • Программирование
  • Разработка игр и другие

.

Изначально фестиваль был посвящен демосцене, а те компьютеры, которые теперь ретро, были самыми современными. Все началось в 1995 году с фестиваля ENLiGHT, который был организован Петром Соболевым (frog). В те годы толком не было ни системного администрирования, ни интернета, первые программисты создавали код, который выводил звуки и анимацию. Первопроходцы собирались раз в год под одной крышей показать свои работы и поделиться кодом, который и сейчас доступен для просмотра и изучения на http://ftp.cc.org.ru, где можно посмотреть работы за все эти годы. Из демопати ENLiGHT вырос компьютерный фестиваль Chaos Constructions. В 1999 году мероприятие впервые проходило под новым именем, постепенно на фестивале появилась выставка из коллекций энтузиастов. Сейчас эта выставка известна как объединение RTS, вы можете посещать её в разных городах России и на крупнейших фестивалях, и на небольших мероприятиях.
image
Читать полностью »

Сегодня мы рассмотрим протокол BGP. Не будем долго говорить зачем он и почему он используется как единственный протокол. Довольно много информации есть на этот счет, например тут.

Итак, что такое BGP? BGP — это протокол динамической маршрутизации, являющийся единственным EGP( External Gateway Protocol) протоколом. Данный протокол используется для построение маршрутизации в интернете. Рассмотрим как строится соседство между двумя маршрутизаторами BGP.

My Image
Рассмотрим соседство между Router1 и Router3. Настроим их при помощи следующих команд: Читать полностью »

Здравствуйте, читатели. Сегодня я хочу рассказать о том, как написать свой простенький NTP клиент. В основном, разговор зайдет о структуре пакета и способе обработки ответа с NTP сервера. Код будет написан на питоне, потому что, как мне кажется, лучшего языка для подобных вещей просто не найти. Знатоки обратят внимание на схожесть кода с кодом ntplib — я «вдохновлялся» именно им.
Читать полностью »


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js