<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:sy="http://purl.org/rss/1.0/modules/syndication/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/">
  <channel>
    <language>ru</language>
    <title>Сетевые протоколы</title>
    <description/>
    <link>https://tproger.ru/tag/network-protocols</link>
    <atom:link href="https://tproger.ru/tag/network-protocols/feed" rel="self" type="application/rss+xml"/>
    <lastBuildDate>Sat, 03 Oct 2026 20:21:45 GMT</lastBuildDate>
    <sy:updatePeriod>hourly</sy:updatePeriod>
    <sy:updateFrequency>12</sy:updateFrequency>
    <image>
      <title>Сетевые протоколы</title>
      <link>https://tproger.ru</link>
      <url>https://tproger.ru/apple-touch-icon.png</url>
    </image>
    <item>
      <title>Баги, которые не ловятся тестами: три расследования и общая методика</title>
      <link>https://tproger.ru/articles/bagi-kotorye-ne-lovyatsya-testami-tri-rassledovaniya-i-obshhaya-meto</link>
      <comments>https://tproger.ru/articles/bagi-kotorye-ne-lovyatsya-testami-tri-rassledovaniya-i-obshhaya-meto?scrollTo=tproger-comments</comments>
      <dc:creator><![CDATA[Tproger]]></dc:creator>
      <guid isPermaLink="true">https://tproger.ru/articles/bagi-kotorye-ne-lovyatsya-testami-tri-rassledovaniya-i-obshhaya-meto</guid>
      <description><![CDATA[<p>Три расследования редких дефектов: гонка в SQLite, потеря сообщений в TCP и гонки в биллинге. Разбираем общую методику поиска невоспроизводимых багов.</p><p>— Читать дальше «<a rel="follow" href="https://tproger.ru/articles/bagi-kotorye-ne-lovyatsya-testami-tri-rassledovaniya-i-obshhaya-meto">Баги, которые не ловятся тестами: три расследования и общая методика</a>»</p>]]></description>
      <category><![CDATA[Тестирование]]></category>
      <category><![CDATA[Сетевые протоколы]]></category>
      <category><![CDATA[Отладка]]></category>
      <category><![CDATA[Базы данных]]></category>
      <category><![CDATA[Баги и ошибки]]></category>
      <category><![CDATA[PostgreSQL]]></category>
      <category><![CDATA[Статьи]]></category>
      <slash:comments>0</slash:comments>
      <pubDate>Wed, 09 Sep 2026 09:00:45 GMT</pubDate>
      <content:encoded><![CDATA[<p>Есть класс дефектов, которые проходят весь конвейер проверок и всплывают только в продакшене. Объединяет их не сложность кода. В двух случаях виновата форма проверки, написанной вежливой там, где реальность к сервису вежлива не бывает; в третьем проверка не поймала бы дефект вообще.</p><p>Разбираем три расследования — пропавшую запись в базе, три процента сообщений, терявшихся только на чистой машине, и гонки в биллинге, которые видит одна поддержка. У всех трёх разные предметные области и одна общая методика поиска невоспроизводимых багов.</p><p>Отсутствие закономерности само по себе является находкой: если сбой не привязан ни к шарду, ни к клиенту, ни к времени суток, это указывает на гонку, а не на данные.</p><p>Когда воспроизвести дефект синтетически нельзя, остаётся пассивная телеметрия в продакшене и последовательное отсечение гипотез данными.</p><p>Счётчики на каждом слое находят виновника быстрее логов: разрыв между двумя соседними числами прямо называет слой, в котором теряются сообщения.</p><p>Вежливый тест, который шлёт запрос и ждёт ответа, скрывает целый класс ошибок пакетирования. Пачечный тест их обнажает.</p><p>Отсутствие ошибок не доказывает, что дефект исправлен. Доказательством служит положительный сигнал: сработавшее предупреждение о том, что опасные условия возникли, а сбоя при этом не случилось.</p><h2>Случай первый: запись, которой не могло не быть</h2><p>Управляющий слой Tailscale разбит на шарды, у каждого своя база SQLite, и обращается к ней ровно один процесс. Такой однописательный режим — именно то, для чего SQLite и предназначен, что делает дальнейшее особенно неприятным.</p><p>Резервное копирование снимало полную копию базы каждые несколько минут и складывало файл в объектное хранилище. Работало это без единого происшествия с начала 2023 года, пока конвейер, читавший резервные копии, не сообщил об ошибке. Проверка встроенной командой контроля целостности подтвердила худшее: база повреждена.</p><p>Первый случай сочли единичным. Базу починили, причину не нашли. Потом это повторилось. И ещё раз. Всего до устранения первопричины набралось <a href="https://tailscale.com/blog/sqlite-wal-reset-bug">19 отдельных инцидентов за полгода</a>, и каждый означал простой: процесс на шарде останавливался, пока базу чинили или восстанавливали. На ранних инцидентах простой превышал час, и всё это время у клиентов на шарде не работали консоль администратора и API.</p><h3>Почему он не поддавался обычным приёмам</h3><p>Дефект сопротивлялся всем стандартным подходам сразу:</p><ul><li>Не на что было списать: низкоуровневый код работы с базой никто не трогал годами, а внимательное чтение ничего не дало.</li><li>Не нашлось общих факторов. Повреждения не привязывались ни к конкретному шарду, ни к клиенту, ни к функции продукта, ни ко времени суток, ни к уровню нагрузки.</li><li>Он не воспроизводился синтетически. Надёжного триггера не было, поэтому оставалось только развернуть пассивную телеметрию в боевой среде и ждать следующего случая.</li></ul><p>Расписания у инцидентов тоже не было: они случались то через часы, то через недели. Между октябрём и декабрём наступила шестинедельная тишина, после которой повреждения вернулись.</p><p>Команда сделала два шага, которые и составляют суть этой истории. Купила контракт поддержки у разработчиков SQLite, получив прямой доступ к людям, написавшим саму базу. И методично составила список гипотез, отсекая их данными, а не рассуждениями. В списке были сломанные блокировки при закрытии файла, неверная работа с памятью, принадлежащей базе, и обращение из нескольких потоков при отключённой потокобезопасности. Каждый инцидент приносил данные, каждая гипотеза отпадала по очереди.</p><h3>Улика: транзакция, которой не стало</h3><p>Пока первопричину искали, платформу надо было держать живой. Команда автоматизировала жёсткую остановку при обнаружении повреждения, поставила монитор, непрерывно проверявший целостность резервных копий, и переписала инструкции по восстановлению. Время восстановления упало ниже часа.</p><p>А затем построила конвейер журналирования транзакций. Идея простая: писать каждый изменяющий базу запрос в отдельный журнал. Поскольку писатель один, а транзакции сериализуемы, история изменений линейна и детерминирована, и её можно проиграть поверх последней заведомо целой копии, обойдя повреждённые страницы. Приём годится там, где порядок фиксаций известен: при единственном писателе он получается сам собой. Наивный журнал запросов на многописательной базе этого не даёт, потому что конкурентные транзакции переплетаются и без явного порядка фиксаций проигрывание не восстановит то же состояние.</p><p>Конвейер сработал и выдал улику. В двух инцидентах журналы не проигрывались чисто: данные, записанные и зафиксированные одной транзакцией, оказывались необъяснимо невидимы для последующих. Запись исчезла бесследно и без единой ошибки.</p><p>Этого не может быть. В сериализуемой однописательной базе зафиксированная запись не может пропасть. Значит, виноват слой с достаточной конкурентностью, чтобы такое спрятать, а такой слой ровно один — контрольные точки.</p><h3>Шестнадцатилетняя гонка</h3><p>SQLite с журналом предзаписи работает с двумя файлами. База — это набор страниц; при изменении данных новые страницы пишутся не в основной файл, а сначала в журнал. Позже контрольная точка переносит их в базу. Обычно момент переноса SQLite выбирает сам, но Tailscale управляла контрольными точками вручную, чтобы снимать быстрые согласованные копии. Именно этот нестандартный, хотя и полностью документированный выбор и вывел их на дефект.</p><p>Метрики во время инцидентов показывали, что SQLite сообщает о переносе большего числа страниц, чем в журнале вообще было. Разработчики базы как раз готовили инструмент для этого слоя: обёртку над виртуальной файловой системой, которая пишет дополнительные трассировочные журналы. Обёртку развернули в продакшене, и ждать пришлось недолго.</p><p>Журналы показали редкую гонку данных (race condition) между контрольной точкой и пишущей транзакцией. Если запись происходит в определённый момент работы контрольной точки, та сбивается: считает часть страниц перенесёнными в основной файл, хотя перенос не состоялся. Данные теряются навсегда, а страницы, которые на них ссылаются, например индексные, записываются как ни в чём не бывало. Файл становится структурно повреждённым, что проверка целостности всё это время и фиксировала.</p><p>Дефекту дали имя по сбросу журнала предзаписи и оценили его возраст минимум в шестнадцать лет. Он прожил так долго именно из-за редкости, это классический heisenbug: чтобы поймать его в тестовой среде, разработчикам пришлось дописать код, вызывающий гонку намеренно.</p><h3>Ложная тревога, чуть не сорвавшая исправление</h3><p>Исправление вышло в версии 3.52.0, и Tailscale раскатывала его осторожно, начав с нескольких канареечных шардов. После общей раскатки монитор резервных копий немедленно покраснел, сообщив о повреждении в тринадцати базах.</p><p>Настоящего повреждения не было. В ту же версию попала оптимизация, слегка изменившая округление при переводе текста в число с плавающей точкой, а Tailscale хранила метки времени высокой точности текстом и превращала их в числа в вычисляемом столбце. Индекс по вычисляемому выражению перестал соответствовать новому результату вычисления, и проверка целостности честно назвала это повреждением. Канареечные шарды дефект пропустили просто потому, что на них не оказалось меток времени, попадающих под изменённое округление.</p><p>Разбирали это с трёх сторон сразу. Разработчики SQLite отозвали версию целиком и выпустили 3.51.3, содержавшую только исправление гонки. Tailscale перешла на хранение меток времени целыми секундами, поскольку перевод текста в целое число однозначен. А в 3.53.0 появилось автоматическое восстановление таких индексов, чтобы проблема не возникала впредь.</p><p><b>Главный урок этого эпизода:</b><br />Канареечная выкатка проверяет только те формы данных, которые в канарейке есть. Если на канареечных узлах нет тех же значений, что в проде, канарейка не подтверждает ничего. Это касается и обновлений самой базы, драйверов и инструментов миграции, а не только кода приложения.</p><h3>Как доказали, что дефект действительно исправлен</h3><p>Самая дисциплинированная часть расследования пришлась на финал. Отсутствие повреждений доказательством не считалось: команда уже пережила шесть недель обманчивой тишины. Поэтому драйвер базы пропатчили так, чтобы он выдавал предупреждение всякий раз, когда пишущая транзакция и сброс журнала пересекаются во времени.</p><p>Логика прямая: если предупреждение сработает, а база останется целой, значит, исправление сработало ровно там, где раньше был бы инцидент. Ждали два месяца. Предупреждение сработало, подтвердив, что условия для гонки в их среде действительно возникают. С того момента прошло ещё четыре месяца без единого происшествия с базами.</p><h2>Случай второй: три процента, терявшиеся только на чистой машине</h2><p>Второй сюжет проще по масштабу и полезнее в быту. Сервис представлял собой небольшой пересыльщик TCP: принять соединение, читать текстовые строки, передавать дальше. На тестовом стенде входило 97 004 строки, а выходило 94 183. Ни ошибок, ни исключений, просто пропавшие сообщения.</p><p>На ноутбуке автора всё воспроизводилось идеально: сто тысяч строк на входе, сто тысяч на выходе. Это расхождение и было первой уликой — тест проверял не то, что делает продакшен.</p><h3>Сменить машину раньше, чем код</h3><p>Первый час, по его собственному признанию, ушёл впустую: менялись и бинарник, и машина, и профиль нагрузки разом, а выводов это не давало. Дальше автор поменял ровно одну переменную: взял чистый сервер с тем же бинарником и тем же скриптом нагрузки. Потери появились снова, 97 128 строк из ста тысяч. Среда меняла вероятность проявления, но не сам факт дефекта, а чистая машина без истории и без накопленных настроек работает как микроскоп для ошибок синхронизации.</p><h3>Считать, а не логировать</h3><p>Дальше нужен был не ещё один прогон, а способ понять, на каком слое теряются сообщения. Логи рассказывают истории, счётчики складываются. Автор расставил счётчик на каждом слое: клиент считает отправленные строки, сервер считает разобранные переводы строки, сервер считает отправленные ответы, клиент считает полученные ответы. Один прогон, четыре числа, и разрыв между соседними прямо называет виновный слой.</p><p>Сервер разобрал всё до последней строки, а ответов отправил меньше, чем разобрал. Это отпечаток пальца конкретного дефекта, и дальше оставалось найти его в коде ответа.</p><h3>read() ничего не обещает про сообщения</h3><p>Виновником оказалась одна строка: сервер отправлял по одному ответу на каждое чтение, а не на каждую разобранную строку.</p><p>TCP — это поток байтов, а не очередь сообщений. Вызов чтения не имеет понятия о том, что такое одно сообщение в вашем протоколе. Ядро вправе слить десяток сообщений в один сегмент, и одно чтение заберёт все десять, а ответ уйдёт один.</p><p>Вежливый локальный тест отправлял сообщение, дожидался подтверждения и отправлял следующее. Одно сообщение на сегмент — дефект спал. Нагрузка на стенде шла пачками, тысячами сообщений в секунду, ядро их группировало, одно чтение проглатывало сотню строк.</p><p>Исправление переносит ответ внутрь цикла по строкам и накапливает остаток в буфере, чтобы пережить строку, разорванную между двумя чтениями. Это вторая половина того же семейства ошибок, и без неё починка неполная:</p><p><b>Вывод автора расследования:</b><br />Локальный тест это не нагрузочный тест, ноутбук это не сервер, а одно чтение из сокета это не одно сообщение.</p><h2>Третий сюжет: гонки, которые видит только поддержка</h2><p>Третий сюжет про биллинг кредитов на бессерверном Postgres, где транзакции по условиям задачи были недоступны. Автор наткнулся на четыре гонки, разберём две самые показательные. Все они, по его собственной формулировке, относятся к тому сорту дефектов, которые не показываются в тестах и показываются в почте поддержки.</p><h3>Классический двойной расход</h3><p>Наивная версия, которую пишут первой:</p><p>Два одновременных запроса читают баланс, равный пяти, оба проходят проверку, оба записывают четыре. Пользователь получил две операции по цене одной. Дефект существует ровно между чтением и записью, и последовательный тест в это окно не попадает никогда.</p><h3>Инвариант переезжает в условие запроса</h3><p>Общее решение — сделать проверку и запись одним оператором, перенеся условие корректности в WHERE:</p><p>Одиночный UPDATE в Postgres атомарен. Не хватило баланса — условие не совпало, вернулось ноль строк, и вы точно знаете, что списание не произошло. Транзакция для этого не нужна вовсе. Приём обобщается: перенесите инвариант в условие выборки, и запись просто не случится, когда инвариант нарушен.</p><h3>Вебхук, доставленный дважды</h3><p>Платёжные провайдеры повторяют доставку уведомлений при таймаутах, пятисотках и сетевых сбоях, а иногда дублируют событие и в штатном режиме. Если обработчик начисляет кредиты, доставка «хотя бы один раз» означает начисление хотя бы один раз.</p><p>Обычное решение с таблицей обработанных событий требует транзакции, а её нет: падение между двумя операторами либо начислит дважды при повторе, либо потеряет начисление совсем. Рабочий вариант в один оператор использует изменяющее данные обобщённое табличное выражение, где вставка в журнал операций работает воротами: не прошла вставка, значит, не выполнилось и обновление баланса.</p><p>Деталь, которую стоит забрать отдельно: уникальный индекс под эту схему должен быть частичным. Начисления от администратора приходят с произвольным идентификатором из скрипта, и глобальный уникальный индекс рисковал бы столкнуть их друг с другом или с идентификатором операции другого типа. Приветственные начисления идут вообще без идентификатора, и с ними коллизии не будет в любом случае: Postgres не считает два пустых значения равными. Ограничение индекса двумя типами операций от платёжного провайдера держит проверку уникальности ровно там, где она нужна.</p><h2>Что из этого складывается</h2><p>Первые два расследования дают общую методику поиска, и она изложена ниже. Третий случай стоит особняком: это не детектив, а набор приёмов, которые убирают целый класс гонок ещё на этапе проектирования, до того как искать станет нечего.</p><h2>Что забрать с собой</h2><p>Общего у трёх расследований больше, чем различий. Во всех трёх случаях проверка была написана в форме, которая не воспроизводит реальность: последовательный запрос вместо пачки, одиночный вызов вместо конкуренции, одна машина вместо двух. И во всех трёх дефект спокойно проходил через тесты, а в случае с SQLite прожил так шестнадцать лет.</p><p>Соседний сюжет про то, как тесты перестают отражать реальность, разбирали в материале о том, <a href="https://tproger.ru/articles/pochemu-statichnye-moki-ubivayut-testirovanie--i-chto-my-s-etim-sdel">почему статичные моки убивают тестирование</a>.</p><p>Полезнее всего здесь дешёвые привычки. Счётчик на границе каждого слоя ставится за час. Пачечный клиент пишется за вечер. Датчик, доказывающий исправление положительным сигналом, добавляется одной строкой в драйвер. Всё это стоит несопоставимо меньше, чем полгода расследования.</p><p>Три постмортема, на которых строится разбор: <a href="https://tailscale.com/blog/sqlite-wal-reset-bug">разбор Tailscale о поиске шестнадцатилетнего бага в SQLite</a>, <a href="https://dev.to/datacpp_3670/the-3-drop-that-only-showed-up-on-a-clean-server-a-debugging-retrospective-1g3c">ретроспектива потери трёх процентов сообщений</a> и <a href="https://dev.to/xiaojun_mao_c154743594bc9/credit-billing-without-transactions-4-race-conditions-i-hit-on-serverless-postgres-4730">четыре гонки в биллинге на бессерверном Postgres</a>.</p><p>Возьмите самый подозрительный сервис и запустите по нему пачечный тест вместо последовательного. Это самый дешёвый способ узнать, какой из ваших дефектов сейчас спит.</p>]]></content:encoded>
    </item>
    <item>
      <title>Tailscale выпустила tailcat: соединить две машины через NAT без аккаунта</title>
      <link>https://tproger.ru/news/tailscale-vypustila-tailcat-soedinit-dve-mawiny-cherez-nat-bez</link>
      <comments>https://tproger.ru/news/tailscale-vypustila-tailcat-soedinit-dve-mawiny-cherez-nat-bez?scrollTo=tproger-comments</comments>
      <dc:creator><![CDATA[Tproger]]></dc:creator>
      <guid isPermaLink="true">https://tproger.ru/news/tailscale-vypustila-tailcat-soedinit-dve-mawiny-cherez-nat-bez</guid>
      <description><![CDATA[<p>Tailscale открыла tailcat, CLI и Go-пакет, который соединяет две машины за NAT через WireGuard и DERP без аккаунтов и tailnet. Как это работает, для чего годится, чем отличается от ngrok, SSH-туннелей и обычного Tailscale, как установить.</p><p>— Читать дальше «<a rel="follow" href="https://tproger.ru/news/tailscale-vypustila-tailcat-soedinit-dve-mawiny-cherez-nat-bez">Tailscale выпустила tailcat: соединить две машины через NAT без аккаунта</a>»</p>]]></description>
      <category><![CDATA[Open Source]]></category>
      <category><![CDATA[Сетевые протоколы]]></category>
      <category><![CDATA[Инструменты командной строки]]></category>
      <category><![CDATA[DevOps]]></category>
      <category><![CDATA[Golang]]></category>
      <category><![CDATA[Новости]]></category>
      <slash:comments>0</slash:comments>
      <pubDate>Tue, 01 Sep 2026 17:28:01 GMT</pubDate>
      <content:encoded><![CDATA[<p>Tailscale 31 августа <a href="https://tailscale.com/blog/tailcat">опубликовала</a> <b>tailcat</b>, открытый инструмент, который соединяет две машины, где бы они ни стояли, без регистрации в сервисе и без сети tailnet. Автор — Брэд Фицпатрик, создатель memcached и один из основателей Tailscale. Идея проста: взять из Tailscale только сетевую часть (WireGuard, обход NAT и релеи DERP) и выбросить всё, что требует аккаунта. Компания называет это «Tailscale без Tailscale, от Tailscale» (перевод редакции).</p><p>На практике это netcat для интернета: на одной машине запускаете tailcat в режиме ожидания и получаете одноразовый адрес-токен, на другой вызываете tailcat с этим адресом, и между ними появляется шифрованный двунаправленный канал. Сверху можно пустить SSH, передачу файлов или проброс порта. Для разового доступа к машине за NAT это заменяет и промежуточный сервер, и регистрацию в чужом сервисе.</p><ul><li>tailcat — CLI и Go-пакет github.com/tailscale/tailcat под лицензией BSD-3-Clause.</li><li>Использует WireGuard, NAT traversal и DERP-релеи Tailscale, но не control plane: аккаунты, вход и tailnet не нужны; IP-адреса внутри туннеля есть, но пользователю их знать не требуется.</li><li>Адрес машины — её публичный ключ с информацией о DERP-сервере для первого контакта, закодированный в строку с префиксом tc.</li><li>Сценарии: SSH на машину за NAT, передача файлов, временный доступ; есть экспериментальная браузерная демонстрация на WebAssembly.</li><li>Прототип под названием derpcat написан в сентябре 2023 года; обещаний стабильности API и CLI у проекта нет.</li></ul><h2>Как соединение работает без сервера-посредника</h2><p>В обычном Tailscale центральный сервер (control plane) раздаёт машинам ключи друг друга и координаты, по которым их искать. В tailcat этого посредника нет: всё, что нужно для соединения, упаковано в сам адрес. По описанию в блоге, это публичный ключ WireGuard плюс сведения о том, через какой DERP-релей к машине можно достучаться, если прямой путь через NAT не найдётся; строка начинается с tc и кодирует эти данные в base64. Получатель адреса знает и кому доверять, и где искать.</p><blockquote>No accounts, login flow, tailnets, or IP addresses.</blockquote><p>Дальше работает тот же механизм, что и в Tailscale: машины пытаются пробить NAT и соединиться напрямую, а если не выходит, трафик идёт через DERP-релей, зашифрованный концами так, что релей содержимого не видит. Релеи Tailscale публичные, и их можно заменить своим. Ни root, ни TUN-интерфейс, ни права администратора не нужны: tailcat работает в пространстве пользователя как обычная программа.</p><h2>Чем это отличается от ngrok, SSH-туннелей и самого Tailscale</h2><p>От <b>ngrok</b> и подобных сервисов tailcat отличается тем, что не выставляет ничего в публичный интернет: соединение получит только тот, у кого есть адрес, а адрес — это ключ. От <b>SSH-прыжков</b> через промежуточный сервер — тем, что промежуточный сервер не нужен вообще: DERP лишь помогает найти друг друга и при необходимости ретранслирует уже зашифрованные байты. От <b>Tailscale</b> — отсутствием всей управляющей части: нет списка устройств, ACL, MagicDNS, нет и постоянной сети, каждое соединение живёт само по себе.</p><p>Отсюда и границы применимости. tailcat хорош для разового доступа: подключиться к ноутбуку коллеги, забрать большой файл с домашней машины из офиса, дать подрядчику временный вход на стенд. Для постоянной сети между десятками серверов с правами доступа он не замена Tailscale или WireGuard-конфигу, и авторы этого не обещают: README прямо предупреждает, что инструмент бесплатный, но стабильность API и CLI не гарантируется.</p><h2>Как попробовать</h2><ul><li>Установка при наличии Go: go install github.com/tailscale/tailcat/cmd/tailcat@latest; готовые бинарники смотрите в релизах репозитория.</li><li>На принимающей стороне запустите tailcat в режиме прослушивания и скопируйте выданный адрес; на второй машине передайте этот адрес как аргумент.</li><li>Поверх канала поднимайте SSH или пробрасывайте порт; для передачи файлов подойдёт обычное перенаправление stdin и stdout, как с netcat.</li><li>Для закрытого контура поднимите собственный DERP-сервер: код релея открыт в репозитории Tailscale.</li><li>Браузерная демонстрация на WebAssembly лежит на GitHub Pages проекта и показывает, что канал можно открыть даже из вкладки.</li><li>Публичные DERP-релеи даны без SLA, с ограничением частоты запросов и лишь в нескольких регионах; для рабочих сценариев поднимите свой релей.</li></ul><h2>Контекст</h2><p>Первый прототип под именем derpcat Фицпатрик написал в сентябре 2023 года, публично проект показали после конференции TailscaleUp в августе 2026-го. Мотив компании понятен: чем больше людей знакомы с её сетевым стеком, тем проще им потом прийти за полноценным продуктом. Для разработчика это честная сделка: рабочий инструмент под BSD-лицензией без обязательств, но и без гарантий, что завтра его интерфейс не изменится.</p><p>Источники: <a href="https://tailscale.com/blog/tailcat">tailcat: Tailscale without Tailscale (блог Tailscale)</a>, <a href="https://github.com/tailscale/tailcat">Репозиторий tailscale/tailcat</a></p><p>Изображение на обложке: Tailscale</p>]]></content:encoded>
    </item>
    <item>
      <title>Угон BGP-маршрута подменил обновления Virtualizor без взлома серверов</title>
      <link>https://tproger.ru/news/ugon-bgp-marwruta-podmenil-obnovleniya-virtualizor-okolo-22-chaso</link>
      <comments>https://tproger.ru/news/ugon-bgp-marwruta-podmenil-obnovleniya-virtualizor-okolo-22-chaso?scrollTo=tproger-comments</comments>
      <dc:creator><![CDATA[Tproger]]></dc:creator>
      <guid isPermaLink="true">https://tproger.ru/news/ugon-bgp-marwruta-podmenil-obnovleniya-virtualizor-okolo-22-chaso</guid>
      <description><![CDATA[<p>С 28 по 30 августа злоумышленник объявлял чужой префикс 162.55.80.0/24, получил валидный сертификат Let's Encrypt и раздал вредоносное обновление Virtualizor. Хронология, механизм угона маршрута, индикаторы компрометации и что делать администраторам.</p><p>— Читать дальше «<a rel="follow" href="https://tproger.ru/news/ugon-bgp-marwruta-podmenil-obnovleniya-virtualizor-okolo-22-chaso">Угон BGP-маршрута подменил обновления Virtualizor без взлома серверов</a>»</p>]]></description>
      <category><![CDATA[Linux]]></category>
      <category><![CDATA[Сетевые протоколы]]></category>
      <category><![CDATA[Безопасность]]></category>
      <category><![CDATA[DevOps]]></category>
      <category><![CDATA[Новости]]></category>
      <slash:comments>0</slash:comments>
      <pubDate>Tue, 01 Sep 2026 17:26:35 GMT</pubDate>
      <content:encoded><![CDATA[<p>Softaculous, разработчик панели Virtualizor для управления виртуальными серверами, 31 августа <a href="https://www.virtualizor.com/blog/security-incident-bgp-hijacking/">признал инцидент</a>: с вечера 28 августа по утро 30-го неизвестный объявлял в BGP чужой префикс 162.55.80.0/24, где живут серверы обновлений, клиентская зона и биллинг компании. Часть интернета поверила подмене, атакующий получил настоящий сертификат Let's Encrypt для доменов Virtualizor и раздал «небольшому числу» установок вредоносное обновление.</p><p>Подтверждённый вектор атаки не требовал взлома серверов Softaculous: она прошла на уровне маршрутизации интернета и сработала потому, что клиент обновлений Virtualizor не проверял криптографическую подпись пакета, ему хватало валидного TLS. Если у вас стоит Virtualizor, а его используют многие хостинги, включая российские, компания просит проверить сервер по опубликованному индикатору, даже если обновление вручную вы не запускали.</p><ul><li>Окно инцидента около 33 часов: с 28 августа 20:57 UTC до 30 августа 06:10 UTC; активный перехват шёл двумя волнами общей длиной около 22 часов с перерывами, маршрут постоянно менялся.</li><li>Поддельный маршрут /24 был специфичнее легитимного /16 Hetzner; все 368 peers RIPE RIS видели его хотя бы в один момент за окно инцидента; медианное число перенаправленных peers во время активной волны — 266 (около 72%).</li><li>Через перехваченный трафик атакующий прошёл проверку Let's Encrypt и получил технически валидный сертификат для доменов Virtualizor.</li><li>Вредоносное обновление подтверждено для Virtualizor; для других продуктов Softaculous таких пакетов не подтверждено. Индикатор компрометации: служба java-jre-update.service; выпущена версия 3.2.9.9 с инструментом устранения последствий и cleaning script, подпись пакетов обещана.</li><li>Клиент обновлений не проверял подпись пакета; компания не может составить полный список затронутых серверов.</li></ul><h2>Как работает угон маршрута</h2><p>BGP — протокол, по которому сети-операторы сообщают друг другу, через кого достижимы те или иные диапазоны IP-адресов. Доверие в нём во многом строится на честном слове: если кто-то объявляет, что диапазон живёт у него, соседи обычно верят. А если объявленный диапазон меньше (специфичнее) настоящего, маршрутизаторы предпочитают именно его. Так и произошло: Hetzner (AS24940) легитимно объявляет 162.55.0.0/16, атакующий объявил внутри него 162.55.80.0/24, и более точный маршрут победил.</p><p>В объявлении фигурировали AS62390 (NexonHost) и AS6204 (Zet.net), а в конце пути был оставлен Hetzner как видимый источник, чтобы подмена выглядела правдоподобно. По публичным данным RIPE RIS все 368 peers видели маршрут хотя бы в один момент за окно инцидента, а медианное число перенаправленных peers во время активной волны составляло 266. Перехват шёл двумя волнами общей продолжительностью около 22 часов с паузой примерно в 11 часов между ними, и для отдельных сетей он был прерывистым: маршрут то появлялся, то исчезал.</p><h2>Почему сертификат оказался настоящим</h2><p>Let's Encrypt подтверждает владение доменом, обращаясь к нему по HTTP. Если в этот момент трафик к домену идёт на сервер атакующего, проверка проходит, и сертификат выдаётся ему. Именно это и случилось: компания пишет, что злоумышленник получил «технически действительный TLS-сертификат для наших доменов» (перевод редакции). Браузеры и клиенты обновлений видели зелёный замок и доверяли ответам подменённого сервера.</p><blockquote>The attacker obtained a technically valid TLS certificate for our domains.</blockquote><p>Дальше сработало самое слабое звено: клиент обновлений Virtualizor доверял серверу по TLS и не проверял подпись самого пакета. Правильная схема, при которой пакет подписан офлайн-ключом разработчика и проверяется на сервере клиента, не спасла бы от перехвата трафика, но сделала бы подмену пакета невозможной. Компания обещала внедрить подпись для всех пакетов; срок и реализацию она не назвала.</p><h2>Кого это задело</h2><p>По словам компании, вредоносный пакет получила «горстка серверов», а не вся база пользователей Virtualizor. При этом Softaculous прямо признаёт: «Мы не можем составить окончательный список затронутых серверов» (перевод редакции), потому что подмена происходила на сетевом уровне и следов на стороне компании не оставила. Для Softaculous, Webuzo и других продуктов вредоносных пакетов не подтверждено, но те же адреса использовались и для их обновлений. Индикатор компрометации, который называет компания, — служба java-jre-update.service в системе. Softaculous выпустила Virtualizor 3.2.9.9 с инструментом устранения последствий и отдельный cleaning script, но просит при обнаружении индикатора не удалять службу самостоятельно, а связаться с поддержкой.</p><h2>Что делать администратору</h2><ul><li>Если у вас Virtualizor: обновитесь до 3.2.9.9, поищите службу java-jre-update.service и при её наличии свяжитесь с поддержкой Softaculous, как просит компания; проверять стоит, даже если обновления вы не запускали, автообновление могло сработать само.</li><li>Сверьте по логам, не обращался ли сервер к 162.55.80.0/24 между 28 августа 20:57 UTC и 30 августа 06:10 UTC.</li><li>Смените учётные данные панели, API-ключи и пароли, которые могли пройти через клиентскую зону или биллинг в этот период.</li><li>Для собственных систем обновлений: подписывайте пакеты отдельным ключом и проверяйте подпись на клиенте; TLS защищает канал, но не содержимое.</li><li>Если управляете своей сетью: включите RPKI Origin Validation и задайте свои ROA с точной длиной префикса. Оговорка: атакующий оставил Hetzner видимым origin, и без строгого maxLength в ROA такой маршрут ROV не отбросит.</li></ul><h2>Что дальше</h2><p>Компания продолжает расследование; индикатор компрометации, версия 3.2.9.9 и cleaning script уже опубликованы. Открытых вопросов два: почему сети-транзиты пропустили объявление чужого /24 без проверки и когда и как будет внедрена обещанная подпись пакетов. Пока её нет, любой повторный угон маршрута снова превратится в атаку на цепочку поставок.</p><p>Источник: <a href="https://www.virtualizor.com/blog/security-incident-bgp-hijacking/">Security incident: BGP hijacking (Virtualizor)</a></p><p>Изображение на обложке: скриншот bgp.tools</p>]]></content:encoded>
    </item>
    <item>
      <title>MCP отказывается от сессий: протокол ИИ-агентов становится stateless</title>
      <link>https://tproger.ru/news/mcp-otkazyvaetsya-ot-sessij-protokol-ii-agentov-stanovitsya-state</link>
      <comments>https://tproger.ru/news/mcp-otkazyvaetsya-ot-sessij-protokol-ii-agentov-stanovitsya-state?scrollTo=tproger-comments</comments>
      <dc:creator><![CDATA[Евгений Стребков]]></dc:creator>
      <guid isPermaLink="true">https://tproger.ru/news/mcp-otkazyvaetsya-ot-sessij-protokol-ii-agentov-stanovitsya-state</guid>
      <description><![CDATA[<p>Новый релиз-кандидат MCP убирает handshake и Mcp-Session-Id. Разбираем, почему это важно для масштабирования ИИ-агентов и что ждёт разработчиков.</p><p>— Читать дальше «<a rel="follow" href="https://tproger.ru/news/mcp-otkazyvaetsya-ot-sessij-protokol-ii-agentov-stanovitsya-state">MCP отказывается от сессий: протокол ИИ-агентов становится stateless</a>»</p>]]></description>
      <category><![CDATA[API]]></category>
      <category><![CDATA[Open Source]]></category>
      <category><![CDATA[Сетевые протоколы]]></category>
      <category><![CDATA[Искусственный интеллект]]></category>
      <category><![CDATA[Инфраструктура]]></category>
      <category><![CDATA[Новости]]></category>
      <slash:comments>0</slash:comments>
      <pubDate>Tue, 21 Jul 2026 11:35:20 GMT</pubDate>
      <content:encoded><![CDATA[<p>MCP перестаёт быть протоколом «один клиент — один сервер». Релиз-кандидат спецификации 2026-07-28, зафиксированный 21 мая 2026 года, полностью убирает handshake initialize / initialized и заголовок Mcp-Session-Id. Теперь каждый запрос несёт с собой всё необходимое состояние, а сервер может быть обычным веб-сервисом за балансировщиком.</p><ul><li>Новая спецификация MCP 2026-07-28 делает протокол stateless: сессии и handshake больше не нужны.</li><li>Клиент передаёт свою идентификацию и возможности в поле _meta каждого JSON-RPC-запроса.</li><li>Балансировщик может использовать обычный round-robin, ориентируясь на заголовки Mcp-Method и Mcp-Name.</li><li>Roots, Sampling и Logging объявлены устаревшими с минимальным окном поддержки 12 месяцев.</li><li>Финальная спецификация ожидается 28 июля 2026 года после 10-недельного окна валидации SDK.</li></ul><p>Model Context Protocol (MCP) — открытый протокол для подключения ИИ-агентов к внешним инструментам и данным. С момента передачи Anthropic в Linux Foundation в декабре 2025-го им управляет Agentic AI Foundation, а число production-серверов уже исчисляется сотнями тысяч. До сих пор MCP работал по модели чата: сначала handshake, потом сервер выдавал идентификатор сессии, который клиент возвращал с каждым запросом.</p><p>В релиз-кандидате эта модель заменена на stateless. Клиент кладёт имя, версию и capabilities в поле _meta прямо в тело запроса. Балансировщик читает HTTP-заголовки Mcp-Method и Mcp-Name (SEP-2243) и направляет запрос на любой свободный инстанс — общее хранилище сессий больше не требуется. Если серверу нужен ввод посреди вызова, он возвращает InputRequiredResult, а клиент переотправляет запрос с inputResponses и requestState.</p><p>Вместе с ядром обновляются и расширения. Появляется MCP Apps — серверный интерактивный UI в sandboxed iframe с заранее декларируемыми шаблонами. Переработано API долгих задач: вместо tasks/list приходят tasks/get, tasks/update и tasks/cancel. Также шесть SEPов ужесточают авторизацию по OAuth/OIDC, включая проверку issuer по RFC 9207.</p><h2>Часто задаваемые вопросы</h2><h2>Выводы</h2><p>Новая спецификация — признак того, что MCP вырос из протокола для локальных подключений в полноценную enterprise-инфраструктуру. Переход к statelessness решает главную операционную проблему масштабирования, но добавляет работы тем, кто уже внедрил stateful-реализации. Главное — помнить, что релиз пока кандидат: production-серверы продолжают работать на спецификации 2025-11-25.</p><p>Источник: <a href="https://awesomeagents.ai/news/mcp-stateless-protocol-update/">awesomeagents.ai</a>.</p>]]></content:encoded>
    </item>
    <item>
      <title>Как мы нашли баг в HTTP-библиотеке hyper</title>
      <link>https://tproger.ru/translations/kak-my-nawli-bag-v-http-biblioteke-hyper</link>
      <comments>https://tproger.ru/translations/kak-my-nawli-bag-v-http-biblioteke-hyper?scrollTo=tproger-comments</comments>
      <dc:creator><![CDATA[Евгений Стребков]]></dc:creator>
      <guid isPermaLink="true">https://tproger.ru/translations/kak-my-nawli-bag-v-http-biblioteke-hyper</guid>
      <description><![CDATA[<p>Перестраивая Images binding, команда Cloudflare случайно обнаружила баг в открытой библиотеке hyper, который существовал сразу в нескольких мажорных версиях.</p><p>— Читать дальше «<a rel="follow" href="https://tproger.ru/translations/kak-my-nawli-bag-v-http-biblioteke-hyper">Как мы нашли баг в HTTP-библиотеке hyper</a>»</p>]]></description>
      <category><![CDATA[Open Source]]></category>
      <category><![CDATA[Сетевые протоколы]]></category>
      <category><![CDATA[Rust]]></category>
      <category><![CDATA[Cloudflare]]></category>
      <category><![CDATA[Баги и ошибки]]></category>
      <category><![CDATA[Переводы]]></category>
      <slash:comments>0</slash:comments>
      <pubDate>Thu, 25 Jun 2026 15:29:36 GMT</pubDate>
      <content:encoded><![CDATA[<p>Перевод статьи Дины Лам (Deanna Lam), Диретнана Домнана (Diretnan Domnan) и Мэтта Льюиса (Matt Lewis) из Cloudflare Blog, оригинал: <a href="https://blog.cloudflare.com/hyper-bug/">https://blog.cloudflare.com/hyper-bug/</a></p><p>Сервис Images, написанный на Rust и работающий в Workers, запущен на каждой машине в edge-сети Cloudflare. Чтобы обрабатывать клиентские соединения, мы используем hyper — открытую HTTP-библиотеку для Rust.</p><p>В прошлом году мы представили Images binding — он позволяет создавать кастомные программные сценарии обработки удалённых изображений в Workers. В конце 2025 года мы перестроили binding, чтобы сделать связь между Workers runtime и сервисом Images более прямой и локальной.</p><p>Вскоре после выкатки мы получили сообщения о том, что запросы на трансформацию из binding падают — но только иногда и только для больших изображений. Ещё страннее было то, что ответы на эти запросы возвращали статус 200, и в логах не было никаких ошибок. Данные изображения просто обрывались: ответ, который должен был весить два мегабайта, мог прийти всего в несколько сотен килобайт.</p><p>Мы потратили шесть недель на охоту за почти невидимым багом — состоянием гонки, которое проявлялось только при определённых условиях, — в библиотеке hyper, который влиял на то, как Images binding возвращает обработанные изображения клиенту. В итоге исправление заняло четыре строки кода.</p><p>Cloudflare Images binding перешёл на прямое локальное соединение через Unix-сокеты в декабре 2025 года.</p><p>После выкатки большие изображения стали иногда возвращаться обрезанными: HTTP 200, но тело ответа короче Content-Length.</p><p>Причина — состояние гонки в hyper: цикл poll_loop отбрасывал результат poll_flush, даже если тот возвращал Poll::Pending.</p><p>Баг существовал в hyper 0.14.x, 1.7 и 1.8; прежний посредник FL читал данные достаточно быстро, чтобы он не проявлялся.</p><p>Исправление заняло четыре строки кода: flush теперь выполняется перед shutdown.</p><h2>Прыжки, передачи и hyper</h2><p>Когда разработчики создают приложения на Cloudflare, они собирают full-stack приложения из набора платформенных сервисов, доступных Workers через bindings. Bindings предоставляют прямые API к ресурсам Developer Platform: вычислениям, хранилищам, ИИ-инференсу и обработке медиа.</p><p>Images binding отделяет оптимизацию изображений от доставки: вы можете транскодировать, компоновать или изменять изображения, не возвращая результат в виде HTTP-ответа. Также он позволяет применять параметры оптимизации в любом порядке, а не в фиксированной последовательности, которую навязывает URL-интерфейс. Вот пример: воркер передаёт данные изображения напрямую в Images API, объединяет операции в цепочку и получает обработанный результат в виде потока:</p><p>На высоком уровне так выглядит движение данных через наши сервисы:</p><figure><img src="https://media.tproger.ru/user-uploads/133946/2026-06-23/4ed76cb3-414e-4ac0-bf31-81e0ba01bb2e.webp" alt="Схема движения данных между Workers runtime, посредником и сервисом Images" /><figcaption>Схема движения данных между Workers runtime, посредником и сервисом Images при использовании Images binding</figcaption></figure><p>Труба на схеме обозначает сокетное соединение между посредником и Images, через которое данные передаются от одного процесса к другому через буфер ядра.</p><p>Binding взаимодействует с Images через сокетное соединение, управляемое Workers runtime. Сокет — это канал связи между двумя процессами. У каждого конца сокета есть буферы, управляемые ядром операционной системы; эти буферы — временные области, где данные остаются после записи одной стороной, но до чтения другой.</p><p>Hyper управляет соединением на стороне сервиса Images: читает входящие запросы из сокета и пишет ответы обратно в него.</p><p>Когда запрос использует Images binding, сервис Images читает входные данные, выполняет запрошенные операции оптимизации и кодирует результат. Затем он передаёт всё закодированное изображение hyper как один непрерывный блок в памяти.</p><p>Hyper записывает эти данные ответа в свой внутренний буфер. На этом моменте hyper считает кодирование завершённым, потому что у него есть все байты, которые нужно отправить. Следующий шаг — сбросить внутренний буфер в исходящий буфер сокета, переместив данные от сервиса Images к посреднику на другом конце.</p><p>Если читатель на другом конце быстрый, hyper может сбросить всё за один проход — в исходящем буфере будет место, потому что читатель потребляет данные по мере поступления. Как только все данные отправлены, hyper вызывает shutdown на сокете, сигнализируя, что соединение завершено и больше данных записано не будет. Но если читатель медленнее (хотя бы на несколько миллисекунд), исходящий буфер заполняется, и hyper должен ждать, пока появится место, чтобы продолжить запись.</p><h2>Локальное соединение</h2><p>Весь входящий трафик в сети Cloudflare проходит через FL — внутренний сервис-посредник, который включает функции безопасности и производительности и маршрутизирует запросы к нужному бэкенду. Когда мы только запустили binding, данные изображений шли из Workers runtime через FL в сервис Images.</p><p>Этот путь хорошо подходил для первого релиза и повторял архитектуру URL-интерфейса. Но со временем связь с FL стала ограничением: любое изменение binding приходилось согласовывать с циклом релизов FL.</p><p>В декабре 2025 года команда Images заменила FL новым посредником — внутренним worker binding, который работает на той же машине. В исходной архитектуре данные шли через FL по сетевым сокетам; этот путь нёс накладные расходы полного конвейера обработки FL, такие как DNS-lookup'ы и маршрутизация.</p><p>Внутренний binding заменил их на Unix-сокеты, чтобы напрямую соединить сервисы на одной машине, минуя FL и накладные расходы сетевого стека. Это ускорило путь запроса к Images и дало команде независимый контроль над релизами binding.</p><p>В течение нескольких дней после выкатки мы получили первый отчёт от клиента.</p><h2>200 OK (не OK)</h2><p>Первый признак проблемы пришёл от клиента с нестандартной конфигурацией: два уровня обработки изображений, где один pipeline был вложен в другой.</p><p>Сначала их воркер с помощью Images binding компоновал несколько больших исходных изображений из R2 — JPEG-фон и PNG-оверлеи — в один объединённый JPEG. Затем результат дополнительно сжимался, транскодировался и изменялся размер через URL-интерфейс.</p><p>Баг возникал на обратном пути внутреннего pipeline, где ответ обрезался до того, как достигал внешнего.</p><p>Внутренний pipeline (transformation binding) отвечал за компоновку. Внешний pipeline (transformation URL) отвечал за оптимизации доставки: масштабирование и конвертацию формата. Такая многоуровневая схема означала, что когда внутренний pipeline молча возвращал обрезанный ответ, видимая ошибка появлялась на уровень выше:</p><p>Внешний pipeline получал от внутреннего HTTP 200 с заголовком Content-Length, который обещал несколько мегабайт. Фактическое тело было лишь частью от этого: в одном запросе из ожидаемых 3,3 МБ пришло всего около 200 КБ. Ошибка всплывала во внешнем pipeline, но обрезка могла произойти в binding, посреднике, сервисе Images или где-то между ними.</p><p>Когда браузер получает обрезанное изображение, результат виден невооружённым глазом. В зависимости от формата изображение либо отрисовывается частично (например, с отсутствующей или серой нижней частью), либо полностью не декодируется и отображается как битое.</p><h2>Отладка вслепую</h2><p>Отсюда мы двигались вглубь по пути запроса, проверяя каждый уровень, чтобы локализовать место обрезки. Некоторые усилия зашли в тупик; другие оставили зацепки, которые сузили поиск:</p><ul><li><b>Сборка репродукции.</b> Мы собрали воркер, повторяющий вложенную схему клиента, и постепенно убирали уровни, пока не смогли воспроизвести баг только с binding. Небольшой скрипт отправлял запросы пачками. На одном из первых прогонов 19 из 25 запросов упали. Объём данных, которые всё-таки приходили, — примерно 200 КБ — настораживающе близко к размеру сокетного буфера в продакшене. Это подтвердило, что проблема не связана с конфигурацией клиента, и дало надёжный способ воспроизводить баг по запросу.</li><li><b>Проверка таймаутов.</b> Сначала мы подозревали, что обрезка связана с поведением таймаутов (то есть соединение закрывалось по истечении лимита времени). Эта теория не подтвердилась: обрезка не коррелировала с длительностью запроса.</li><li><b>Обновление версии hyper.</b> Когда баг впервые зарепортили, мы использовали 0.14.x, а последняя версия hyper была около 1.8.x. Мы протестировали версии 0.14, 1.7 и 1.8 — на случай, если самый очевидный ответ окажется правильным (и самым простым). Но баг проявлялся в каждой версии, значит, upstream-исправления не было.</li><li><b>Локальное воспроизведение.</b> Мы запускали интеграционные тесты на macOS и Debian-виртуалке. Даже под значительной нагрузкой локальные запросы никогда не падали. Прямые curl-запросы к сокету binding и повтор отловленных запросов всегда работали. Баг проявлялся только на полном продакшен-пути при реальной конкурентности и реальном клиенте Workers runtime на другом конце сокета. Это натолкнуло нас на подозрение, что виноват сам runtime.</li><li><b>Исключение Workers runtime.</b> Мы изучили HTTP-клиент, который Workers runtime использует для связи с Images через сокет binding. Ни на одной из сторон соединения в трассировках не было системных вызовов, указывающих на неожиданное закрытие или преждевременное завершение. Клиент вёл себя корректно, и несколько других сервисов использовали того же клиента без проблем.</li><li><b>Распределённая трассировка.</b> Изучив сквозные трассировки запросов, мы подтвердили, что обрезанное тело уже присутствовало до того, как достигало внешнего уровня трансформации в схеме клиента. Это сузило проблему до внутреннего pipeline — пути binding через сервис Images.</li><li><b>Инструментирование посредника.</b> Мы добавили инструментирование в посредник, чтобы измерять размеры тел перед пересылкой ответа. Тела уже были обрезаны к моменту выхода из сервиса Images, так что посредник был исключён.</li><li><b>Углублённая трассировка внутри Images.</b> На уровне сервиса запрос обрабатывался, изображение корректно кодировалось, и ответ отправлялся с HTTP 200.</li></ul><p>Единственный постоянный сигнал заключался в том, что баг зависел от тайминга: он появлялся только на продакшен-пути, при реальной конкурентности и только для больших изображений.</p><h2>Зерно истины</h2><p>Инструменты отладки на уровне приложения показывали лишь то, что система <i>считала</i>, что делает. Но по мнению системы всё было в порядке: трассировка утверждала, что ответ отправлен; логи не сообщали об ошибках; сервис Images возвращал 200 на каждый запрос.</p><p>Чтобы увидеть, что система делала на самом деле, мы подключили strace к сервису Images. strace записывает системные вызовы, которые процесс делает ядру; это позволило показать, какие именно байты были записаны, когда вызывался shutdown и посылал ли клиент сигнал завершения.</p><p>Настройка трассировки была деликатной. strace работает, перехватывая системные вызовы по мере их выполнения, что добавляет небольшие накладные расходы по времени к каждому вызову. Фильтрация узкого набора системных вызовов держала эти накладные расходы минимальными. Однако расширение фильтра замедляло процесс ровно настолько, чтобы сдвинуть тайминг между flush и проверкой shutdown — и баг полностью исчезал. Одно это уже подкрепляло теорию о тайминг-зависимости проблемы.</p><p>Используя воркер-репродукцию, мы спровоцировали баг и сравнили вывод системных вызовов между успешными и упавшими запросами.</p><p>При успешном запросе ответ пишется кусками по мере освобождения сокетного буфера, а shutdown вызывается только после отправки всех данных. Например, это может выглядеть так:</p><p>Когда мы воспроизвели баг, упавший запрос выглядел так:</p><p>Здесь есть только одна запись — лишь заголовки и крошечная часть тела — перед немедленным вызовом shutdown. Из ответа в 14,9 МБ было отправлено около 219 КБ. Оставшиеся ~14,8 МБ данных изображения никогда не покидали внутренний буфер hyper, и не было никакого сигнала завершения от клиента между записью и shutdown. Вместо этого сервис Images преждевременно закрывал соединение самостоятельно, искренне полагая, что работа завершена.</p><p>Упавшие запросы подтвердили, что баг — состояние гонки, которое срабатывало непостоянно. Успех или провал зависели от того, перекрывались ли операции flush и shutdown, и это менялось от запроса к запросу. Когда буфер был полон в тот самый момент, когда hyper решил, что соединение завершено, данные терялись.</p><p>Когда читатель потребляет медленнее, чем hyper пишет, исходящий буфер заполняется. Если hyper закрывает соединение до того, как буфер опустеет, то лишь часть ответа попадает к посреднику; эти неполные данные пересылаются обратно в Workers runtime и клиенту.</p><p>Перестройка в декабре не ввела этот баг — он существовал в hyper годами в нескольких мажорных версиях. Но новый посредник изменил того, кто читал ответ на другом конце сокета. Наша рабочая теория: прежний посредник FL потреблял данные достаточно быстро, чтобы сокетный буфер редко заполнялся во время ответа. Новый читатель работал в темпе, который иногда позволял буферу заполняться при больших ответах.</p><p>Этих нескольких миллисекунд обратного давления, внесённых улучшением, которое ускорило всё остальное, хватило, чтобы выявить изъян, который скрывался на виду.</p><h2>Внутри цикла dispatch</h2><p>Жизненный цикл HTTP/1-соединения в hyper управляется конечным автоматом в файле под названием dispatch.rs. Он выполняет цикл, который читает запросы, пишет ответы, сбрасывает буфер записи в сокет и решает, когда закрываться. В упрощённом виде:</p><p>Точнее, именно let _ перед poll_flush — это место, где живёт баг.</p><p>В Rust let _ = expr отбрасывает результат выражения, включая Poll::Pending — сигнал о том, что flush ещё не завершён. В буфере flush может остаться несколько мегабайт, но цикл об этом никогда не узнаёт.</p><p>Когда запрос падает, последовательность событий выглядит так:</p><ol><li>Сервис Images завершает кодирование изображения и передаёт весь ответ hyper как один блок в памяти.</li><li>Hyper записывает блок во внутренний буфер и помечает состояние записи как Writing::Closed. С точки зрения кодирования работа сделана — кодировать больше нечего.</li><li>Hyper вызывает poll_flush, чтобы перенести буферизованные данные в сокет. В нашем примере сокет принял около 219 КБ. Оставшиеся ~14,8 МБ остаются в буфере hyper. Сокет полон, поэтому ядро возвращает Poll::Pending.</li><li>poll_loop отбрасывает Poll::Pending с помощью let _.</li><li>Он проверяет wants_read_again(). Полный запрос уже получен, поэтому возвращается false.</li><li>poll_loop возвращает Poll::Ready(Ok(())), сигнализируя, что цикл завершён, хотя flush ещё не сделан.</li><li>Срабатывает poll_shutdown(). Выполняется системный вызов SHUT_WR.</li><li>Клиент получает 219 КБ и EOF (end-of-file), указывающий, что соединение закрыто, хотя он ожидает 14,9 МБ.</li></ol><p>На втором шаге hyper помечает операцию записи как завершённую, как только тело ответа оказывается в буфере (то есть когда кодирование закончено), а не когда данные фактически сброшены. В большинстве случаев flush завершается за один проход, и это различие незаметно. В редких случаях, когда сокетный буфер полон, flush приходится ждать — но hyper не ждёт. Байты всё ещё сидят в буфере hyper, ожидая сброса в сокет. Hyper при этом закрывает соединение с этими данными всё ещё в буфере.</p><p>Это также объясняет, почему curl никогда не воспроизводил баг. Curl читает данные так быстро, как они приходят: сокетный буфер никогда не заполняется, flush всегда завершается мгновенно, и отброшенное возвращаемое значение безобидно. Продакшен-путь с читателем, который иногда паузил на несколько миллисекунд, был единственной конфигурацией, где буфер заполнялся в нужный момент.</p><h2>Не забывайте сбрасывать буфер</h2><p>После недель расследования само исправление было концептуально простым. Hyper должен был проверять, завершён ли flush, прежде чем двигаться дальше.</p><p>Наш reproduction-воркер подтвердил, что баг существует, но не мог объяснить, почему падает конкретный запрос. Прежде чем писать исправление, нам нужен был тест, который мог бы спровоцировать точные сокетные условия внутри hyper.</p><p>Мы знали условия, вызывающие баг: сокет, который принимает один кусок данных, а затем блокируется. Для контролируемого сценария мы построили обёртку вокруг TCP-потока, имитирующую полный сокетный буфер. Обёртка принимала 8 КБ при первой записи, а затем возвращала Poll::Pending на каждой последующей записи, имитируя читателя, который перестал опустошать буфер.</p><p>Тест отправлял 500 КБ ответа через этот ограниченный сокет и проверял, вызывает ли hyper shutdown, пока в буфере остаётся 492 КБ. Без исправления — вызывал. С исправлением — ждал.</p><p>Сначала мы применили исправление в цикле dispatch hyper. Вместо отбрасывания результата poll_flush мы проверяли, завершён ли flush на самом деле:</p><p>Если flush не завершён, цикл возвращает Poll::Pending асинхронному runtime. Runtime ждёт, пока сокет не станет доступен для записи, а затем будит задачу, чтобы продолжить flush. Соединение закрывается только после того, как все данные отправлены.</p><p>Когда мы выкатили это исправление, мы увидели, что записан каждый байт, а shutdown вызывался только после того, как буфер действительно опустел. Клиент, который сделал первый репорт, тоже подтвердил, что проблема исчезла.</p><p>Хотя первоначальное решение работало, цикл dispatch был неправильным местом для исправления. Ранний возврат Poll::Pending мог замедлять другие операции на том же соединении, уменьшая частоту опроса чтения и вызывая нежелательное обратное давление. Также это корректно не обрабатывает keepalive-соединения, где одно соединение обрабатывает несколько запросов подряд — они должны оставаться пригодными к использованию, даже пока предыдущий ответ всё ещё сбрасывается. Ни одна из этих проблем не затрагивала наш сервис (где keepalive отключён), но обе могли повлиять на других пользователей hyper, если бы исправление было предложено upstream.</p><p>Мы проследили жизненный цикл соединения hyper и нашли более точечный подход. Вместо изменения поведения цикла dispatch мы применили исправление в том месте, где shutdown вызывается на самом деле. Перед закрытием сокета hyper должен сначала сбросить оставшиеся данные в буфере:</p><p>Это оставляет цикл dispatch без изменений. Flush добавляется только в тот точный момент, где иначе произошла бы потеря данных — непосредственно перед shutdown.</p><h2>Что осталось с нами</h2><p>Ни один из инструментов на уровне приложения не выдавал ошибок, падений или полезных записей в логе. Наблюдаемость на уровне приложения может иметь слепое пятно для багов, которые живут ниже её уровня осознанности.</p><p>Сбой происходил непостоянно, масштабировался с размером ответа, не воспроизводился простыми инструментами вроде curl и исчезал, когда мы наблюдали за системой внимательнее. Эти сигналы указывали на тайминг-зависимый баг в слое соединения, а не в логике приложения.</p><p>Прорыв случился благодаря инструментарию уровня ядра — strace, единственному слою, который фиксирует, что на самом деле происходило на сокете. Базовый баг жил в нескольких миллисекундах между частичным flush и преждевременным shutdown — окне, которое открылось только после того, как мы ускорили систему.</p><p>Мы влили исправление и детерминированный тест в hyperium/hyper через PR #4018. Оно появится в будущем релизе hyper, гарантируя, что любой сервис, использующий HTTP/1-реализацию hyper, не потеряет данные ответа из-за того же состояния гонки.</p><p>Пока мы используем внутренний форк с применённым патчем. Это исправление стабилизировало архитектуру binding, создав надёжную основу для расширения его функциональности.</p><p>Изначально Images binding покрывал только трансформации удалённых изображений. В начале этого месяца мы объявили, что Images binding теперь поддерживает операции для hosted-изображений, давая разработчикам единый способ строить медиа-насыщенные приложения на Cloudflare.</p><p>Подробнее о том, как работает binding, — в нашей <a href="https://developers.cloudflare.com/images/worker-bindings/">документации</a>.</p>]]></content:encoded>
    </item>
    <item>
      <title>A2A Java SDK 1.0.0: стабильный релиз для агентных приложений на Java</title>
      <link>https://tproger.ru/news/a2a-java-sdk-1-0-0-stabilnyj-reliz-dlya-agentnyh-prilozhenij-na</link>
      <comments>https://tproger.ru/news/a2a-java-sdk-1-0-0-stabilnyj-reliz-dlya-agentnyh-prilozhenij-na?scrollTo=tproger-comments</comments>
      <dc:creator><![CDATA[Евгений Стребков]]></dc:creator>
      <guid isPermaLink="true">https://tproger.ru/news/a2a-java-sdk-1-0-0-stabilnyj-reliz-dlya-agentnyh-prilozhenij-na</guid>
      <description><![CDATA[<p>Вышел A2A Java SDK 1.0.0.Final — официальная Java-реализация протокола Agent2Agent. Разбираем ключевые изменения, как подключить SDK из Maven Central и зачем это Java-разработчикам.</p><p>— Читать дальше «<a rel="follow" href="https://tproger.ru/news/a2a-java-sdk-1-0-0-stabilnyj-reliz-dlya-agentnyh-prilozhenij-na">A2A Java SDK 1.0.0: стабильный релиз для агентных приложений на Java</a>»</p>]]></description>
      <category><![CDATA[API]]></category>
      <category><![CDATA[Java]]></category>
      <category><![CDATA[Open Source]]></category>
      <category><![CDATA[Сетевые протоколы]]></category>
      <category><![CDATA[Новости]]></category>
      <category><![CDATA[Искусственный интеллект]]></category>
      <category><![CDATA[Новости]]></category>
      <slash:comments>0</slash:comments>
      <pubDate>Tue, 16 Jun 2026 09:45:59 GMT</pubDate>
      <content:encoded><![CDATA[<p>Java-разработчики получили стабильный инструмент для создания агентных систем. <b>A2A Java SDK 1.0.0</b> вышел в релиз и доступен в Maven Central с groupId org.a2aproject.sdk. Для сборки клиента можно взять артефакт a2a-java-sdk-client или импортировать a2a-java-sdk-bom. Библиотека реализует протокол <b>Agent2Agent (A2A)</b> — открытый стандарт, управляемый Linux Foundation, для взаимодействия ИИ-агентов друг с другом.</p><p><b>Agent2Agent</b> — это протокол, управляемый Linux Foundation (изначально представленный Google), который позволяет агентам на разных фреймворках и языках находить друг друга, делегировать задачи и обмениваться результатами. Для Java-экосистемы выпуск SDK версии 1.0.0 означает переход от экспериментальных сборок к инструменту, готовому к промышленной эксплуатации.</p><p>Релиз 1.0.0 появился на прошлой неделе, как сообщает InfoQ в очередном выпуске Java News Roundup. В него вошли исправления ошибок, обновление зависимостей и несколько новых возможностей: интеграционный тестовый набор на базе Quarkus для проверки совместимости разных SDK, а также расширение интерфейса A2AHttpResponse и класса A2AClientHTTPError для доступа к HTTP-заголовкам ответов.</p><ul><li>A2A Java SDK 1.0.0 вышел в GA — первая стабильная версия для Java.</li><li>Реализует протокол Agent2Agent для взаимодействия ИИ-агентов.</li><li>Появился интеграционный тестовый набор на базе Quarkus.</li><li>Доступен в Maven Central: org.a2aproject.sdk.</li><li>Параллельно вышел A2A Jakarta 1.0.0.CR1 для Jakarta EE серверов.</li></ul><h2>Что вошло в релиз A2A Java SDK 1.0.0</h2><ul><li>Новый интеграционный тестовый набор (ITK) на базе Quarkus для проверки кросс-SDK совместимости.</li><li>Возможность получать HTTP-заголовки ответов через интерфейс A2AHttpResponse и класс A2AClientHTTPError.</li><li>Исправления ошибок и обновление зависимостей.</li><li>Готовность к использованию в production вместе с A2A Protocol Specification 1.0.</li></ul><blockquote>I am pleased to announce the release of A2A Java SDK 1.0.0.Final — our first GA release. The A2A Java SDK is the official Java implementation of the Agent2Agent (A2A) Protocol, an open standard that enables AI agents to communicate and collaborate regardless of underlying framework, language, or vendor.</blockquote><p>Параллельно команда выпустила первый релиз-кандидат <b>A2A Jakarta 1.0.0.CR1</b>. Эта интеграция помогает запускать A2A-агентов внутри Jakarta EE серверов, таких как WildFly. В CR1 переименованы пакеты и артефакты, обновлён набор TCK для работы с A2A Java SDK 1.0.0 и настроен запуск CI на Windows.</p><h2>Зачем это Java-разработчикам</h2><p>SDK позволяет строить агентные приложения на Java без привязки к Python-стеку. Агенты могут общаться с агентами на Google ADK, LangGraph, CrewAI и других фреймворках через единый протокол. Это особенно важно для команд, где основная инфраструктура уже написана на Java. Рядом с A2A развивается протокол <a href="https://tproger.ru/news/anthropic-zapustila-mcp-tunneli-i-sendboksy-dlya-korporativnyh-ai">MCP</a>: если MCP соединяет агента с инструментами, то A2A — агента с агентом.</p><p>A2A Java SDK 1.0.0 делает Java полноценной платформой для агентных приложений: теперь можно подключить SDK из Maven Central и начать строить агентов, которые работают в одной экосистеме с Python- и TypeScript-решениями.</p><p><b>Источник:</b> <a href="https://www.infoq.com/news/2026/06/java-news-roundup-jun08-2026/">InfoQ — Java News Roundup: A2A Java SDK 1.0, Jakarta EE 12, JNoSQL, GraalVM, Micrometer, OpenXava, Gradle</a>.</p>]]></content:encoded>
    </item>
    <item>
      <title>Протоколы связи микроконтроллеров: проектирование и парсинг</title>
      <link>https://tproger.ru/articles/protokoly-svyazi-mikrokontrollerov-proektirovanie-i-parsing</link>
      <comments>https://tproger.ru/articles/protokoly-svyazi-mikrokontrollerov-proektirovanie-i-parsing?scrollTo=tproger-comments</comments>
      <dc:creator><![CDATA[Евгений Стребков]]></dc:creator>
      <guid isPermaLink="true">https://tproger.ru/articles/protokoly-svyazi-mikrokontrollerov-proektirovanie-i-parsing</guid>
      <description><![CDATA[<p>Разбираем структуру кадра, контрольные суммы и конечные автоматы для обмена данными между хостом и микроконтроллером. Примеры на C — читайте и внедряйте.</p><p>— Читать дальше «<a rel="follow" href="https://tproger.ru/articles/protokoly-svyazi-mikrokontrollerov-proektirovanie-i-parsing">Протоколы связи микроконтроллеров: проектирование и парсинг</a>»</p>]]></description>
      <category><![CDATA[Алгоритмы и структуры данных]]></category>
      <category><![CDATA[Низкоуровневое программирование]]></category>
      <category><![CDATA[Оптимизация]]></category>
      <category><![CDATA[Hardware]]></category>
      <category><![CDATA[Сетевые протоколы]]></category>
      <category><![CDATA[Разработка]]></category>
      <category><![CDATA[Статьи]]></category>
      <slash:comments>0</slash:comments>
      <pubDate>Tue, 09 Jun 2026 07:25:27 GMT</pubDate>
      <content:encoded><![CDATA[<p>Протокол связи микроконтроллера — это набор правил формирования кадров поверх физического интерфейса (UART, RS-485). Если вы когда-либо писали прошивку, которой нужно «разговаривать» с компьютером, то знаете: надёжность связи важнее скорости. Один потерянный байт или сбой в синхронизации — и устройство зависает или выполняет чужую команду. В этой статье разберём, как проектировать собственные протоколы связи микроконтроллеров: от структуры кадра до парсера на конечном автомате.</p><h2>Что такое протокол передачи данных</h2><p>Под <b>протоколом передачи данных</b> здесь понимается формат пакетов (кадров), которые строятся поверх физического уровня. Физический уровень — это уже выбранный интерфейс: RS-232, RS-485, инфракрасный канал, радиомодуль или оптоволокно. От него мы получаем две базовые операции: отправить один байт и принять один байт. Всё остальное — наша задача.</p><p>Данные передаются пакетами — <b>кадрами</b>. Хороший кадр позволяет приёмнику понять: где начало сообщения, кому оно адресовано, сколько в нём полезных данных и не повредились ли они по дороге.</p><p>Кадр состоит из заголовка, адресов, типа данных, длины, полезной нагрузки, контрольной суммы и концевика.</p><p>Для защиты от случайных совпадений заголовок делают многобайтовым, а контрольную сумму считают по всей значащей части кадра.</p><p>Парсинг удобно реализовывать конечным автоматом: каждый принятый байт переводит машину в новое состояние.</p><p>На хосте данные почти всегда буферизуются; на простых МК часто выгоднее передавать напрямую, чтобы сэкономить ОЗУ.</p><h2>Структура кадра: из чего собирать пакет</h2><p>Надёжный протокол обычно включает семь логических полей. Не все обязательны — выбор зависит от задачи.</p><h3>Заголовок и концевик</h3><p><b>Заголовок</b> (frame header) и <b>концевик</b> (frame tail) отмечают границы кадра. Главное требование — минимизировать вероятность случайного совпадения этих байтов в потоке данных. Есть два подхода:</p><ul><li><b>Подбор характерных байтов.</b> Если данные предсказуемы (например, только ASCII-текст), можно выбрать заголовок из диапазона непечатаемых символов.</li><li><b>Увеличение длины.</b> Для случайных данных лучше сделать заголовок многобайтовым — например, 0x55 0xAA 0x7E. Вероятность случайного совпадения трёх конкретных байтов подряд падает экспоненциально. Даже если совпадение произойдёт, его отловит контрольная сумма.</li></ul><h3>Адресация</h3><p><b>Адрес назначения</b> нужен в системах типа «один к многим» — например, когда один хост управляет несколькими датчиками по общей шине RS-485. В сложных сетях добавляют ещё и <b>адрес источника</b>, чтобы получатель знал, от кого пришёл пакет.</p><h3>Тип, длина и данные</h3><p><b>Тип данных</b> (data type) говорит, что дальше идёт команда или полезная нагрузка. <b>Длина</b> (data length) указывает число значащих байтов в блоке данных. Вместе они образуют «тело» кадра — ту часть, которую мы действительно хотим доставить.</p><h3>Контрольная сумма</h3><p><b>Контрольная сумма</b> проверяет целостность кадра. Простейший вариант — арифметическая сумма всех байтов тела. Для более серьёзной защиты применяют CRC (циклический избыточный код): он ловит пакетные ошибки и перестановки битов, которые простая сумма пропустит. Выбор алгоритма — компромисс между скоростью вычисления на МК и требуемой надёжностью.</p><h2>Передача: хост и микроконтроллер</h2><p>На физическом уровне отправка сводится к посылке байтов один за другим. Но способ организации этой посылки сильно влияет на производительность.</p><h3>Передача с микроконтроллера</h3><p>На простых контроллерах вроде семейства 8051 часто используют <b>прямую передачу</b>: процессор загружает байт в буфер UART и ждёт флага готовности. Плюс — данные моментально оказываются на линии. Минус — процессор занят на всё время отправки.</p><p>Альтернатива — <b>передача по прерыванию</b>: байты складываются в кольцевой буфер, а прерывание UART отправляет их фоном. Экономит процессорное время, но требует ОЗУ под буфер. На 8051 с его скудной памятью прямая передача часто выигрывает.</p><h3>Передача с хоста</h3><p>На ПК данные почти всегда буферизуются операционной системой. Программист работает с тремя уровнями абстракции:</p><ol><li><b>Контролы ОС.</b> В Windows — компоненты вроде MSComm (устаревший 32-bit ActiveX, не рекомендуется для новых проектов). Просто, но нужно следить за блокировками при приёме и многопоточностью.</li><li><b>Системные API.</b> В Windows и Linux последовательный порт — это файл. Открываем через CreateFile или open(), но перед чтением и записью требуется настройка параметров порта (в Linux — termios со скоростью, чётностью и размером слова).</li><li><b>Класс-обёртка.</b> Например, CSerialPort для Windows: он инкапсулирует инициализацию, поток приёма и отправку. После открытия порта вызов WriteToPort отправляет массив байтов, а внутренний поток следит за входящими данными и шлёт сообщения родительскому окну.</li></ol><h2>Приём и парсинг на конечном автомате</h2><p>Приём данных на стороне микроконтроллера тоже бывает двух видов: <b>опрос</b> (поллинг) и <b>прерывание</b>. Опрос проще, но отнимает процессорное время. Прерывание эффективнее: байт пришёл — сработала процедура обработки прерывания (ISR, Interrupt Service Routine), процессор отвлёкся на доли миллисекунды и вернулся к задаче.</p><p>Где размещать парсер протокола? Если протокол простой, его можно держать прямо в обработчике прерывания: приняли корректный кадр — установили флаг, основной цикл реагирует. Для сложных протоколов лучше писать байты в буфер и разбирать их в главном цикле. Гибридный подход тоже возможен: в прерывании ищем только «команду подключения», а остальное парсим фоном.</p><h3>Пример: разбор кадра по состояниям</h3><p>Рассмотрим конкретный формат кадра:</p><p>Парсер реализуем через переменную state_machine. Каждое состояние соответствует ожидаемому байту. Если пришёл не тот байт — автомат сбрасывается в ноль. Это защищает от «залипания» в промежуточном состоянии при обрыве связи или помехах.</p><p><b>Совет по стабильности:</b><br />Сброс автомата при несовпадении заголовка, адресов, длины, checksum или концевика — ключевая техника. Без неё при обрыве кадра парсер застрянет в промежуточном состоянии, и следующие кадры будут отвергнуты.</p><h2>Приём на стороне хоста</h2><p>На ПК приём организуется проще: операционная система уже буферизует входящие байты. Для неблокирующего чтения запускают отдельный поток, который ждёт данных из порта и передаёт их в основной процесс через сообщения или обратный вызов. Класс CSerialPort, например, отправляет родительскому окну сообщение WM_COMM_RXCHAR с каждым новым байтом. Обработчик этого сообщения просто вызывает тот же парсер, что и на микроконтроллере.</p><p>Таким образом, логика разбора протокола <b>единая</b> для обеих сторон. Различается только способ доставки байтов в парсер: прерывание ISR на МК и поток ОС на хосте.</p><h2>Выводы</h2><p>Проектирование протокола связи для микроконтроллера — это не ракетостроение, но требует дисциплины. Хороший кадр защищает границы (заголовок + концевик), адресует получателя, указывает длину и проверяет целостность. Парсинг на конечном автомате делает код предсказуемым и устойчивым к сбоям.</p><p>Главный принцип — <b>сбрасывать автомат при любом нарушении ожидаемого шаблона</b>. Это предотвращает «залипание» и позволяет системе быстро восстановиться после помехи. На основе этой базы можно наращивать надёжность: добавлять повторные передачи, порядковые номера, шифрование — в зависимости от требований проекта.</p><blockquote>Хороший протокол — это не тот, который передаёт быстрее всех, а тот, который не ломается при помехах.</blockquote><p><b>Источник:</b> оригинальная статья Leo Liu — <a href="https://dev.to/sienovoleo/microcontroller-communication-protocol-design-1e29">Microcontroller Communication Protocol Design</a> (DEV Community).</p>]]></content:encoded>
    </item>
    <item>
      <title>IPv6-зоны в URL: почему Go падает на fe80::%eth0 и как это чинить</title>
      <link>https://tproger.ru/articles/ipv6-zony-v-url-pochemu-go-padaet-na-fe80-eth0-i-kak-eto-chinit</link>
      <comments>https://tproger.ru/articles/ipv6-zony-v-url-pochemu-go-padaet-na-fe80-eth0-i-kak-eto-chinit?scrollTo=tproger-comments</comments>
      <dc:creator><![CDATA[Евгений Стребков]]></dc:creator>
      <guid isPermaLink="true">https://tproger.ru/articles/ipv6-zony-v-url-pochemu-go-padaet-na-fe80-eth0-i-kak-eto-chinit</guid>
      <description><![CDATA[<p>Разбираем, как IPv6 link-local адреса с зонами ломают парсинг URL в Go, nginx и Python. Почему % нужно кодировать как %25 по RFC 6874 с 2013 года. Узнайте, как правильно собирать URL и не сломать продакшен.</p><p>— Читать дальше «<a rel="follow" href="https://tproger.ru/articles/ipv6-zony-v-url-pochemu-go-padaet-na-fe80-eth0-i-kak-eto-chinit">IPv6-зоны в URL: почему Go падает на fe80::%eth0 и как это чинить</a>»</p>]]></description>
      <category><![CDATA[Интернет]]></category>
      <category><![CDATA[Linux]]></category>
      <category><![CDATA[Open Source]]></category>
      <category><![CDATA[Веб-разработка]]></category>
      <category><![CDATA[Языки программирования]]></category>
      <category><![CDATA[Сетевые протоколы]]></category>
      <category><![CDATA[Golang]]></category>
      <category><![CDATA[Статьи]]></category>
      <slash:comments>0</slash:comments>
      <pubDate>Fri, 05 Jun 2026 12:56:04 GMT</pubDate>
      <content:encoded><![CDATA[<p>В URL с IPv6 link-local адресами символ % зоны интерфейса нужно кодировать как %25 — иначе парсер Go выбросит ошибку. Если вы пишете сервис, который ходит по локальной сети через IPv6, и ловите странную ошибку парсинга URL, скорее всего, вы столкнулись с одним из самых неочевидных граничных случаев современной работы с сетями.</p><p>В IPv6 каждый сетевой интерфейс получает <b>link-local адрес</b> из диапазона fe80::/10 (первые 10 бит фиксированы, остальное — адрес интерфейса). Если у машины два интерфейса — например, Ethernet и Wi-Fi — оба будут в одном и том же префиксе. Вопрос: как операционная система понимает, к какому именно интерфейсу адресовать пакет? Ответ — <b>зоны (scopes)</b>.</p><p>В IPv6 зона интерфейса записывается через %: fe80::4%eth0. Это нужно, чтобы различать link-local адреса на разных сетевых интерфейсах.</p><p>В URL зона попадает внутрь квадратных скобок: [fe80::4%eth0]:80. Но символ % в URL — это начало percent-encoding, поэтому парсер ломается.</p><p>Решение — экранировать % как %25: [fe80::4%25eth0]:80. Это поведение зафиксировано в RFC 6874.</p><p>Проблема затрагивает не только Go, но и nginx, Python requests и браузеры. Поддержка зон в HTTP-клиентах остаётся фрагментарной.</p><h2>Как зоны работают в IPv6</h2><p>Зона (или scope ID) — это механизм, позволяющий ядру отличать адреса из пересекающихся диапазонов. Для link-local адресов fe80::/10 он критичен: без него роутинговая таблица не поймёт, через какой интерфейс отправлять трафик.</p><p>Формат зоны зависит от ОС. В Linux это имя интерфейса — eth0, wlan0, ens192. В Windows — числовой идентификатор интерфейса. Полный адрес выглядит так:</p><p>Квадратные скобки отделяют хост от порта — иначе двоеточия IPv6-адреса спутаются с разделителем порта.</p><h2>Конфликт зон и URL</h2><p>Теперь вставим этот адрес в URL. На первый взгляд всё просто:</p><p>Но попробуем распарсить его в Go:</p><p>Получаем ошибку:</p><p>Что произошло? В URL любой символ, не входящий в разрешённый набор, должен быть <b>percent-encoded</b>. Пробел превращается в %20, кириллица — в последовательности вроде %D0%90. Парсер видит %e и пытается декодировать его как hex-последовательность. et — не валидный байт, поэтому URL отклоняется.</p><h2>Почему Go падает и как это чинить</h2><p>С точки зрения стандарта Go ведёт себя корректно. RFC 3986 определяет URL-грамматику, а RFC 6874 специально дополняет её для IPv6-зон: символ % перед zone ID должен быть сам закодирован как %25.</p><p>Правильный URL выглядит так:</p><p>Проверяем в Go:</p><p>Вывод:</p><p>Go корректно декодирует %25 обратно в % при извлечении хоста. То есть библиотека поддерживает RFC 6874, но <b>требует от вызывающего кода заранее закодировать зону</b>.</p><h2>RFC 6874: это не баг, а фича</h2><p>В RFC 6874 формально описан синтаксис IPv6-адресов с зонами в литералах URL. Ключевой фрагмент:</p><p>То есть зона записывается не как %eth0, а как %25eth0. Это выглядит ужасно с точки зрения пользовательского опыта, но таково решение стандартизации: совместимость с существующей URL-грамматикой важнее эргономики.</p><blockquote>Наша индустрия меня удивляет. Стандарт говорит: чтобы записать обычный символ процента в адресе, нужно его самого закодировать процентами. Это ужасно, но, похоже, это граничный случай, который касается не только Go.</blockquote><p>И действительно, та же проблема есть и в других инструментах:</p><ul><li><b>nginx</b> — <a href="https://trac.nginx.org/nginx/ticket/623">тикет #623</a>, созданный более десяти лет назад; проблема отсутствия поддержки link-local адресов с зонами до сих пор актуальна.</li><li><b>Python requests</b> — <a href="https://github.com/psf/requests/issues/6808">issue #6808</a>: даже при ручном кодировании % как %25 библиотека некорректно обрабатывает IPv6-зоны в URL, потому что urllib3 декодирует %25 обратно в %.</li><li><b>Браузеры</b> — draft Schinazi объясняет, почему зоны ломают концепцию origin, и рекомендует использовать mDNS вместо прямого указания link-local адресов в URI.</li></ul><h2>Что делать разработчику</h2><p>Если ваше Go-приложение работает с локальными IPv6-адресами — например, подключается к сервисам в Docker-сети, IoT-устройствам или внутренним API через link-local — учитывайте следующее:</p><ol><li>Перед передачей IPv6-адреса с зоной в url.Parse всегда экранируйте % как %25.</li><li>Используйте net.JoinHostPort для сборки host:port — он корректно оборачивает IPv6 в скобки, но не кодирует зону. Дополнительное кодирование остаётся на вас.</li><li>Если адрес приходит от пользователя, валидируйте его до парсинга: зона должна содержать только допустимые символы (имя интерфейса в Linux, числовой ID в Windows).</li><li>Тестируйте на реальных интерфейсах с разными зонами, чтобы убедиться, что кодирование работает корректно в вашей среде.</li></ol><p><b>На заметку:</b><br />Если вы пишете HTTP-клиент для embedded-устройств или промышленных контроллеров, которые общаются через link-local IPv6, ручное кодирование зоны — не костыль, а необходимость. Большинство библиотек не делают этого автоматически.</p><h2>FAQ</h2><h2>Выводы</h2><p>IPv6-зоны — редкий, но живучий граничный случай. Если вы пишете сетевой код на Go, который должен работать в гетерогенных средах — Docker, Kubernetes, embedded-системы, промышленные сети — знайте, что fe80::1%eth0 в URL превращается в fe80::1%25eth0. Это не баг парсера, а требование стандарта RFC 6874.</p><p>Инкапсулируйте кодирование зоны во вспомогательную функцию и всегда прогоняйте IPv6-адреса через неё перед сборкой URL. Экономия пяти минут сейчас обернётся часом отладки в продакшене, когда сервис внезапно не сможет достучаться до соседнего контейнера по link-local.</p><p><b>Источники:</b><br />• <a href="https://xeiaso.net/notes/2026/ipv6-zones-go-url/">Xe Iaso — IPv6 zones in Go URLs</a><br />• <a href="https://datatracker.ietf.org/doc/html/rfc6874">RFC 6874 — Representing IPv6 Zone Identifiers in Address Literals and Uniform Resource Identifiers</a><br />• <a href="https://datatracker.ietf.org/doc/html/draft-schinazi-httpbis-link-local-uri-bcp-03">draft-schinazi-httpbis-link-local-uri-bcp-03 — IPv6 Link-Local URIs</a></p>]]></content:encoded>
    </item>
    <item>
      <title>OpenAI Codex собрал десятилетние DoS-атаки в HTTP/2 Bomb</title>
      <link>https://tproger.ru/news/openai-codex-sobral-desyatiletnie-dos-ataki-v-http-2-bomb</link>
      <comments>https://tproger.ru/news/openai-codex-sobral-desyatiletnie-dos-ataki-v-http-2-bomb?scrollTo=tproger-comments</comments>
      <dc:creator><![CDATA[Евгений Стребков]]></dc:creator>
      <guid isPermaLink="true">https://tproger.ru/news/openai-codex-sobral-desyatiletnie-dos-ataki-v-http-2-bomb</guid>
      <description><![CDATA[<p>Codex от OpenAI объединил HPACK-бомбу и Slowloris в HTTP/2 Bomb. Один клиент на 100 Мбит/с выводит сервер из строя за секунды. Проверьте защиту.</p><p>— Читать дальше «<a rel="follow" href="https://tproger.ru/news/openai-codex-sobral-desyatiletnie-dos-ataki-v-http-2-bomb">OpenAI Codex собрал десятилетние DoS-атаки в HTTP/2 Bomb</a>»</p>]]></description>
      <category><![CDATA[Сетевые протоколы]]></category>
      <category><![CDATA[Безопасность]]></category>
      <category><![CDATA[OpenAI]]></category>
      <category><![CDATA[Информационная безопасность]]></category>
      <category><![CDATA[Уязвимость]]></category>
      <category><![CDATA[Кибербезопасность]]></category>
      <category><![CDATA[Новости]]></category>
      <slash:comments>0</slash:comments>
      <pubDate>Fri, 05 Jun 2026 11:41:49 GMT</pubDate>
      <content:encoded><![CDATA[<p>Обновите конфигурацию HTTP/2: ИИ-агент <b>Codex</b> помог обнаружить атаку <b>HTTP/2 Bomb</b>, которая выводит популярные веб-серверы из строя за секунды с обычного домашнего компьютера.</p><p><b>HTTP/2 Bomb</b> — это комбинация двух техник отказа в обслуживании, известных свыше десяти лет: HPACK bomb (класс атаки; известный частный случай — <a href="https://nvd.nist.gov/vuln/detail/CVE-2016-6581" rel="noopener">CVE-2016-6581</a> в библиотеке Python HPACK) и удержания соединений в стиле Slowloris в реализации HTTP/2 Apache (<a href="https://nvd.nist.gov/vuln/detail/CVE-2016-8740" rel="noopener">CVE-2016-8740</a>, <a href="https://nvd.nist.gov/vuln/detail/CVE-2016-1546" rel="noopener">CVE-2016-1546</a>). Первая заставляет сервер резервировать память под динамические таблицы сжатых заголовков, вторая не даёт соединениям закрыться.</p><p>Codex от OpenAI объединил HPACK-бомбу и Slowloris в единую атаку HTTP/2 Bomb.</p><p>Уязвимы стандартные конфигурации nginx, Apache httpd, Microsoft IIS, Envoy и Cloudflare Pingora.</p><p>По данным сканирования Shodan, более 880 тысяч сайтов на HTTP/2 могут быть под угрозой.</p><p>nginx исправлен в версии 1.29.8, Apache — в mod_http2 v2.0.41 (CVE-2026-49975), Envoy выпустил исправление.</p><p>Для Microsoft IIS и Cloudflare Pingora официального исправления пока нет; рекомендуется ограничить число заголовков в запросе или отключить HTTP/2.</p><p>Атаку выявила команда <b>Calif</b> во главе с исследователем <b>Quang Luong</b>. Они использовали Codex для анализа исходного кода: агент заметил, что две известные DoS-техники можно объединить, и помог построить рабочий эксплойт. По словам Luong, домашний компьютер на канале 100 Мбит/с способен сделать уязвимый сервер недоступным за несколько секунд. Против Apache httpd и Envoy один клиент тратит 20 секунд, чтобы занять 32 ГБ памяти сервера.</p><h2>Как работает HTTP/2 Bomb</h2><p>HTTP/2 сжимает заголовки алгоритмом HPACK и хранит их в динамических таблицах. Атака отправляет тысячи мелких заголовков, чтобы заставить сервер резервировать память под каждую запись таблицы — даже если сами заголовки почти пустые. Одновременно соединения удерживаются открытыми по принципу Slowloris, и сервер не может освободить выделенную память.</p><h2>Кто уже выпустил исправления от HTTP/2 Bomb</h2><ul><li><b>nginx</b> — версия 1.29.8, директива max_headers из freenginx.</li><li><b>Apache httpd</b> — mod_http2 v2.0.41, <a href="https://nvd.nist.gov/vuln/detail/CVE-2026-49975" rel="noopener">CVE-2026-49975</a>.</li><li><b>Envoy</b> — выпущено исправление, исследователи проверяют его эффективность.</li><li><b>Microsoft IIS</b> и <b>Cloudflare Pingora</b> — исправлений пока нет. Cloudflare <b>оспаривает наличие уязвимости</b> в Pingora, но заявляет, что её архитектура и DDoS-защита справляются с атакой автоматически.</li></ul><h2>Как защититься от HTTP/2 Bomb</h2><p>Пока Microsoft и Cloudflare не выпустили обновления, Calif рекомендует либо отключить HTTP/2, либо ограничить максимальное количество заголовков, которые клиент может отправить в одном запросе.</p><h2>Выводы</h2><blockquote>Обе половины атаки были известны десять лет. Codex проанализировал исходный код, обнаружил, что две техники можно объединить, и построил комбинированную атаку. Комбинация очевидна, когда ты её видишь, но, насколько нам известно, никто из людей не собирал её против этих серверов.</blockquote><p>Технический разбор и PoC-скрипты опубликованы в <a href="https://blog.calif.io/p/codex-discovered-a-hidden-http2-bomb" rel="noopener">блоге Calif</a> и на <a href="https://github.com/califio/publications/tree/main/MADBugs/http2-bomb" rel="noopener">GitHub</a>. Дополнительные детали — в материале <a href="https://www.theregister.com/security/2026/06/04/openais-codex-chains-decade-old-dos-techniques-into-http/2-bomb/5251377" rel="noopener">The Register</a>.</p><p>Если ваш сервер использует HTTP/2 — проверьте защиту от HTTP/2 Bomb: обновите ПО и ограничьте заголовки прямо сейчас.</p>]]></content:encoded>
    </item>
    <item>
      <title>Пишем прошивку Bluetooth Low Energy на Zephyr OS: полное руководство для разработчиков</title>
      <link>https://tproger.ru/articles/piwem-prowivku-bluetooth-low-energy-na-zephyr-os-polnyj-gajd-dl</link>
      <comments>https://tproger.ru/articles/piwem-prowivku-bluetooth-low-energy-na-zephyr-os-polnyj-gajd-dl?scrollTo=tproger-comments</comments>
      <dc:creator><![CDATA[Евгений Стребков]]></dc:creator>
      <guid isPermaLink="true">https://tproger.ru/articles/piwem-prowivku-bluetooth-low-energy-na-zephyr-os-polnyj-gajd-dl</guid>
      <description><![CDATA[<p>Как с нуля собрать BLE-устройство на Zephyr OS: настройка окружения, GAP, GATT, notifications и примеры кода. Практический гайд для embedded-разработчиков. Попробуйте повторить на nRF52840!</p><p>— Читать дальше «<a rel="follow" href="https://tproger.ru/articles/piwem-prowivku-bluetooth-low-energy-na-zephyr-os-polnyj-gajd-dl">Пишем прошивку Bluetooth Low Energy на Zephyr OS: полное руководство для разработчиков</a>»</p>]]></description>
      <category><![CDATA[Низкоуровневое программирование]]></category>
      <category><![CDATA[Open Source]]></category>
      <category><![CDATA[Инструменты]]></category>
      <category><![CDATA[Hardware]]></category>
      <category><![CDATA[Сетевые протоколы]]></category>
      <category><![CDATA[Статьи]]></category>
      <slash:comments>0</slash:comments>
      <pubDate>Thu, 04 Jun 2026 10:45:38 GMT</pubDate>
      <content:encoded><![CDATA[<p>Ваши беспроводные наушники только что подключились к телефону, смарт-часы синхронизировали пульс, а датчик температуры в соседней комнате отправил показания на шлюз. Всё это работает через Bluetooth Low Energy, и всё чаще прошивку под капотом таких устройств пишут на Zephyr OS.</p><p>Если вы разрабатываете встраиваемые системы или хотите войти в IoT, этот материал — практическое руководство по созданию BLE-периферии с нуля. Мы разберём, как устроен стек, как настроить окружение и как написать код, который управляет железом со смартфона.</p><h2>Что такое Zephyr OS и зачем она для BLE</h2><p><a href="https://zephyrproject.org/">Zephyr OS</a> — открытая операционная система реального времени под управлением Linux Foundation. Лицензия Apache 2.0, поддержка более 600 плат на ARM, RISC-V, x86 и других архитектурах. Главное для нас: внутри неё живёт полноценный BLE-стек, прошедший официальную сертификацию Bluetooth SIG. Рекомендуем также обзор <a href="https://tproger.ru/articles/pervyj-risc-v-rva23-chip-vhodit-v-mainline-linux-chto-eto-znachit/">«Первый RISC-V RVA23 чип входит в mainline Linux»</a>.</p><p>Zephyr OS включает сертифицированный BLE-стек с открытым кодом — от приложения до радиоконтроллера.</p><p>GAP управляет обнаружением и соединениями, GATT — структурой данных (сервисы и характеристики).</p><p>Для старта понадобятся плата nRF52840 DK (~40 USD) и смартфон с приложением nRF Connect.</p><p>Прошивка собирается через west — единый инструмент для клонирования, сборки и прошивки.</p><p>Оптимизация энергопотребления: интервал advertising, peripheral latency, System OFF и отключение неиспользуемых периферий.</p><p>Это означает, что вы работаете не с хобби-реализацией, а со стеком, который прошёл conformance-тестирование. От прикладного кода до радиорегистров — всё открыто. Никаких бинарных блобов. Nordic Semiconductor, чьи чипы доминируют на рынке BLE, построила свой nRF Connect SDK поверх Zephyr. Когда инженеры Nordic пишут прошивку, они используют Zephyr.</p><p>Стек поддерживает Bluetooth 5.x (2M PHY, Coded PHY для дальней связи, Extended Advertising), Bluetooth Mesh, LE Audio с кодеком LC3, Direction Finding и все стандартные профили. Если вы делаете BLE-продукт в 2025–2026 годах — Zephyr входит в тройку лучших платформ.</p><h2>Как работает BLE: два слоя, которые нужно знать</h2><p>Прежде чем писать код, нужна ментальная модель. BLE — это не «классический» Bluetooth для аудио. Он создан для коротких, редких сеансов связи: датчик проснулся, отправил 20 байт, уснул. Такое устройство может работать от таблеточной батарейки годами.</p><p>Разработчик взаимодействует с двумя слоями:</p><ul><li><b>GAP</b> (Generic Access Profile) — отвечает за обнаружение и соединения. Периферия широковещательно рассылает пакеты (advertising), а central (обычно телефон) их слушает и инициирует подключение.</li><li><b>GATT</b> (Generic Attribute Profile) — отвечает за обмен данными после соединения. Данные организованы в иерархии: устройство предоставляет <b>сервисы</b>, внутри которых находятся <b>характеристики</b> — единицы данных со свойствами Read, Write, Notify, Indicate.</li></ul><p>Каждый сервис и характеристика идентифицируются UUID. Стандартные (от Bluetooth SIG) — 16-битные, пользовательские — 128-битные. Хорошо спроектированный набор сервисов — это API вашего устройства.</p><h2>Ключевые выводы</h2><h2>Настройка окружения</h2><p>Для работы понадобится Linux (Ubuntu 22.04+), macOS или Windows с WSL2. Идеальная плата для старта — <a href="https://www.nordicsemi.com/Products/Development-hardware/nRF52840-DK">Nordic nRF52840 DK</a>. Она недорогая, широко доступна и имеет встроенный отладчик J-Link. А ещё посмотрите, <a href="https://tproger.ru/articles/kak-sozdat-samodelnye-ustrojstva-na-raspberry-pi-esp32-i-node-red/">как создать самодельные устройства на Raspberry Pi, ESP32 и Node-RED</a>.</p><h3>Установка зависимостей</h3><p>На Ubuntu устанавливаем toolchain и утилиты:</p><p>Устанавливаем west — CLI для управления многорепозиторным workspace:</p><p>Инициализируем workspace и скачиваем модули (HAL-ы, криптобиблиотеки, Bluetooth controller):</p><p>Устанавливаем Python-зависимости и SDK с кросс-компиляторами:</p><p>Добавляем в ~/.bashrc:</p><h2>Первое приложение: простой beacon</h2><p>Начнём с минимального примера: устройство, которое только объявляет о себе по радио и не принимает соединений. Это база для iBeacon, Eddystone и отслеживание активов.</p><p>Создаём структуру проекта:</p><p>Файл CMakeLists.txt:</p><p>Конфигурация prj.conf:</p><p>Код src/main.c:</p><p>Что происходит: bt_enable(NULL) инициализирует стек синхронно. bt_le_adv_start с параметром BT_LE_ADV_NCONN запускает неконнективный advertising. Массив ad содержит флаги (general discoverable, no BR/EDR) и имя устройства.</p><p>Собираем и прошиваем:</p><p>Открываем nRF Connect на смартфоне, сканируем и видим «MyBeacon» в списке устройств. Прошивка работает.</p><h2>Кастомный сервис: управляем LED со смартфона</h2><p>Beacon полезен, но скучен. Настоящая магия начинается, когда телефон подключается к устройству и управляет им. Сделаем сервис, который позволяет включать LED на плате и читать состояние кнопки.</p><p>Конфигурация prj.conf:</p><p>Основной код. Здесь определяем пользовательские 128-битные UUID для сервиса и двух характеристик:</p><p>Ключевые моменты: BT_GATT_SERVICE_DEFINE собирает GATT базу данных на этапе компиляции. Характеристика LED доступна для чтения и записи, а кнопка — только для чтения. UUID сервиса вынесен в scan response, чтобы не перегружать 31-байтовый advertising-пакет.</p><p>После прошивки подключаемся через nRF Connect, находим кастомный сервис (UUID начинается с 00001234), записываем 0x01 в LED-характеристику — светодиод загорается. Только что вы управляли железом со смартфона по Bluetooth.</p><h2>Notifications: отправляем данные без запроса</h2><p>Чтение и запись — это pull-модель. Но датчики обычно работают по push: термометр сам шлёт температуру, пульсомер — BPM. В BLE для этого есть notifications.</p><p>Чтобы добавить notification в характеристику, нужно:</p><ol><li>Указать свойство BT_GATT_CHRC_NOTIFY в характеристике.</li><li>Добавить CCCD (Client Characteristic Configuration Descriptor) через BT_GATT_CCC — телефон пишет в него 0x0001, чтобы включить уведомления.</li><li>Вызвать bt_gatt_notify при изменении данных.</li></ol><p>Типовой паттерн — периодическая отправка через delayable work item:</p><p>Work item выполняется в системном потоке, а не в контексте прерывания, поэтому вызовы Bluetooth API безопасны.</p><h2>Полный sensor node в одном файле</h2><p>Соберём всё вместе: датчик температуры (симулированный), который читается по запросу и пушится через notifications с настраиваемым интервалом. Добавим обработку соединений и LED-индикацию статуса.</p><p>Здесь важны две детали. Во-первых, температура хранится в формате fixed-point (сотые доли градуса в int16_t) — это позволяет избежать дорогих операций с плавающей точкой на микроконтроллерах без FPU. Во-вторых, проверка в функции записи: если телефон шлёт некорректный интервал, стек возвращает ошибку BT_ATT_ERR_VALUE_NOT_ALLOWED.</p><p>При разрыве соединения обработчики отменяют work item, гасят LED и перезапускают advertising — устройство снова доступно для обнаружения.</p><h2>Безопасность: pairing и шифрование</h2><p>В рабочей среде BLE без защиты — это устройство, которое любой прохожий может переключить или прочитать. Pairing создаёт зашифрованный канал и, опционально, аутентифицирует стороны.</p><p>Методы pairing в BLE:</p><ul><li><b>Just Works</b> — шифрование без аутентификации. Защищает от пассивного прослушивания, но не от MITM.</li><li><b>Passkey Entry</b> — пользователь вводит 6-значный код. Аутентификация есть.</li><li><b>Numeric Comparison</b> — оба устройства показывают число, пользователь подтверждает совпадение.</li><li><b>Out of Band (OOB)</b> — обмен ключами через внешний канал, например NFC.</li></ul><p>Включаем SMP (Security Manager Protocol) и persistent storage для bonding:</p><p>Данные сопряжения (ключи, обменянные при pairing) сохраняются во флеш-памяти и переживают перезагрузку. Без этого пользователю придётся проходить pairing после каждого включения устройства — ужасный пользовательский опыт.</p><p>Чтобы требовать шифрования для чтения характеристики, меняем permission:</p><p>BT_GATT_PERM_READ_ENCRYPT означает, что чтение возможно только по зашифрованному соединению. Если телефон пытается прочитать без pairing, стек автоматически инициирует процедуру сопряжения.</p><h2>Роль central: сканируем и подключаемся</h2><p>Все примеры выше — периферия (peripheral): устройство, которое рассылает advertising и ждёт подключения. Другая сторона — central: шлюз, хаб, сборщик данных. Для полной картины нужно понимать обе роли.</p><p>Конфигурация central:</p><p>Запуск сканирования и подключение к первому найденному устройству с RSSI выше -70 dBm:</p><p>После подключения выполняется обнаружение сервисов через bt_gatt_discover, затем — чтение характеристик и подписка на notifications через bt_gatt_subscribe.</p><h2>Оптимизация: MTU, PHY и энергопотребление</h2><p>По умолчанию BLE ATT MTU — 23 байта. Минус 3 байта заголовка ATT, получаем 20 байт полезной нагрузки на операцию. Для передачи прошивки или больших буферов этого мало.</p><p>Включаем MTU 247 байт и Data Length Extension:</p><p>Zephyr автоматически инициирует MTU exchange при соединении. С 247-байтным MTU, интервалом 7,5 мс и 2M PHY пропускная способность достигает ~800–1000 кбит/с на практике.</p><p>Выбор PHY — ещё один рычаг:</p><ul><li><b>1M PHY</b> — дефолт, стандартная дальность и скорость.</li><li><b>2M PHY</b> (Bluetooth 5.0) — удваивает скорость, сокращает время работы радио и экономит энергию. Дальность чуть меньше.</li><li><b>Coded PHY</b> — увеличивает дальность в 2–4 раза за счёт помехоустойчивого кодирования, но скорость падает до 125 кбит/с.</li></ul><p>Энергосбережение — ключ к автономным устройствам. Главные приёмы:</p><ol><li>Увеличить advertising interval: 1000 мс потребляет в 5 раз меньше, чем 200 мс.</li><li>Использовать peripheral latency: пропускать connection events, когда нечего передавать.</li><li>Включить System OFF: ток nRF52840 падает с ~3 мА до ~1,5 мкА.</li><li>Отключить неиспользуемые периферии в devicetree overlay — UART, SPI, I2C жрут ток даже в простое.</li></ol><p>Цель для BLE-датчика — средний ток в единицы микроампер. При таком потреблении таблеточная батарейка CR2032 (225 мА·ч) проработает годы.</p><h2>Что ещё умеет стек: Mesh, DFU и LE Audio</h2><p>Помимо классической point-to-point связи, Zephyr поддерживает три продвинутые технологии:</p><h3>Bluetooth Mesh</h3><p><b>Bluetooth Mesh</b> — многие-ко-многим сеть поверх BLE. Узлы пересылают сообщения друг другу, расширяя радиус действия за пределы одного соединения. Используется в умных домах и офисах: десятки лампочек, выключателей и датчиков общаются без единого центрального хаба.</p><h3>DFU over BLE</h3><p><b>DFU over BLE</b> — обновление прошивки по воздуху. Интеграция с MCUboot даёт два слота: активный и резервный. Новая прошивка загружается через BLE SMP сервис, устройство перезагружается, MCUboot проверяет подпись и, в случае неудачи, автоматически откатывается к предыдущей версии.</p><h3>LE Audio</h3><p><b>LE Audio</b> — новый аудиостандарт на базе BLE. Кодек LC3 даёт более высокое качество, чем классический SBC, при вдвое меньшем битрейте. Режим BIS (broadcast) позволяет одному источнику транслировать звук на неограниченное число приёмников — технология, лежащая в основе <a href="https://www.bluetooth.com/auracast/">Auracast</a>.</p><h2>Отладка: что делать, когда не работает</h2><p>BLE сложно отлаживать, потому что радио невидимо. Начинайте с логов:</p><p>Это выдаст подробную трассировку каждой HCI-команды, advertising event и GATT-операции. Вывод идёт в UART — не оставляйте UART включённым в рабочей среде, он жрёт ток.</p><p>Интерактивный Zephyr shell позволяет вручную запускать bt advertise on, bt gatt discover и bt gatt read через последовательный порт. Это бесценно для быстрой проверки гипотез без перепрошивки.</p><p>Для анализа радиоэфира используйте nRF Sniffer для Bluetooth LE — прошивка для nRF52840 DK, которая вместе с Wireshark показывает каждый пакет в эфире: advertising PDU, connection events, pairing exchange. Это окончательный инструмент, когда подозреваете проблему на уровне протокола.</p><h2>Часто задаваемые вопросы</h2><h2>Выводы</h2><p>Zephyr OS превращает разработку BLE-устройств из работы с чёрными ящиками в инженерную дисциплину. Полный открытый стек, сертификация Bluetooth SIG, поддержка 600+ плат и активное сообщество делают его одной из сильнейших платформ для IoT.</p><p>Мы прошли путь от простого beacon до полноценного sensor node с notifications, управлением соединениями и проверкой входных данных. Этих паттернов — advertising, GATT-обработчики, CCCD, подсчёт ссылок на соединение — достаточно, чтобы построить практически любое BLE-периферийное устройство.</p><p>Следующий шаг — взять реальное железо, реальный датчик и собрать устройство, которое решает вашу задачу. Термометр для теплицы, беспроводная кнопка для умного дома, трекер для велосипеда — всё это становится доступным после освоения базовых паттернов.</p><blockquote>Главный способ понять BLE — не читать спецификацию, а заставить мигать LED со смартфона. Когда это получится, остальное пойдёт быстро.</blockquote><p><b>Источники:</b></p><p><a href="https://www.freecodecamp.org/news/how-to-build-bluetooth-applications-with-zephyr-os-a-handbook-for-devs/">How to Build Bluetooth Applications with Zephyr OS: A Handbook for Devs</a> — freeCodeCamp.</p><p><a href="https://docs.zephyrproject.org/latest/connectivity/bluetooth/index.html">Zephyr Bluetooth Stack Documentation</a> — официальная документация.</p><p><a href="https://www.bluetooth.com/specifications/">Bluetooth SIG Specifications</a> — спецификации протоколов и профилей.</p>]]></content:encoded>
    </item>
    <item>
      <title>Wake-on-LAN: как включить компьютер по сети и написать WOL-инструмент на Go</title>
      <link>https://tproger.ru/translations/wake-on-lan-kak-vklyuchit-kompyuter-po-seti-i-napisat-wol-instr</link>
      <comments>https://tproger.ru/translations/wake-on-lan-kak-vklyuchit-kompyuter-po-seti-i-napisat-wol-instr?scrollTo=tproger-comments</comments>
      <dc:creator><![CDATA[Евгений Стребков]]></dc:creator>
      <guid isPermaLink="true">https://tproger.ru/translations/wake-on-lan-kak-vklyuchit-kompyuter-po-seti-i-napisat-wol-instr</guid>
      <description><![CDATA[<p>Разбираем Wake-on-LAN изнутри: Magic Packet, UDP-отправка, ограничения протокола и рабочая реализация на Go. Напишите свой WOL-инструмент за 30 строк кода.</p><p>— Читать дальше «<a rel="follow" href="https://tproger.ru/translations/wake-on-lan-kak-vklyuchit-kompyuter-po-seti-i-napisat-wol-instr">Wake-on-LAN: как включить компьютер по сети и написать WOL-инструмент на Go</a>»</p>]]></description>
      <category><![CDATA[Linux]]></category>
      <category><![CDATA[Сетевые протоколы]]></category>
      <category><![CDATA[Практика]]></category>
      <category><![CDATA[Golang]]></category>
      <category><![CDATA[Системное администрирование]]></category>
      <category><![CDATA[Переводы]]></category>
      <slash:comments>0</slash:comments>
      <pubDate>Thu, 16 Apr 2026 13:30:04 GMT</pubDate>
      <content:encoded><![CDATA[<p>Wake-on-LAN (WOL) — сетевой протокол, который позволяет включить любой компьютер в локальной сети одной командой, без физического доступа к кнопке питания. Удобно, когда нужно срочно добраться до файла на выключенной рабочей машине или запустить ночные обновления на сотне серверов, не обходя каждый.</p><ul><li>Wake-on-LAN — сетевой протокол для удалённого включения компьютера через Magic Packet.</li><li>Magic Packet: 6 байт 0xFF + MAC-адрес, повторённый 16 раз.</li><li>Пакет отправляется по UDP на широковещательный адрес 255.255.255.255, де-факто стандарт — порт 9.</li><li>Ограничения: только в пределах одной сети или VLAN, только по Ethernet, нет подтверждения доставки.</li><li>Реализуем собственный WOL-инструмент на Go с нуля.</li></ul><h2>Что такое Wake-on-LAN</h2><p>Wake-on-LAN (WOL) — протокол канального уровня, который будит компьютер или сервер, когда сетевой интерфейс получает специальный Magic Packet. Сетевая карта с активированной функцией WOL постоянно прослушивает широковещательный трафик даже когда компьютер выключен, но подключён к сети. При обнаружении Magic Packet она посылает сигнал на BIOS, и система загружается.</p><p>Для работы WOL необходимо, во-первых, включить поддержку в BIOS или UEFI (обычно называется Wake-on-LAN или Power On by PCI-E); во-вторых, активировать её в операционной системе для нужного сетевого адаптера. На Linux это делается одной командой:</p><p>Здесь g — режим MagicPacket. Проверить текущее состояние — ethtool eth0 | grep Wake. На Windows нужную опцию ищите в «Свойства сетевого адаптера → Управление электропитанием → Разрешить этому устройству выводить компьютер из ждущего режима».</p><h2>Как устроен Magic Packet</h2><p>Magic Packet — бинарный фрейм с жёстко заданной структурой. Сначала идёт синхропоследовательность: 6 байт 0xFF. Эти байты сигнализируют сетевой карте о начале нового фрейма.</p><p>Сразу после синхропоследовательности — MAC-адрес целевой машины, повторённый 16 раз без пробелов и разделителей. Именно по нему сетевая карта понимает, что пакет адресован ей. В итоге Magic Packet занимает 102 байта: 6 байт синхропоследовательности плюс 6 байт MAC × 16 повторений.</p><p>Пример реального Magic Packet с MAC-адресом 12:34:56:78:9a:bc, захваченного в Wireshark:</p><p>Некоторые реализации WOL поддерживают опциональный пароль в конце пакета — для защиты от несанкционированного включения. Механизм SecureOn использует 6 байт, AMD-спецификация допускает 4 байта. Однако не каждый BIOS поддерживает эту функцию.</p><h2>Как отправить Magic Packet</h2><p>Magic Packet может быть передан поверх любого сетевого протокола — сетевой карте достаточно найти нужную последовательность байт в полученном фрейме. На практике пакет отправляют как UDP-датаграмму на широковещательный адрес.</p><p>Для IPv4 используется широковещательный адрес 255.255.255.255 — он охватывает всю локальную сеть или сегмент. IPv6 вместо broadcast использует multicast. Де-факто стандарт для порта назначения — 9 (Discard Protocol), реже используют 7 или 0.</p><h2>Ограничения Wake-on-LAN</h2><p>Прежде чем настраивать WOL в продакшне, важно понять его ограничения:</p><ul><li><b>Только одна сеть или VLAN.</b> Magic Packet не маршрутизируется — получить его может лишь устройство в той же локальной сети или VLAN, что и отправитель. Для удалённого включения через интернет нужен промежуточный узел в этой сети: VPN, Raspberry Pi или роутер с поддержкой WOL.</li><li><b>Нужен MAC-адрес.</b> WOL работает на канальном уровне, поэтому нельзя разбудить компьютер, зная только его IP-адрес.</li><li><b>Только проводной Ethernet.</b> Большинство Wi-Fi-адаптеров не поддерживают WOL. Исключение — устройства с поддержкой стандарта WoWLAN (Wake on Wireless LAN), но на практике их мало, и настройка требует совместимого драйвера.</li><li><b>Нет подтверждения доставки.</b> UDP — протокол без установления соединения, поэтому после отправки Magic Packet невозможно узнать, получил ли его компьютер и включился ли он.</li><li><b>Зависимость от BIOS.</b> Некоторые материнские платы пробуждаются только из состояний S3 или S4, но не из полного выключения S5. Проверяйте документацию к платформе.</li></ul><h2>Реализация на Go</h2><p>Напишем собственный WOL-инструмент на Go — одна из немногих задач, где стандартной библиотеки хватает полностью. Если хочется погрузиться в Go глубже, у нас есть <a href="https://tproger.ru/articles/sravnenie-golang-veb-frejmvorkov-2026-goda--top-5-luchwih-variant">обзор Golang-фреймворков 2026 года</a>. Нам понадобятся две функции: CreateMagicPacket для формирования пакета и SendMagicPacket для его отправки.</p><h3>CreateMagicPacket: формируем пакет</h3><p>Функция принимает MAC-адрес строкой и возвращает готовый байтовый срез или ошибку. Первым делом проверяем валидность MAC-адреса с помощью регулярного выражения:</p><p>После валидации убираем разделители из MAC-адреса, затем повторяем его 16 раз:</p><p>Объединяем синхропоследовательность с повторённым MAC-адресом и декодируем hex-строку в байтовый срез:</p><h3>SendMagicPacket: отправляем пакет</h3><p>Функция принимает Magic Packet ([]byte), IP-адрес назначения и порт. Сначала проверяем валидность IP через стандартную функцию net.ParseIP — в отличие от regex, она корректно обрабатывает и IPv4, и IPv6:</p><p>Открываем UDP-соединение через net.Dial. WOL не требует установления соединения — UDP идеально подходит: быстро, без handshake. Ключевое слово defer гарантирует закрытие соединения по завершении функции:</p><p>Отправляем Magic Packet в сеть через conn.Write. Если функция возвращает nil — пакет ушёл в сеть. Получил ли его компьютер и включился ли — WOL не сообщает, это ограничение протокола:</p><p>Полный рабочий код обеих функций и готовую утилиту командной строки можно найти на GitHub: <a href="https://github.com/xaner4/Gowakeup">xaner4/Gowakeup</a>. Типичный вызов после сборки — ./gowakeup -mac AA:BB:CC:DD:EE:FF.</p><h2>Выводы</h2><p>Wake-on-LAN — простой и элегантный протокол канального уровня. Всего 102 байта — и компьютер включается по сети без дополнительной инфраструктуры. Ограничения (только Ethernet, только локальная сеть, нет подтверждения) — следствие намеренной простоты протокола: он работает даже тогда, когда ОС не загружена. В отличие от устаревших сетевых стеков, которые <a href="https://tproger.ru/news/iz-linux-udalili-nebezopasnyj-setevoj-protokol----kotoryj-vse-eshhe-ispolzuetsya-v-windows-11">ядро Linux постепенно отбрасывает</a>, WOL остаётся в строю уже третье десятилетие.</p><p>Реализация на Go показывает, как стандартная библиотека net и базовые операции со строками позволяют собрать рабочий сетевой инструмент в нескольких десятках строк. Готовый проект: <a href="https://github.com/xaner4/Gowakeup">github.com/xaner4/Gowakeup</a>. Исходная статья: <a href="https://blog.xaner.dev/post/wake-on-lan/">blog.xaner.dev</a>.</p>]]></content:encoded>
    </item>
    <item>
      <title>Как на самом деле работает электронная почта: путь письма от отправителя к получателю</title>
      <link>https://tproger.ru/translations/kak-na-samom-dele-rabotaet-elektronnaya-pochta--put-pisma-ot-otp</link>
      <comments>https://tproger.ru/translations/kak-na-samom-dele-rabotaet-elektronnaya-pochta--put-pisma-ot-otp?scrollTo=tproger-comments</comments>
      <dc:creator><![CDATA[Алексей Михайлишин]]></dc:creator>
      <guid isPermaLink="true">https://tproger.ru/translations/kak-na-samom-dele-rabotaet-elektronnaya-pochta--put-pisma-ot-otp</guid>
      <description><![CDATA[<p>Как письмо попадает от отправителя к получателю? Разбираем SMTP-команды, DNS, MX-записи, аутентификацию DKIM, SPF и DMARC — с диаграммами и скриншотами.</p><p>— Читать дальше «<a rel="follow" href="https://tproger.ru/translations/kak-na-samom-dele-rabotaet-elektronnaya-pochta--put-pisma-ot-otp">Как на самом деле работает электронная почта: путь письма от отправителя к получателю</a>»</p>]]></description>
      <category><![CDATA[Интернет]]></category>
      <category><![CDATA[Сетевые протоколы]]></category>
      <category><![CDATA[Безопасность]]></category>
      <category><![CDATA[Переводы]]></category>
      <slash:comments>0</slash:comments>
      <pubDate>Tue, 31 Mar 2026 13:08:46 GMT</pubDate>
      <content:encoded><![CDATA[<p>Электронная почта — технология, которой вы пользуетесь каждый день. Но задумывались ли вы, как именно письмо попадает от отправителя к получателю? Что происходит за кулисами, когда вы нажимаете «Отправить»?</p><p>В этой статье разберём весь путь письма — от SMTP-команд до проверки подлинности через DKIM, SPF и DMARC. Покажем на конкретном примере: Джон (john@gmail.com) отправляет письмо Кевину (kevin@yahoo.com).</p><p>— Письмо передаётся между серверами по протоколу SMTP (порт 25) через простые текстовые команды</p><p>— Почтовый сервер находит адресата через DNS-запрос MX-записи домена получателя</p><p>— Подлинность отправителя проверяется тремя механизмами: DKIM (цифровая подпись), SPF (проверка IP) и DMARC (политика при сбоях)</p><p>— Получатель забирает письма из ящика через IMAP или POP3 — это отдельные протоколы</p><h2>Базовая терминология</h2><p>Прежде чем разбирать процесс, познакомимся с ключевыми терминами:</p><ul><li><b>SMTP</b> (Simple Mail Transfer Protocol) — протокол передачи почты, работающий поверх TCP. Используется для отправки и доставки писем между серверами</li><li><b>Почтовый сервер</b> (Mail Server) — серверное приложение, которое принимает, хранит, проверяет и доставляет электронные письма</li><li><b>MX-запись</b> (Mail Exchange Record) — DNS-запись, содержащая <b>доменное имя</b> почтового сервера для данного домена</li><li><b>MTA</b> (Mail Transfer Agent) — компонент сервера, отвечающий за передачу писем между серверами (например, с сервера Gmail на сервер Yahoo)</li><li><b>DKIM</b> (DomainKeys Identified Mail) — механизм аутентификации на основе цифровой подписи</li><li><b>DMARC</b> (Domain-based Message Authentication, Reporting, and Conformance) — политика, определяющая действия при сбое аутентификации</li><li><b>SPF</b> (Sender Policy Framework) — метод аутентификации, проверяющий, имеет ли IP-адрес отправителя право отправлять почту от имени домена</li></ul><p>Не страшно, если не всё понятно сразу — каждый термин подробно разобран ниже.</p><h2>Общая картина: как письмо проходит путь от отправителя к получателю</h2><p>Этот раздел — краткий обзор всего процесса. Детали каждого шага разобраны дальше.</p><p>Почтовый сервер — это серверное ПО, которое принимает, ставит в очередь, отправляет и получает письма. Если вы шлёте письмо с john@gmail.com на kevin@yahoo.com, сервер Gmail примет письмо и передаст его серверу Yahoo.</p><p>Допустим, есть два друга:</p><ul><li>Джон (john@gmail.com)</li><li>Кевин (kevin@yahoo.com)</li></ul><p>Почему Yahoo? Потому что получатель использует Yahoo (kevin@yahoo.com).</p><p>Дальше всё берёт на себя сервер Yahoo Mail, и письмо попадает во входящие Кевина.</p><h2>Архитектурная диаграмма</h2><figure><img src="https://media.tproger.ru/user-uploads/133946/2026-03-31/93bd0043-5452-4b20-8a8a-bca85d83b7d0.webp" alt="Архитектурная диаграмма доставки email" /><figcaption>Схема: путь письма от отправителя к получателю через SMTP, DNS, MX, DKIM, SPF</figcaption></figure><h2>Разбор по шагам</h2><p>Теперь разберём каждый этап подробно. Стоит отметить, что описан наиболее распространённый сценарий работы почтовых серверов. У разных компаний реализация может отличаться, но базовая идея одна и та же.</p><h2>SMTP: как письмо попадает на сервер</h2><p>Simple Mail Transfer Protocol определяет, как письмо передаётся на почтовый сервер. Для передачи почты <b>между серверами</b> SMTP использует <b>порт 25</b>. Для отправки от клиента к серверу (submission) применяются порты 587 (STARTTLS) или 465 (implicit TLS). Подключиться к серверу можно через утилиту telnet. Вот что вы увидите при подключении к серверу Gmail:</p><figure><img src="https://media.tproger.ru/user-uploads/133946/2026-03-31/7bf99f5b-ef39-4d5e-a8c5-a11ceea2d5b8.webp" alt="Подключение к SMTP-серверу Gmail через telnet" /><figcaption>Подключение к SMTP-серверу Gmail через telnet</figcaption></figure><p>После подключения мы можем отправлять серверу команды:</p><h3>HELO / EHLO</h3><p>Команда для приветствия — вы представляетесь почтовому серверу. В ответ сервер отправляет приветствие:</p><figure><img src="https://media.tproger.ru/user-uploads/133946/2026-03-31/135986d8-6671-480e-b12f-60bac93718d0.webp" alt="SMTP-команда HELO" /><figcaption>Команда HELO — приветствие почтового сервера</figcaption></figure><h3>MAIL FROM</h3><p>Сообщает серверу, кто отправляет письмо. Сервер отвечает 250 2.1.0 OK:</p><figure><img src="https://media.tproger.ru/user-uploads/133946/2026-03-31/cfeb3b52-e5b4-4334-9b6d-131d07d86564.webp" alt="SMTP-команда MAIL FROM" /><figcaption>Команда MAIL FROM — указание отправителя</figcaption></figure><h3>RCPT TO</h3><p>Указывает, кому адресовано письмо. Сервер снова отвечает OK:</p><figure><img src="https://media.tproger.ru/user-uploads/133946/2026-03-31/b78d0c9c-71b0-4ca2-a4c4-de98952688d0.webp" alt="SMTP-команда RCPT TO" /><figcaption>Команда RCPT TO — указание получателя</figcaption></figure><h3>DATA</h3><p>Сервер сообщает клиенту, что можно начинать передачу тела письма:</p><figure><img src="https://media.tproger.ru/user-uploads/133946/2026-03-31/7ab83242-db61-4320-9814-a34d81acb443.webp" alt="SMTP-команда DATA" /><figcaption>Команда DATA — начало передачи тела письма</figcaption></figure><p>Затем отправляются данные самого письма:</p><figure><img src="https://media.tproger.ru/user-uploads/133946/2026-03-31/1c976730-a751-4962-a234-9dca286b9e04.webp" alt="Тело SMTP-письма" /><figcaption>Передача содержимого письма</figcaption></figure><p>Точка (.) на отдельной строке означает «конец сообщения». Сервер отвечает подтверждением (Accepted):</p><figure><img src="https://media.tproger.ru/user-uploads/133946/2026-03-31/12d89db2-e440-45e9-82cd-b0bc7a717803.webp" alt="SMTP ответ Accepted" /><figcaption>Сервер подтверждает приём письма</figcaption></figure><h3>QUIT</h3><p>Прощаемся с сервером:</p><figure><img src="https://media.tproger.ru/user-uploads/133946/2026-03-31/dfd4c26f-a052-4fcf-a4a8-9f7dd6224bb3.webp" alt="SMTP-команда QUIT" /><figcaption>Команда QUIT — завершение сессии</figcaption></figure><p>Вот так письмо передаётся на почтовый сервер по протоколу SMTP. Теперь разберём, что происходит дальше.</p><h2>Хранение</h2><p>Письмо теперь хранится на сервере Gmail, и сервер извлекает из него метаданные: FROM, TO и другие заголовки.</p><p>Некоторые почтовые серверы хранят письма прямо в файловой системе, другие используют распределённые объектные хранилища вроде AWS S3.</p><h2>Очередь</h2><p>Обратите внимание: когда SMTP-сервер принял наше письмо, он ответил <b>«queued»</b> (поставлено в очередь), а не «sent» (отправлено). Письма поступают в огромных объёмах, и отправить их мгновенно невозможно. Поэтому почтовые серверы ставят их в очередь и отправляют по одному. В случае ошибки письмо может быть перемещено в очередь повторных попыток.</p><h2>DNS и DNS-записи</h2><p>Для отправки писем нужно доменное имя (часть после @ в адресе). В конечном счёте любой сервер — это IP-адрес, но запоминать IP неудобно. Для этого и существует DNS.</p><p>DNS (Domain Name System) преобразует доменные имена (например, gmail.com) в IP-адреса. Именно поэтому можно подключиться и через telnet &lt;ДОМЕН&gt;, и через telnet &lt;IP&gt;.</p><p><b>DNS-запись</b> — это запись, опубликованная в системе доменных имён, содержащая данные, видимые из интернета. Запомните это — DNS-записи играют ключевую роль в аутентификации email.</p><h2>MX-запись</h2><p>Ранее мы говорили, что почтовые серверы передают письма друг другу через SMTP-соединение на порту 25. Но как серверы узнают, на какой IP-адрес или домен отправлять письмо?</p><p>Здесь на сцену выходит <b>MX-запись</b> (Mail Exchange). Каждый домен публикует MX-запись в DNS, и другие почтовые серверы запрашивают её. Проверить MX-запись любого домена можно, например, на <a href="https://mxtoolbox.com/SuperTool.aspx?action=mx%3agmail.com&amp;run=toolpage">MXToolbox</a>.</p><p>Вот MX-записи почтовых серверов Gmail:</p><figure><img src="https://media.tproger.ru/user-uploads/133946/2026-03-31/74fb54cd-6bd5-40e4-8a70-32013a590a91.webp" alt="MX-записи Gmail" /><figcaption>MX-записи почтовых серверов Gmail</figcaption></figure><h2>Аутентификация</h2><p>Мы только что поставили письмо в очередь на почтовом сервере — и для этого не потребовалось никакой аутентификации. Так как же работает проверка подлинности? Здесь в игру вступают <b>DKIM</b> и <b>SPF</b>.</p><h2>DKIM: цифровая подпись письма</h2><p>DKIM — это механизм аутентификации на основе пары открытого и закрытого ключей. Отправляющий сервер подписывает письмо, а принимающий — проверяет подпись. В нашем случае отправитель — сервер Gmail, получатель — сервер Yahoo.</p><ol><li>Письмо поступает на Gmail через SMTP</li><li>Gmail сохраняет его</li><li>Gmail вычисляет хеш заголовков и тела письма, <b>подписывает</b> его закрытым ключом и добавляет заголовок <b>DKIM-Signature</b></li><li>Когда письмо доставляется на сервер-получатель, тот расшифровывает подпись открытым ключом, вычисляет хеш самостоятельно и сравнивает результаты</li><li>Если проверка не пройдена — письмо не доставляется</li></ol><p>Вот как выглядит заголовок DKIM-Signature:</p><figure><img src="https://media.tproger.ru/user-uploads/133946/2026-03-31/27180bc1-a305-4fca-b85b-58a5ac80fe81.webp" alt="Заголовок DKIM-Signature" /><figcaption>Пример заголовка DKIM-Signature в письме</figcaption></figure><p><b>Но откуда получатель знает открытый ключ отправителя?</b></p><p>Снова на помощь приходят DNS-записи. Домен отправителя (gmail.com в нашем примере) публикует DNS-запись с открытым ключом и селектором. Селектор нужен для выбора нужного ключа, если у сервера их несколько.</p><p>Вот как выглядит DNS-запись с публичным ключом DKIM:</p><figure><img src="https://media.tproger.ru/user-uploads/133946/2026-03-31/9c62dc69-f582-4a3d-bf2d-6bdc60110c5b.webp" alt="DNS-запись с публичным ключом DKIM" /><figcaption>DNS-запись DKIM: публичный ключ для проверки подписи</figcaption></figure><p>Таким образом, сервер Yahoo запрашивает DNS-записи для gmail.com и получает открытый ключ для проверки подписи.</p><h2>SPF: проверка IP-адреса отправителя</h2><p>Эта проверка происходит на стороне получателя. SPF определяет, имеет ли данный IP-адрес право отправлять почту от имени домена.</p><p>Когда Gmail передаёт письмо john@gmail.com на kevin@yahoo.com, он открывает SMTP-соединение с сервером Yahoo. В этот момент Yahoo знает, с какого IP пришло соединение (это IP сервера Gmail).</p><p>Yahoo извлекает домен <b>отправителя</b> (gmail.com) из заголовка MAIL FROM и запрашивает DNS-запись SPF, которая выглядит так:</p><figure><img src="https://media.tproger.ru/user-uploads/133946/2026-03-31/362cb645-0d28-48e1-b1a1-3fa3b18887c7.webp" alt="SPF-запись Gmail" /><figcaption>SPF-запись: список IP-адресов, которым разрешено отправлять почту от имени gmail.com</figcaption></figure><p>В записи перечислены IP-адреса. Если IP, с которого пришло письмо, присутствует в этом списке — письмо принимается. Если нет — отклоняется или помечается как спам.</p><h2>DMARC: что делать, если проверка не пройдена</h2><p>DMARC — это не метод аутентификации, а <b>политика</b>, которая определяет, что делать, если DKIM или SPF не прошли проверку.</p><p>Проверка выполняется на сервере-получателе по тому же принципу: запрашивается DNS-запись DMARC домена отправителя, и на основе политики письмо либо отклоняется, либо помечается как спам.</p><h2>Финальный этап: доставка</h2><p>Если все проверки пройдены, сервер Yahoo Mail сохраняет письмо в хранилище — будь то файловая система или распределённое хранилище. Письмо попадает во входящие Кевина.</p><h3>Как мы видим письма?</h3><p>Закономерный вопрос: как мы видим письма, которые хранятся на почтовом сервере? Для этого используются два других протокола:</p><ul><li><b>IMAP</b> — синхронизация почтового ящика (письма остаются на сервере)</li><li><b>POP3</b> — загрузка писем на устройство</li></ul><p>Эти протоколы — тема для отдельной статьи.</p><p><i>Перевод и адаптация статьи <a href="https://sushantdhiman.dev/how-email-actually-works-ep-1-behind/">«How Email Actually Works»</a> из блога Sushant Dhiman. Читайте также: <a href="https://tproger.ru/articles/dns-for-beginners">DNS для начинающих</a>, <a href="https://tproger.ru/articles/kak-rabotaet-internet">как работает интернет</a>.</i></p>]]></content:encoded>
    </item>
    <item>
      <title>Как превратить любой ПК в роутер на Linux</title>
      <link>https://tproger.ru/translations/kak-prevratit-lyuboj-pk-v-router-na-linux</link>
      <comments>https://tproger.ru/translations/kak-prevratit-lyuboj-pk-v-router-na-linux?scrollTo=tproger-comments</comments>
      <dc:creator><![CDATA[Алексей Михайлишин]]></dc:creator>
      <guid isPermaLink="true">https://tproger.ru/translations/kak-prevratit-lyuboj-pk-v-router-na-linux</guid>
      <description><![CDATA[<p>Пошаговый гайд: собираем роутер из мини-ПК, старого ноутбука или одноплатника на Debian. Настройка hostapd, dnsmasq, nftables и bridge. Попробуйте сами.</p><p>— Читать дальше «<a rel="follow" href="https://tproger.ru/translations/kak-prevratit-lyuboj-pk-v-router-na-linux">Как превратить любой ПК в роутер на Linux</a>»</p>]]></description>
      <category><![CDATA[Linux]]></category>
      <category><![CDATA[Hardware]]></category>
      <category><![CDATA[Сетевые протоколы]]></category>
      <category><![CDATA[DIY]]></category>
      <category><![CDATA[Переводы]]></category>
      <slash:comments>0</slash:comments>
      <pubDate>Tue, 31 Mar 2026 00:45:02 GMT</pubDate>
      <content:encoded><![CDATA[<p>Перевод-адаптация статьи <a href="https://nbailey.ca/post/router/">How to turn anything into a router</a> Ника Бэйли.</p><p>Правительство США анонсировало политику, фактически запрещающую импорт новых потребительских роутеров. Но оказывается, роутер можно собрать буквально из любого компьютера. Автор оригинальной статьи использует мини-ПК на Linux в качестве домашнего роутера уже несколько лет: ни одного серьёзного сбоя, единственная замена — дешёвый mSATA-диск.</p><p>Мини-ПК, настольный компьютер, одноплатник, стоечный сервер, старый ноутбук — подойдёт всё, что запускает Linux и имеет пару USB-портов. В этой статье разберём полную настройку на Debian: от выбора железа до правил firewall.</p><p>— Роутер — это обычный компьютер с Linux, двумя сетевыми интерфейсами и несколькими пакетами.</p><p>— Для сборки хватит мини-ПК, старого ноутбука или одноплатника с USB-Ethernet-адаптером.</p><p>— Всё ПО — hostapd, dnsmasq, bridge-utils — входит в стандартные репозитории Debian.</p><p>— Настройка занимает около часа и не требует глубоких знаний сетей.</p><h2>Выбор железа</h2><p>Идеальный вариант — компактный пассивно охлаждаемый мини-ПК. Однако подойдёт практически что угодно. Главное условие: два Ethernet-интерфейса. Если у устройства только один — выручит обычный USB-Ethernet-адаптер. Это чуть менее надёжно, чем встроенный порт, но для домашней сети вполне достаточно.</p><p>Пример из практики автора: мини-ПК на <b>Celeron 3205U</b> (два ядра, 1,5 ГГц) без проблем выдаёт 820–850 Мбит/с по кабелю и около 300 Мбит/с по Wi-Fi. Даже такой скромный процессор с запасом тянет трафик целого дома или небольшого офиса.</p><p>Для совсем экстремальных случаев: в 2016 году автор собрал роутер из ThinkPad T60 (подобранного на мусорке), ExpressCard-PCIe-моста, безымянной Ethernet-карты и свитча Cisco 2960 за $10. Выглядело как куча хлама — но работало.</p><h2>Архитектура сети</h2><p>После настройки интерфейсы распределяются так: eth0 — WAN (внешняя сеть, интернет), eth1 — проводная LAN, wlan0 — Wi-Fi LAN.</p><p>eth1 и wlan0 объединяются в мост br0 — проводные и беспроводные устройства оказываются в одной сети. Нужно больше портов? Просто добавьте USB-Ethernet-адаптеры и включите их в мост.</p><p>Используемое ПО: <a href="https://w1.fi/hostapd/">hostapd</a> для Wi-Fi точки доступа, <a href="https://thekelleys.org.uk/dnsmasq/doc.html">dnsmasq</a> для DHCP и DNS, <a href="https://wiki.debian.org/BridgeNetworkConnections">bridge-utils</a> для объединения портов. Статья покрывает только IPv4 — IPv6 в домашней LAN по-прежнему создаёт больше проблем, чем решает.</p><h2>Установка Debian</h2><p>Установка стандартная, но стоит учесть несколько нюансов:</p><ul><li>В BIOS отключить PXE-загрузку по сети</li><li>Выставить минимальную частоту процессора, но отключить power management для USB и PCI-устройств</li><li>Включить опцию «Restore after AC Power Loss» — роутер должен запускаться сам после отключения питания</li><li>Если устройство не стартует без монитора — вставить HDMI-заглушку (dummy dongle)</li><li>Включить репозиторий non-free-firmware — большинство Wi-Fi-адаптеров без него не работает</li></ul><p>После базовой установки доставьте прошивку для своего Wi-Fi-адаптера. Для Intel:</p><p>Для Realtek:</p><p>Для совсем старого железа (Atheros и подобные):</p><h2>Установка пакетов</h2><p>Три пакета — это всё необходимое. Итого около 250 пакетов на системе:</p><h2>Переименование сетевых интерфейсов</h2><p>В современном Linux интерфейсы называются по физическому расположению: например, enp0s31f6. Чтобы не запутаться, зафиксируем привычные имена eth0, eth1 через systemd.network.</p><p>Для каждого сетевого интерфейса создайте файл /etc/systemd/network/10-persistent-ethX.link (где X — номер интерфейса):</p><p>MAC-адреса своих интерфейсов узнайте командой ip link show. Создайте по одному такому файлу для каждого Ethernet-порта.</p><h2>Настройка Wi-Fi через hostapd</h2><p>USB-Wi-Fi-адаптер будет работать как точка доступа. Это не заменит выделенный AP-девайс по качеству сигнала, но в небольшом помещении работает вполне приемлемо. Если Wi-Fi критичен — лучше подключить к LAN-порту старый роутер в режиме точки доступа.</p><p>Создайте конфиг /etc/hostapd/hostapd.conf:</p><p>По умолчанию служба hostapd замаскирована (masked). Размаскируйте и запустите:</p><h2>Настройка сетевых интерфейсов</h2><p>eth0 — внешний интерфейс (WAN, получает IP по DHCP от провайдера). br0 — внутренний мост с фиксированным адресом. Обратите внимание: у LAN-интерфейса нет шлюза по умолчанию.</p><p>Файл /etc/network/interfaces:</p><p>После этого перезагрузите устройство. Если сеть не поднялась, проверьте ошибки:</p><p>При успешной настройке вывод команды должен быть таким:</p><h2>IP Forwarding</h2><p>Без IP forwarding роутер не будет пробрасывать пакеты между интерфейсами. Создайте файл /etc/sysctl.d/10-forward.conf:</p><p>Примените изменения:</p><h2>Настройка firewall через nftables</h2><p>Правила firewall и NAT управляются через <a href="https://wiki.nftables.org/">nftables</a> — современную замену iptables. Конфиг /etc/nftables.conf:</p><p>Этот конфиг делает три вещи: включает NAT (masquerade), блокирует весь входящий трафик извне и разрешает роутеру работать как DNS, DHCP и SSH-сервер для локальной сети.</p><p>Включите nftables при загрузке:</p><p>Перед изменением правил всегда проверяйте конфиг на валидность:</p><p>В отличие от устаревшего iptables, nftables позволяет перезагружать правила без разрыва соединений:</p><h2>DHCP и DNS через dnsmasq</h2><p><a href="https://thekelleys.org.uk/dnsmasq/doc.html">dnsmasq</a> — компактная альтернатива паре isc-dhcp-server + bind9. Конфиг элементарный. Создайте /etc/dnsmasq.conf:</p><p>DHCP-диапазон: 192.168.1.50 — 192.168.1.250, аренда на 6 часов. Адреса 192.168.1.2 — 192.168.1.49 остаются для статических назначений.</p><h2>Бонус: последовательный порт (Serial/UART)</h2><p>Если на устройстве есть последовательный порт — настройте UART-консоль. В enterprise-оборудовании это стандарт, но для домашнего роутера тоже удобно: управляйте без монитора и клавиатуры через USB-UART-адаптер.</p><p>В файле /etc/default/grub добавьте или замените строки:</p><p>Активируйте getty на последовательном порту, обновите GRUB и перезагрузите:</p><h2>Проверка работы</h2><p>После настройки перезагрузите устройство дважды — убедитесь, что всё поднимается стабильно. Проверьте состояние firewall и счётчики трафика:</p><p>Ненулевые счётчики в цепочках forward и postrouting означают, что трафик проходит через роутер. Проверьте DHCP-аренды:</p><h2>Что ещё можно добавить</h2><p>Базовая конфигурация работает как полноценный домашний роутер. При желании её можно расширить:</p><ul><li>VLAN и сегментация сети</li><li>VPN (удалённый доступ и site-to-site туннели)</li><li>Динамическая маршрутизация: IGP, BGP</li><li>IDS/IPS (обнаружение и предотвращение вторжений)</li><li>Логирование отдельных правил и flow logs</li><li>Проброс портов в DMZ</li><li>IPv6</li><li>Мониторинг в реальном времени</li><li>Фильтрация и блокировка трафика</li></ul><p>Важное правило: не устанавливайте много дополнительного ПО прямо на роутер. Лучше выделить отдельную машину в DMZ или VLAN и пробрасывать на неё трафик. Роутер должен оставаться простым и надёжным.</p><h2>Итого</h2><p>Роутер — это просто компьютер с Linux, двумя сетевыми интерфейсами и тремя пакетами. Ничего магического в потребительских роутерах нет: они тоже работают под управлением Linux (обычно урезанным), просто с удобным веб-интерфейсом поверх.</p><p>Мини-ПК на базе Celeron или Atom стоит $30–60 на вторичном рынке, потребляет 5–10 Вт и работает годами без обслуживания. Это надёжнее, гибче и дешевле большинства потребительских роутеров — а заодно отличный способ разобраться, как на самом деле работает сеть.</p>]]></content:encoded>
    </item>
    <item>
      <title>Как развернуть StarRocks — подготовка среды</title>
      <link>https://tproger.ru/articles/glava-1-2--razvertyvanie-starrocks---podgotovka-sredy-razvertyvaniya</link>
      <comments>https://tproger.ru/articles/glava-1-2--razvertyvanie-starrocks---podgotovka-sredy-razvertyvaniya?scrollTo=tproger-comments</comments>
      <dc:creator><![CDATA[Li Free]]></dc:creator>
      <guid isPermaLink="true">https://tproger.ru/articles/glava-1-2--razvertyvanie-starrocks---podgotovka-sredy-razvertyvaniya</guid>
      <description><![CDATA[<p>Подготовка среды StarRocks: требования к оборудованию, настройка IP и NTP, firewalld и порты, JDK и mysql‑client, отключение SELinux/THP, настройки swap/overcommit и тюнинг ядра/сети.</p><p>— Читать дальше «<a rel="follow" href="https://tproger.ru/articles/glava-1-2--razvertyvanie-starrocks---podgotovka-sredy-razvertyvaniya">Как развернуть StarRocks — подготовка среды</a>»</p>]]></description>
      <category><![CDATA[Сетевые протоколы]]></category>
      <category><![CDATA[DevOps]]></category>
      <category><![CDATA[Сервер]]></category>
      <category><![CDATA[Статьи]]></category>
      <slash:comments>0</slash:comments>
      <pubDate>Fri, 31 Oct 2025 12:00:03 GMT</pubDate>
      <content:encoded><![CDATA[<h2>Рекомендации по аппаратному обеспечению кластера</h2><p>Базовые требования StarRocks к конфигурации серверов невысоки: даже в тестовой среде с CPU 2 ядра и 4 ГБ ОЗУ можно выполнять запросы по небольшим объемам данных.</p><p>В производственной среде или когда важна производительность, рекомендуемые аппаратные конфигурации для различных инстансов StarRocks следующие:</p><ul><li>FE — 8 ядер CPU, 16 ГБ ОЗУ, сетевой адаптер 10GbE (10‑гигабитный Ethernet) и выше (при невысоком уровне одновременных запросов FE можно совместно размещать с BE на одном узле).</li><li>BE — 16 ядер CPU, 64 ГБ ОЗУ, сетевой адаптер 10GbE и выше; CPU должен поддерживать набор инструкций AVX2.</li><li>Broker — специальных требований нет; обычно совместно размещается с BE, число Broker‑узлов соответствует числу BE.</li></ul><p>Чтобы обеспечить высокую производительность кластера и безопасность данных, в продакшене рекомендуется использовать минимум три сервера с 16 ядрами CPU, 32 ГБ ОЗУ и 10GbE.</p><p>Предположим, что node01, node02 и node03 — сервера, удовлетворяющие требованиям. Минимальный пример архитектуры развертывания в продакшене:</p><ul><li>На node01 разворачивается один FE в роли Leader.</li><li>На node02 разворачивается один FE Observer для резервирования метаданных.</li><li>На каждом из трех узлов кластера разворачивается по одному BE, что обеспечивает хранение с тремя репликами по умолчанию в StarRocks (в тестовой среде можно использовать одну реплику).</li></ul><p>На node01 также можно установить mysql-client. StarRocks совместим с протоколом MySQL; рекомендуется использовать mysql-client для доступа, также можно применять графические инструменты, такие как SQLyog, DBeaver, Navicat, DataGrip, подключая StarRocks как MySQL.</p><p>Особое внимание:</p><ul><li>На одной машине можно развернуть только один FE‑инстанс данного кластера, поскольку все FE‑инстансы в одном кластере должны иметь одинаковый http_port.</li><li>Хотя на одной машине можно развернуть несколько BE‑инстансов на разных портах, для обеспечения трех реплик данных необходимо как минимум три машины с по одному BE‑инстансу на каждой. Это связано с тем, что стратегия балансировки реплик в StarRocks не размещает реплики одного и того же Tablet на BE с одинаковым IP.</li></ul><h2>Проверки и подготовка среды кластера</h2><p>После того как вы ознакомились с аппаратными требованиями кластера StarRocks, необходимо выполнить обязательные проверки окружения серверов кластера и системную оптимизацию. Подготовку среды выполнения StarRocks условно можно разделить на две категории: «обязательная» и «оптимизационная».</p><p>Перед развертыванием кластера рекомендуется выполнить все перечисленные ниже шаги (с учетом вашей ситуации), поскольку параметры из категории «оптимизационных» также влияют на производительность StarRocks.</p><h2>Обязательная подготовка</h2><h3>Проверка CPU</h3><p>Векторизация StarRocks требует поддержки набора инструкций AVX2 на CPU, поэтому CPU на машинах с BE‑сервисом должен поддерживать AVX2. В Linux проверьте поддержку CPU следующим образом:</p><p>Наличие вывода означает поддержку AVX2 CPU. Если вывода нет, потребуется машина с поддержкой AVX2.</p><p>В некоторых случаях используется виртуальная машина с CentOS в среде Windows для тестов; тогда можно проверить поддержку набора инструкций CPU на хосте Windows с помощью CPU‑Z, AIDA64 и т. п.</p><h3>Проверка операционной системы</h3><p>StarRocks требует Linux CentOS версии 7 и выше (ниже показано на примере CentOS 7.6). Версия ядра рекомендуется 3.10 и выше. Просмотр информации о системе и ядре:</p><h3>Настройка IP сервера</h3><p>При развертывании FE или BE, чтобы избежать проблем выбора IP на серверах с несколькими сетевыми интерфейсами, используйте параметр priority_networks в конфигурации каждого инстанса для привязки IP.</p><p>Кроме того, при работе StarRocks сведения о привязанных IP инстансов кластера и др. сохраняются в локальном каталоге. Если внутренний IP узла изменится, инстансы кластера не смогут корректно работать (или потребуется сложное восстановление метаданных). Поэтому внутренний IP сервера, на котором работает StarRocks, должен быть фиксированным.</p><p>Операции по настройке фиксированного IP в системе сервера см. в Приложении 1: Настройка фиксированного IP.</p><h3>Синхронизация времени в кластере</h3><p>Максимально допустимое расхождение часов между серверами с FE — 5 секунд. Можно использовать протокол NTP для синхронизации времени по сети или выполнить внутреннюю синхронизацию в кластере. Подробные операции см. в Приложении 2: Синхронизация времени в кластере.</p><h3>Изменение лимита на количество открытых файлов</h3><p>Если лимит на количество открытых файлов слишком мал, BE‑инстанс может не запуститься. Проверьте лимит:</p><p>Если возвращаемое значение &lt; 65535, измените /etc/security/limits.conf</p><p>Добавьте в конец файла (для всех пользователей и групп мягкий и жесткий лимиты на число открытых файлов — 65535):</p><p>После изменения необходимо разорвать и заново установить удаленное подключение (например, Xshell), чтобы изменения вступили в силу, либо временно задать лимит повторно:</p><p>Подтвердите применение:</p><h3>Проверка часового пояса</h3><p>Чтобы избежать смещения времени при импорте данных с метками времени, установите системный часовой пояс Asia/Shanghai. Просмотр часового пояса:</p><p>Если часовой пояс отличается от Asia/Shanghai, выполните:</p><h3>Настройка брандмауэра</h3><p>Чтобы обеспечить нормальное взаимодействие между узлами кластера, в зависимости от ситуации выберите одно из двух: отключить внутренний брандмауэр или открыть в нем порты, необходимые для работы инстансов кластера. Ниже представлены два варианта (a или b):</p><p>a) Отключить службу firewalld (брандмауэр)</p><p>Проверьте, что служба отключена:</p><p>Отключите автозапуск:</p><p>b) Открыть порты во внутреннем сегменте брандмауэра</p><p>Инстансы StarRocks по умолчанию используют порты: 8000, 8030, 8040, 8060, 9010, 9020, 9030, 9050, 9060. Если эти порты не конфликтуют с другими сервисами на сервере, обычно не рекомендуется их изменять.</p><p>Например, для FE при необходимости изменения портов до развертывания можно отредактировать файл конфигурации</p><p>Открытие стандартных портов в службе firewalld (брандмауэр):</p><p>Просмотр открытых портов:</p><p>Обратите внимание: перечисленные выше порты относятся к внутренним (для взаимодействия внутри кластера), а не к портам, открытым для доступа из внешней сети. В производственной среде для внешнего доступа обычно достаточно открыть два порта:</p><ul><li>FE http_port: по умолчанию 8030</li><li>FE query_port: по умолчанию 9030</li></ul><p>Подробное описание портов см. в Приложении 3: Порты StarRocks.</p><h3>Установка JDK</h3><p>StarRocks зависит от среды JDK 1.8+. Можно использовать Oracle JDK 1.8+ или OpenJDK 8+ (ниже показан пример с OpenJDK 1.8.0_41):</p><p>Инструкции по установке OpenJDK 8 см. в Приложении 4: Установка OpenJDK.</p><h3>Установка mysql-client</h3><p>StarRocks использует протокол MySQL для взаимодействия; пользователи могут подключаться к кластеру StarRocks через клиент MySQL (mysql-client). Выбирая версию mysql-client, используйте версию новее 5.1, поскольку версии до 5.1 не поддерживают имена пользователей длиннее 16 символов (ниже показан пример mysql-client‑5.7.35).</p><p>Для удобства развертывания и эксплуатации кластера обычно рекомендуется установить mysql-client на одном из серверов кластера. Разумеется, можно не устанавливать mysql-client, а получить доступ к StarRocks с помощью внешних графических инструментов, таких как SQLyog, DBeaver, Navicat и др.</p><p>Инструкции по установке mysql-client‑5.7.35 см. в Приложении 5: Установка mysql-client‑5.7.35.</p><h2>Оптимизационная подготовка</h2><h3>Отключение SELinux</h3><p>Если в вашей продакшен‑среде уже применены меры безопасности (например, VPN, jump‑host, bastion и т. п.), рекомендуется отключить SELinux. Проверьте состояние:</p><p>Чтобы избежать перезагрузки, можно сначала временно отключить, затем — отключить навсегда.</p><p>Временное отключение:</p><p>Постоянное отключение:</p><p>Проверка:</p><p>означает, что отключено навсегда:</p><h3>Использование overcommit</h3><p>Рекомендуется включить overcommit, установив 1, что означает: ядро разрешает выделять всю физическую память независимо от текущего состояния памяти.</p><p>Настройка выше сбрасывается после перезагрузки системы; для постоянного применения выполните:</p><h3>Не использовать область подкачки (swap)</h3><p>Это устраняет влияние перехода в область подкачки на производительность. Чтобы избежать перезагрузки, можно сначала временно, затем — постоянно.</p><p>Проверка текущего значения:</p><p>Временная настройка:</p><p>Постоянная настройка:</p><h3>Отключение прозрачных больших страниц (Transparent Huge Pages, THP)</h3><p>Проверьте настройки и состояние THP:</p><p>Вывод [always] означает, что THP включены; [never]— что THP отключены; [madvise]— что THP используются только для VMA с флагом MADV_HUGEPAGE.</p><p>Временное отключение:</p><p>Постоянное отключение (добавьте команды временного отключения в /etc/rc.d/rc.localи назначьте права на исполнение):</p><p>Проверка:</p><h3>Настройки очереди буферов TCP‑подключений</h3><p>1. tcp_abort_on_overflow:</p><p>2. somaxconn:</p><p>Эти настройки сбрасываются после перезагрузки; чтобы применялись постоянно, добавьте их в /etc/rc.d/rc.local:</p><p>Повторная проверка:</p><h3>Настройка максимального числа пользовательских процессов</h3><p>Временная установка:</p><p>Постоянная установка:</p><p>Добавьте в конец файла и сохраните:</p><h3>Настройки для высокой конкурентности</h3><p>Если в кластере высокая конкурентность нагрузки, рекомендуется добавить следующие настройки:</p><p>Чтобы эти настройки применялись постоянно, добавьте их в /etc/rc.d/rc.local , как указано выше.</p><h4>Приложение 1: Настройка фиксированного IP на сервере</h4><p>Обычно инженеры эксплуатации предоставляют серверы уже с привязанным IP. Для удобства локального тестирования ниже приведен пример привязки IP в виртуальной машине.</p><p>Перед настройкой IP обратите внимание, в каком режиме настроен сетевой адаптер ВМ: «bridged» или «NAT». Упрощенно: в режиме bridged систему ВМ могут видеть другие машины в той же локальной сети; в режиме NAT — только хост‑машина, где установлена ВМ. Поэтому при настройке IP учитывайте различия в шлюзе.</p><p>Например, для одиночного развертывания на сервере starrocks текущий шлюз —192.168.110.1 .Нужно привязать IP:192.168.110.98. Действия:</p><p>Измененные или добавленные параметры:</p><p>После изменений перезапустите сетевой сервис:</p><p>Просмотр IP:</p><p>Или (в минимальной установке</p><p>по умолчанию отсутствует):</p><h4>Приложение 2: Синхронизация времени в кластере</h4><p>Распространены два способа: синхронизация через интернет и внутренняя синхронизация в кластере. В продакшене достаточно выбрать один из них.</p><h4>Синхронизация через интернет (под root)</h4><p>В среде с доступом во внешнюю сеть можно установить NTP‑службу, чтобы каждая машина в кластере синхронизировалась с интернет‑временем.</p><p>(1) Установка пакета NTP:</p><p>(2) Выполнение синхронизации:</p><p>(3) Добавление cron‑задания:</p><p>Добавьте строку:</p><p>(означает автоматическую синхронизацию каждые 2 часа; формат: минута, час, день, месяц, день недели)</p><p>(4) Перезагрузка службы crond:</p><h4>Внутренняя синхронизация в кластере (под root)</h4><p>В внутренней сети можно выбрать одну машину в кластере в качестве сервера времени, а остальные машины периодически синхронизировать с ней. При таком подходе время в кластере может не совпадать с эталоном, но внутри кластера будет согласованным.</p><p>(1) Настройки на всех узлах</p><p>Проверьте, установлен ли ntp (если нет, установите:yum install -y ntp):</p><p>Проверьте статус ntpd:</p><p>Если статус не dead, остановите службу и отключите автозапуск:</p><p>(2) Настройка сервера времени</p><ol><li>Выберите сервер времени, например node01, и отредактируйте конфигурацию NTP:</li></ol><p>Изменения:</p><p>a) Разрешение для подсети (пример для диапазона 192.168.1.0–192.168.1.255):</p><p>Строку</p><p>раскомментируйте и укажите свою подсеть:</p><p>b) Отключение интернет‑источников времени (кластер в локальной сети):</p><p>Закомментируйте строки:</p><p>c) Добавление локального источника (при потере сети узел сможет служить сервером времени):</p><ol><li>Измените файл /etc/sysconfig/ntpd:</li></ol><p>Добавьте (синхронизировать аппаратное время с системным):</p><ol><li>Запустите службу ntpd:</li></ol><ol><li>Включите автозапуск ntpd:</li></ol><p>(3) Настройка остальных машин</p><p>Для всех узлов, кроме сервера времени, создайте cron‑задачу:</p><ol><li>Настройте синхронизацию с сервером времени каждые 10 минут:</li></ol><ol><li>Добавьте задание:</li></ol><ol><li>Перезагрузите службу crond:</li></ol><ol><li>Тест (необязательно)</li></ol><p>Измените время на любом узле, не являющемся сервером времени, и проверьте синхронизацию.</p><p>Например, на node02:</p><p>Подождите 10 минут (или временно измените интервал в cron на 1 минуту) и проверьте время:</p><h2>Приложении 3: Порты StarRocks</h2><figure><img src="https://media.tproger.ru/user-uploads/133686/2025-10-17/79c8ca68-b203-417f-b725-4cb49176c564.png" alt="" /><figcaption>Порты StarRocks</figcaption></figure><h3>Приложение 4: Установка OpenJDK</h3><h4>Способ 1: онлайн‑установка через yum</h4><p>Проверьте, есть ли в системе среда Java:</p><p>При минимальной установке Java отсутствует. Если в текущей системе CentOS 7 есть пакеты OpenJDK и среди них присутствует java-1.8.0-openjdk-devel, значит, установлен Java 8 JDK, и можно сразу найти путь установки OpenJDK и настроить переменные окружения. Если openjdk-devel отсутствует, значит установлен только JRE. Например (пакеты, связанные с OpenJDK):</p><p>Официальная документация OpenJDK:</p><p>The java-1.8.0-openjdk package contains just the Java Runtime Environment. If you want to develop Java programs then install the java-1.8.0-openjdk-devel package.</p><p>Установка/обновление OpenJDK через yum:</p><p>Поиск пути установки OpenJDK:</p><p>Настройка переменных окружения (рекомендуемый способ): создайте файл/etc/profile.d/my_env.sh:</p><p>Добавьте переменные:</p><p>Сохраните и обновите окружение (или перезапустите окно Xshell):</p><h4>Способ 2: офлайн‑установка</h4><p>Если у кластера нет доступа во внешнюю сеть, используйте двоичный пакет OpenJDK для офлайн‑развертывания. Заранее скачайте OpenJDK 1.8.0_41‑b04.</p><p>Проверьте, установлен ли JRE, и при наличии удалите его.</p><p>Проверка:</p><p>Примеры выводов для наличия JRE см. выше.</p><p>Удаление предустановленного JRE:</p><p>Загрузите</p><p>в каталог /opt/software:</p><p>Распакуйте:</p><p>Переместите распакованный каталог в /usr/java/:</p><p>Настройка переменных окружения (рекомендуемый способ): создайте файл /etc/profile.d/my_env.sh:</p><p>Добавьте переменные:</p><p>Сохраните и обновите окружение (или перезапустите окно Xshell):</p><h3>Приложение 5: Установка mysql-client‑5.7.35</h3><p>Проверьте наличие mariadb:</p><p>Если установлен, удалите в соответствии с выводом:</p><p>Для mysql-client требуются три RPM‑пакета (адрес загрузки укажите по корпоративным источникам). Загрузите пакеты в каталог /opt/software:</p><p>Между тремя RPM есть зависимости; порядок установки:</p><ol><li>mysql-community-common-5.7.35-1.el7.x86_64.rpm</li><li>mysql-community-libs-5.7.35-1.el7.x86_64.rpm</li><li>mysql-community-client-5.7.35-1.el7.x86_64.rpm</li></ol><p>Установка:</p>]]></content:encoded>
    </item>
    <item>
      <title>Как развернуть StarRocks — одноузловое развёртывание</title>
      <link>https://tproger.ru/articles/glava-1-3--razvertyvanie-starrocks---odnouzlovoe-razvertyvanie</link>
      <comments>https://tproger.ru/articles/glava-1-3--razvertyvanie-starrocks---odnouzlovoe-razvertyvanie?scrollTo=tproger-comments</comments>
      <dc:creator><![CDATA[Li Free]]></dc:creator>
      <guid isPermaLink="true">https://tproger.ru/articles/glava-1-3--razvertyvanie-starrocks---odnouzlovoe-razvertyvanie</guid>
      <description><![CDATA[<p>Пошаговое руководство по одноузловому развертыванию StarRocks: установка, настройка FE/BE/Broker, доступ через MySQL и проверка статуса, плюс пример создания таблиц и запросов.</p><p>— Читать дальше «<a rel="follow" href="https://tproger.ru/articles/glava-1-3--razvertyvanie-starrocks---odnouzlovoe-razvertyvanie">Как развернуть StarRocks — одноузловое развёртывание</a>»</p>]]></description>
      <category><![CDATA[Сетевые протоколы]]></category>
      <category><![CDATA[DevOps]]></category>
      <category><![CDATA[Сервер]]></category>
      <category><![CDATA[Статьи]]></category>
      <slash:comments>0</slash:comments>
      <pubDate>Fri, 24 Oct 2025 15:00:02 GMT</pubDate>
      <content:encoded><![CDATA[<p>Строго говоря, в StarRocks нет «Standalone-режима», и тем более не рекомендуется развёртывать одиночный экземпляр в продуктивной среде. Этот раздел выделен отдельно для сценариев, когда тестовая среда ограничена числом машин или требуется лишь быстрая проверка функциональности — в таком случае можно развернуть StarRocks на одной машине.</p><p>В качестве примера используем сервер «starrocks (192.168.110.98)». После выполнения шагов из главы «Глава 1.2: Развертывание StarRocks — подготовка среды» приступаем к развертыванию одноузловой конфигурации.</p><p>Для удобства демонстрации подключаемся к серверу пользователем root через XShell. Архитектура одноузловой конфигурации:</p><figure><img src="https://media.tproger.ru/user-uploads/133686/2025-10-17/23dabba0-ef26-43cd-ac73-a927c2c266c4.png" alt="" /></figure><p>Дизайн каталогов развертывания и данных (дальнейшие шаги строго следуют этому плану):</p><figure><img src="https://media.tproger.ru/user-uploads/133686/2025-10-17/2bb1bd4f-6339-4c7b-9c06-fb9531608bb5.png" alt="" /></figure><h2>1. Получение бинарного пакета</h2><p>Бинарные пакеты StarRocks доступны на официальном сайте.</p><p>В примере используем пакет StarRocks-1.19.2.tar.gz и загружаем его в каталог /opt/software:</p><h2>2. Распаковка пакета</h2><p>Структура распакованного пакета и краткие пояснения приведены в Приложении 1 (дерево каталогов пакета развертывания StarRocks).</p><h2>3. Подготовка и размещение файлов развертывания</h2><h2>4. Развертывание экземпляра FE</h2><h3>Изменение конфигурации FE</h3><p>Конфигурация по умолчанию обычно достаточна для запуска кластера; начинающим пользователям не рекомендуется менять много параметров. В тестовой среде для FE обратите внимание на три момента:</p><ul><li>Порты по умолчанию — чтобы исключить конфликты (обычно менять не требуется).</li><li>Привязка IP-адреса — чтобы при наличии нескольких интерфейсов сервис корректно выбирал нужный адрес. Если не знакомы с нотацией CIDR, можно указать полный IP-адрес (алиасы не поддерживаются), например: priority_networks = 192.168.110.98, что эквивалентно priority_networks = 192.168.110.98/32.</li><li>Каталог метаданных — по умолчанию fe/meta. Рекомендуется создать отдельный каталог и указать его в конфигурации.</li></ul><p>Создадим каталог метаданных:</p><p>Внесем изменения по привязке IP-адреса и каталогу метаданных (строки с #— комментарии):</p><p>Сохраните конфигурацию.</p><h3>Запуск FE</h3><p>Примечание: скрипт остановки FE —</p><p>(запуск:</p><p>FE написан на Java. Проверьте процессы командой jps: если виден процессStarRocksFe, значит FE запущен.</p><p>При нештатном состоянии изучите журналы (логи) в каталоге FE; основной журнал — fe.log, журналы аудита запросов — fe.audit.log. Так как это первый запуск, если операции выполняются подозрительно долго, можно очистить каталог метаданных FE и повторить процедуру.</p><h3>Доступ к FE</h3><p>Подключимся к FE с помощью клиента MySQL (mysql-client). Порт для запросов FE по умолчанию — 9030; встроенный пользователь root, пароль по умолчанию пустой:</p><h3>Проверка состояния FE</h3><p>Если клиент MySQL успешно подключился к FE, это означает, что FE работает. Выполним проверку:</p><p>Если Alive = true, узел FE работает нормально.</p><h3>Добавление экземпляров в кластер</h3><p>Добавим BE и Broker в кластер. Строгой очередности между «запуском сервиса» и «добавлением сервиса в кластер» нет. Однако если запустить сервис заранее, до добавления экземпляра в кластер BE может писать предупреждения в журнал (например: Fail to get master client from cache). Поэтому удобно сначала полностью подготовить FE, затем добавить остальные экземпляры SQL-командами через клиент MySQL, и после этого по очереди развернуть и запустить их.</p><ul><li>Добавление BE (используется heartbeat_service_port BE, по умолчанию 9050):</li></ul><ul><li>Добавление Broker: зададим имя, например hdfs_broker (используется broker_ipc_port, по умолчанию 8000):</li></ul><p>Если при добавлении экземпляра допущена ошибка, можно удалить его и добавить снова.</p><ul><li>Удаление BE из кластера. Так как в примере только один экземпляр BE, можно удалить его «рисковой» командой dropp (специально двукратная «p»):</li></ul><ul><li>Удаление Broker:</li></ul><p>Завершим сеанс:</p><h2>Развертывание экземпляра BE</h2><h3>Изменение конфигурации BE</h3><p>В тестовой среде для BE обратите внимание на три момента:</p><ul><li>Порты по умолчанию — чтобы исключить конфликты (обычно менять не требуется).</li><li>Привязка IP-адреса — чтобы при наличии нескольких интерфейсов сервис корректно выбирал нужный адрес (если не знакомы с CIDR, укажите полный IP-адрес).</li><li>Каталог хранения данных — по умолчанию be/storage. Рекомендуется создать отдельный каталог и указать его в конфигурации.</li></ul><p>Создадим каталог хранения данных:</p><p>Изменим конфигурацию (строки с # — комментарии):</p><p>Сохраните конфигурацию.</p><h3>Запуск BE</h3><p>Примечание: скрипт остановки BE — stop_be.sh (запуск: ./stop_be.sh).</p><p>BE написан на C++. Проверьте процессы с помощью ps: если виден процесс starrocks_be, значит BE запущен.</p><h3>Проверка состояния BE</h3><p>Снова подключимся к кластеру через клиент MySQL:</p><p>Проверим состояние BE:</p><p>Если Alive = true, BE работает нормально. Так как это первый запуск, при сложностях с быстрой диагностикой можно очистить каталог данных /opt/storage и перезапустить сервис.</p><p>Завершим сеанс:</p><h2>Развертывание Broker</h2><p>После развертывания FE и BE основные сервисы StarRocks готовы. Broker — промежуточный сервис интеграции StarRocks с внешними системами HDFS/объектным хранилищем. Если интеграция не нужна, Broker можно не развертывать. Broker является процессом без сохранения состояния (stateless) и может свободно запускаться и останавливаться без влияния на кластер.</p><h3>Конфигурация Broker</h3><p>Конфигурацию Broker обычно менять не требуется. В отличие от FE и BE, у Broker нет и не нужен параметр priority_networks. Сервис Broker по умолчанию привязан к адресу 0.0.0.0. При выполнении команды ADD BROKER (см. раздел 4.5) достаточно указать корректный IP-адрес узла Broker.</p><h3>Запуск Broker</h3><p>Примечание: скрипт остановки Broker — stop_broker.sh (запуск: ./stop_broker.sh).</p><p>Проверьте процессы Java: если виден BrokerBootstrap, значит Broker запущен.</p><p>Журналы Broker — в файле apache_hdfs_broker.log. При нештатном состоянии изучите их для диагностики.V</p><h3>Проверка состояния Broker</h3><p>Подключимся к кластеру через клиент MySQL:</p><p>Проверим состояние Broker:</p><p>Если Alive = true, Broker работает нормально.</p><h2>Простой пример использования</h2><h3>Смена пароля пользователя root</h3><p>Например, установим пароль root:</p><h3>Создание базы и таблицы</h3><p>Число реплик в StarRocks не может превышать число узлов BE. Так как в примере только один узел BE, при создании таблиц обязательно указывайте одну реплику.</p><p>Создадим базу данных:</p><p>Создадим таблицу customer без секционирования, распределенную по хэшу c_custkey на 10 бакетов, с одной репликой:</p><h3>Вставка тестовых данных</h3><h3>Простой запрос</h3><h2>Использование графических инструментов</h2><p>StarRocks совместим с протоколом MySQL. При подключении через графические инструменты его можно рассматривать как прямое подключение к MySQL. Например, в SQLyog укажите IP сервера, имя пользователя, пароль и порт (порт для запросов FE по умолчанию — 9030) — после чего подключайтесь.</p><h2>Развертывание в Docker</h2><p>Если у единственного сервера достаточно ресурсов (оперативная память, дисковое пространство и т. п.), можно развернуть несколько экземпляров FE/BE на одном узле с использованием Docker. Однако из-за конкуренции за ресурсы такой подход по-прежнему не рекомендуется для продуктивной среды.</p><p>Кроме запуска StarRocks в Docker-контейнерах, можно сохранить контейнер, подготовленный на шаге «Глава 1.2: подготовка среды», как образ и использовать его для ускоренного масштабирования кластера.</p><p>Контейнеризованное развертывание и эксплуатация в этой главе не рассматриваются. Отдельная документация опишет «развертывание в один клик» одноузлового StarRocks на базе Docker.</p><h2>Приложение 1: дерево каталогов пакета развертывания StarRocks (частично)</h2>]]></content:encoded>
    </item>
    <item>
      <title>RTMP Протокол. Что это такое и как он работает?</title>
      <link>https://tproger.ru/articles/rtmp-protokol--chto-eto-takoe-i-kak-on-rabotaet-</link>
      <comments>https://tproger.ru/articles/rtmp-protokol--chto-eto-takoe-i-kak-on-rabotaet-?scrollTo=tproger-comments</comments>
      <dc:creator><![CDATA[QL Xavier]]></dc:creator>
      <guid isPermaLink="true">https://tproger.ru/articles/rtmp-protokol--chto-eto-takoe-i-kak-on-rabotaet-</guid>
      <description><![CDATA[<p>Всё, что нужно знать о видео стриминговом протоколе RTMP. Что это такое, как работает и чем отличается от других протоколов.</p><p>— Читать дальше «<a rel="follow" href="https://tproger.ru/articles/rtmp-protokol--chto-eto-takoe-i-kak-on-rabotaet-">RTMP Протокол. Что это такое и как он работает?</a>»</p>]]></description>
      <category><![CDATA[Сетевые протоколы]]></category>
      <category><![CDATA[Видеоконтент]]></category>
      <category><![CDATA[Стриминговые сервисы]]></category>
      <category><![CDATA[Статьи]]></category>
      <slash:comments>0</slash:comments>
      <pubDate>Mon, 13 Oct 2025 12:00:03 GMT</pubDate>
      <content:encoded><![CDATA[<h2>Что такое RTMP протокол?</h2><p>RTMP — это протокол потоковой передачи данных, первоначально разработанный компанией Macromedia (позже приобретенной Adobe) для передачи аудио, видео и данных через Интернет. RTMP значительно вышел за рамки своего первоначального назначения (для Flash) и стал основой современной инфраструктуры потоковой передачи данных.</p><h2>Краткая история создания RTMP протокола</h2><p>RTMP появился в начале 2000-х годов. Однако протокол был проприетарным и закрытым, пока американский разработчик стриминговых решений Red5 не провел обратную разработку RTMP и не создал версию с открытым исходным кодом, демократизировав доступ к профессиональной технологии потоковой передачи.</p><p>На сегодняшний день в России RUTUBE и VK используют RTMP для получения видео прямых эфиров: на <a href="https://rutube.ru/info/broadcast/">RUTUBE</a> стрим запускается через OBS с указанием RTMP-адреса и ключа. В <a href="https://habr.com/ru/companies/vk/news/659853/">VK в публичном API</a> доступен метод 'video.startStreaming', который возвращает RTMP-адрес и ключ потока для запуска трансляций в сообществах и на страницах.</p><p><b>Ключевые вехи:</b></p><p>2002: Macromedia представляет RTMP для приложений Flash.</p><p>2005: <a href="https://www.sec.gov/Archives/edgar/data/913949/000104746905010580/a2156088zex-99_1.htm">Adobe приобретает Macromedia</a> и RTMP.</p><p>2005: Red5 релизит <a href="https://www.red5.net/red5-media-server/">open-source медиа сервер</a>.</p><p>2012: Adobe <a href="https://blog.adobe.com/en/publish/2017/07/25/adobe-flash-update">прекращает разработку Flash</a>.</p><h2>Как работает стриминг с RTMP сервером?</h2><p>RTMP работает на архитектуре клиент-сервер, где программное обеспечение для потоковой передачи (например, OBS Studio) подключается к серверу RTMP для доставки контента в реальном времени. Протокол использует TCP для надежной передачи данных и обычно работает на порту 1935.</p><p>Вот основной рабочий процесс:</p><ol><li>Запуск потока: кодировщик устанавливает соединение с сервером RTMP.</li><li>Процесс установления соединения: клиент и сервер обмениваются информацией для установления сеанса.</li><li>Стриминг данных: аудио, видео и метаданные отправляются в виде фрагментов в режиме реального времени.</li><li>Распределение: сервер обрабатывает и распределяет поток среди зрителей.</li></ol><h3>Ключевые компоненты потоковой передачи RTMP</h3><ul><li>RTMP сервер: основная инфраструктура, которая принимает, обрабатывает и распределяет потоки.</li><li>Кодировщик: программное обеспечение или оборудование, которое захватывает и сжимает аудио/видео для передачи. Популярные варианты включают <a href="https://obsproject.com/">OBS Studio</a>, <a href="https://www.wirecast.io/en/">Wirecast</a> и <a href="https://ffmpeg.org/">FFmpeg</a>.</li><li>Плеер: клиентское приложение, которое принимает и отображает содержимое потока.</li><li>Интеграция с CDN: сети доставки контента работают с серверами RTMP для глобального распределения потоков с оптимальной производительностью.</li></ul><h2>Плюсы и минусы использования RTMP</h2><h3>Преимущества RTMP</h3><ol><li>Универсальная совместимость: поддерживается практически всеми платформами потоковой передачи.</li><li>Надёжность: передача на основе TCP обеспечивает целостность данных.</li><li>Зрелая экосистема: обширный набор инструментов и документация.</li><li>Низкая сложность: простая реализация и отладка.</li><li>Совместимость с брандмауэрами: хорошо работает в корпоративных сетях.</li></ol><h3>Ограничения, которые следует учитывать</h3><ol><li>Репутация задержки: часто RTMP сервер некорректно настроен, и контент передается с задержкой.</li><li>Оптимизация для мобильных устройств: менее оптимален для мобильного стриминга по сравнению с более новыми протоколами.</li><li>Поддержка браузеров: требует Flash или специальных проигрывателей для воспроизведения в веб-браузере.</li></ol><h2>Альтернативы RTMP протоколу в 2025</h2><h3>Отличия между RTMP и RTSP</h3><p>RTMP и RTSP — это протоколы с низкой задержкой, но, как правило, они используются в совершенно разных случаях. RTMP популярен для прямых трансляций на таких платформах, как YouTube, а RTSP — стандарт для IP-камер и трансляций с дронов. RTSP использует RTP (Real-Time Protocol), что делает его более похожим на WebRTC в плане транспорта.</p><p>Еще одно ключевое отличие — поддержка кодеков: RTMP ограничен H.264, а RTSP поддерживает несколько кодеков, включая H.265. RTSP идеально подходит для прямых рабочих процессов между устройствами, а RTMP предлагает более широкую поддержку CDN и облачной трансляции.</p><h3>Отличия между RTMP и протоколами на основе WebRTC</h3><p>WHIP (WebRTC-HTTP Ingestion Protocol) представляет собой будущее потоковой передачи с ультранизкой задержкой. В отличие от TCP-основы RTMP, WHIP использует WebRTC для доставки с задержкой менее секунды.</p><p>Крупные платформы такие как Twitch и <a href="https://obsproject.com/kb/whip-streaming-guide">OBS Studio</a> уже поддерживают WHIP.</p><h3>Отличия между RTMP и SRT</h3><p>SRT обеспечивает повышенную надежность в сложных сетевых условиях, что делает его идеальным для рабочих процессов, где качество не может быть поставлено под угрозу.</p><h3>Отличия между RTMP и HLS</h3><p>RTMP в основном используется для ввода, а HLS — исключительно для вывода (воспроизведения).</p><p>HLS редко используется для ввода, он предназначен для доставки. HLS сегментирует потоки на фрагменты и использует плейлисты, что приводит к высокой задержке, но обеспечивает массовую масштабируемость через CDN.</p><p>RTMP, напротив, предлагает более низкую задержку, но больше не поддерживается большинством CDN. Когда-то он использовался как для ввода, так и для воспроизведения в эпоху Flash, но эта роль перешла к WebRTC для доставки в реальном времени. Сегодня RTMP остается доминирующим протоколом для ввода, а HLS обеспечивает крупномасштабное воспроизведение по запросу.</p><h3>Отличия между RTMP и RTMPS</h3><p>RTMPS — это просто безопасная версия RTMP, использующая SSL/TLS для шифрования потока. Буква «S» означает «безопасный», что делает его вариантом RTMP с дополнительной защитой конфиденциальных данных. Оба протокола имеют одинаковую задержку и надежность. RTMPS часто требуется платформам, таким как Facebook* Live, для обеспечения безопасной передачи данных. Его настройка включает в себя HTTPS и использование действительных сертификатов. Если ваш поток содержит личную или конфиденциальную информацию, RTMPS — лучший выбор.</p><p>*Запрещён в РФ</p><p>Надеюсь, что вам была полезна эта статья. Если я что-то упустила, то напишите, пожалуйста, в комментарии.</p><p><br /></p><p><br /></p><p><br /></p><p><br /></p><p><br /></p>]]></content:encoded>
    </item>
    <item>
      <title>ТОП-33 курса сетевого инженера: онлайн-обучение сетевому инжинирингу</title>
      <link>https://tproger.ru/articles/top-33-kursa-setevogo-inzhenera--onlajn-obuchenie-setevomu-inzhiniringu</link>
      <comments>https://tproger.ru/articles/top-33-kursa-setevogo-inzhenera--onlajn-obuchenie-setevomu-inzhiniringu?scrollTo=tproger-comments</comments>
      <dc:creator><![CDATA[Анастасия Шишкина]]></dc:creator>
      <guid isPermaLink="true">https://tproger.ru/articles/top-33-kursa-setevogo-inzhenera--onlajn-obuchenie-setevomu-inzhiniringu</guid>
      <description><![CDATA[<p>Лучшие курсы по сетевому инжинирингу. Рейтинг вариантов онлайн-обучения, обзор обучающей программы и стоимости курсов.</p><p>— Читать дальше «<a rel="follow" href="https://tproger.ru/articles/top-33-kursa-setevogo-inzhenera--onlajn-obuchenie-setevomu-inzhiniringu">ТОП-33 курса сетевого инженера: онлайн-обучение сетевому инжинирингу</a>»</p>]]></description>
      <category><![CDATA[Сетевые протоколы]]></category>
      <category><![CDATA[DevOps]]></category>
      <category><![CDATA[Обучающие курсы]]></category>
      <category><![CDATA[Системное администрирование]]></category>
      <category><![CDATA[DevSecOps]]></category>
      <category><![CDATA[Статьи]]></category>
      <slash:comments>0</slash:comments>
      <pubDate>Thu, 04 Sep 2025 08:57:42 GMT</pubDate>
      <content:encoded><![CDATA[<p>Дистанционные курсы сетевого инженера помогают не только разобраться в настройке систем, но и освоить работу с современным оборудованием, протоколами, безопасностью. Сейчас специалисты все чаще сталкиваются с облачными инфраструктурами, виртуализацией, DevOps-подходами. Образование в онлайн-формате дает доступ к тренажерам и лабораториям, где можно отрабатывать навыки без риска для реальных систем, а также выбрать программу под свой уровень — от базовой до продвинутой.</p><p><i>Я изучила свыше 70 программ и отобрала 33 курса. В начале списка — десять самых сильных, затем тринадцать для углубления знаний в смежных направлениях и десять бесплатных вариантов. Для некоторых добавила действующие скидки и бонусы.</i></p><h2>ТОП-10 лучших курсов для сетевых инженеров в 2026 году</h2><p>1. <a href="https://experts2.ru/eluFvG?sub1=tproger-kf&amp;sub2=kursy-setevoy-injener&amp;sub4=1">Сетевой инженер</a> от <b>Нетологии</b> — обучение с практикой и карьерной поддержкой.</p><p>2. <a href="https://experts2.ru/mLDxbj?sub1=tproger-kf&amp;sub2=kursy-setevoy-injener&amp;sub4=2">Профессия Сетевой инженер</a> от <b>GeekBrains</b> — тренинг с командными проектами и обратной связью экспертов.</p><p>3. <a href="https://experts2.ru/AulTcx?sub1=tproger-kf&amp;sub2=kursy-setevoy-injener&amp;sub4=3">Network Engineer. Professional</a> от <b>OTUS</b> — подготовка для специалистов с опытом, с проектами и изучением кейсов.</p><p>4. <a href="https://experts2.ru/drnIDq?sub1=tproger-kf&amp;sub2=kursy-setevoy-injener&amp;sub4=4">Кибербезопасность и сетевые технологии</a> от <b>Компьютерной академии TOP</b> — обучение построению и защите инфраструктуры с международной сертификацией.</p><p>5. <a href="https://experts2.ru/pFfPxm?sub1=tproger-kf&amp;sub2=kursy-setevoy-injener&amp;sub4=5">Специализация Network Engineer</a> от <b>OTUS</b> — двухступенчатая углубленная подготовка с практикой и проектами.</p><p>6. <a href="https://experts2.ru/VDoxcf?sub1=tproger-kf&amp;sub2=kursy-setevoy-injener&amp;sub4=6">Сетевой инженер на базе решений компании Cisco Systems</a> от <b>Специалист.ру</b> — экспресс-курс с интенсивной практикой на оборудовании Cisco.</p><p>7. <a href="https://experts2.ru/CFxetb?sub1=tproger-kf&amp;sub2=kursy-setevoy-injener&amp;sub4=7">Сетевой инженер</a> от <b>Учебного центра доп. образования ЭКОДПО </b>— мини-тренинг по настройке экосистем и автоматизации.</p><p>8. <a href="https://experts2.ru/tFnzmV?sub1=tproger-kf&amp;sub2=kursy-setevoy-injener&amp;sub4=8">Сетевой инженер</a> от <b>НЦПО </b>— дистанционное образование с проверкой домашних заданий и госдипломом.</p><p>9. <a href="https://experts2.ru/xKfhYq?sub1=tproger-kf&amp;sub2=kursy-setevoy-injener&amp;sub4=9">Сетевой инженер</a> от <b>АПОК</b> — краткий курс без лишней теории, с содержанием, соответствующим требованиям индустрии.</p><p>10. <a href="https://experts2.ru/crvHGi?sub1=tproger-kf&amp;sub2=kursy-setevoy-injener&amp;sub4=10">Сетевой инженер</a> от <b>МИПК</b> — переподготовка с акцентом на корпоративные сети и администрирование.</p><p>Программы из подборки интересны будут тем, кто хочет освоить профессию с нуля или расширить практические скиллы в уже знакомой сфере. Они подойдут специалистам, которые стремятся работать с современным сетевым оборудованием, проектами и кейсами из повседневной практики. Также подготовка полезна тем, кто планирует получить международную сертификацию или официальное подтверждение квалификации для карьерного роста.</p><h2>Онлайн-курсы для сетевого инженера с нуля</h2><p><b>1. </b><a href="https://experts2.ru/eluFvG?sub1=tproger-kf&amp;sub2=kursy-setevoy-injener&amp;sub4=1">Сетевой инженер</a> | <b>Нетология</b></p><p><b>Используйте промокод kursfinder, чтобы получить скидку 7%</b></p><p><a href="https://experts2.ru/eluFvG?sub1=tproger-kf&amp;sub2=kursy-setevoy-injener&amp;sub4=1">Получить скидку &gt;&gt;&gt;</a></p><p>Онлайн-курс для сетевого инженера с трудоустройством. Разработан архитектором O2XYGEN Data Center при поддержке инженеров Yandex Cloud. Подготовка сочетает теорию и задачи, приближенные к рабочим условиям: настройка оборудования, проектирование корпоративных экосистем. В процессе — 32 лабораторных задания и два крупных проекта. По ходу учебы студенты получают фидбэк от экспертов и обсуждают сложные моменты на вебинарах.</p><figure><img src="https://media.tproger.ru/user-uploads/108137/2025-09-04/faaec21e-f44a-4dc7-92fa-a41055677186.png" alt="" /></figure><ul><li>Стоимость: от 3 366 руб./мес. в рассрочку на 2 года.</li><li>Длительность: 13 месяцев.</li><li>Формат обучения: вебинары, видеолекции, экспертные консультации, лабораторные и курсовые задания.</li><li>Документ об образовании: свидетельство и диплом о профпереподготовке.</li></ul><p><b>Кому подойдет:</b> начинающим IT-специалистам, администраторам, разработчикам, техническим сотрудникам.</p><p><b>Преимущества:</b></p><ul><li>Практика на задачах, применимых в работе;</li><li>Записи уроков доступны 3 года;</li><li>Наставничество инженеров из отрасли;</li><li>Гибкий график с возможностью паузы;</li><li>Карьерное консультирование и подготовка к будущим собеседованиям;</li><li>Материалы представлены в мобильной утилите;</li><li>Бесплатный доступ к инструментам для выполнения практики.</li></ul><p><b>Недостатки:</b></p><ul><li>Жесткое расписание вебинаров;</li><li>Наличие устаревших материалов в отдельных темах.</li></ul><p><b>Программа обучения:</b></p><ul><li>Коммутация, динамическая маршрутизация;</li><li>Сетевая безопасность и QoS;</li><li>Проектирование корпоративной сети;</li><li>Учет трафика, аутентификация и авторизация;</li><li>Инструменты эксплуатации, IP-телефония.</li></ul><p><a href="https://experts2.ru/eluFvG?sub1=tproger-kf&amp;sub2=kursy-setevoy-injener&amp;sub4=1">Ознакомиться с полной программой &gt;&gt;&gt;</a></p><p><b>2. </b><a href="https://experts2.ru/mLDxbj?sub1=tproger-kf&amp;sub2=kursy-setevoy-injener&amp;sub4=2">Профессия Сетевой инженер</a> | <b>GeekBrains</b></p><p>Курс по сетевым технологиям создан при участии специалистов из DevOps, администрирования, защиты информации и разработки. Много внимания уделено автоматизации процессов и специфике обслуживания оборудования. Материал подается через видеоуроки и самостоятельные задания в профессиональной среде, с регулярной обратной связью и живыми сессиями с экспертами. В конце тренинга формируется дипломный проект. Карьерная команда помогает подготовиться к собеседованиям и представить свои навыки работодателям.</p><figure><img src="https://media.tproger.ru/user-uploads/108137/2025-09-04/a1273909-2851-44f1-9ede-98c9b3c7ca16.png" alt="" /></figure><ul><li>Стоимость: от 4 370 руб./мес. с разделением на 3 года.</li><li>Длительность: до 12 месяцев.</li><li>Формат обучения: онлайн, задания, командные проекты, вебинары, консультации.</li><li>Документ об образовании: сертификат.</li></ul><p><b>Кому подойдет:</b> тем, кто планирует связать карьеру с сетями и управлением IT-инфраструктурой.</p><p><b>Преимущества:</b></p><ul><li>Преподаватели с опытом в индустрии;</li><li>Наставничество и карьерная поддержка;</li><li>Выбор и смена специализации после основного блока;</li><li>Свыше 50 заданий;</li><li>Практика на реальных инструментах;</li><li>Доступ к интернет-библиотеке и другим интенсивам;</li><li>Живые обсуждения с экспертами.</li></ul><p><b>Недостатки:</b></p><ul><li>Теории может не хватить без самостоятельного поиска информации;</li><li>Карьерное сопровождение не гарантирует трудоустройства.</li></ul><p><b>Программа обучения:</b></p><ul><li>Знакомство с кодингом;</li><li>Контроль версий;</li><li>Языки разработки;</li><li>Сетевые технологии;</li><li>Маршрутизация;</li><li>Дополнительный видеомодуль по математике и информатике.</li></ul><p><a href="https://experts2.ru/mLDxbj?sub1=tproger-kf&amp;sub2=kursy-setevoy-injener&amp;sub4=2">Ознакомиться с полной программой &gt;&gt;&gt;</a></p><p><b>3. </b><a href="https://experts2.ru/AulTcx?sub1=tproger-kf&amp;sub2=kursy-setevoy-injener&amp;sub4=3">Network Engineer. Professional</a> | <b>OTUS</b></p><p>Дистанционный курс ведут практикующие инженеры ЦОД и сертифицированные специалисты Cisco. Материал адресован тем, кто уже работает с сетями и хочет уверенно проектировать, защищать и поддерживать инфраструктуру уровня предприятия. Каждая тема подкрепляется практикой: лабораторными заданиями, проектом и фидбэком от преподавателей. Студенты получают прямую поддержку экспертов и общение в активном сообществе.</p><figure><img src="https://media.tproger.ru/user-uploads/108137/2025-09-04/7333236a-b5fe-483e-b104-a45f05108dcf.png" alt="" /></figure><ul><li>Стоимость: от 8 500 руб./мес.</li><li>Длительность: 7 месяцев.</li><li>Формат обучения: онлайн, вебинары, проект.</li><li>Документ об образовании: удостоверение.</li></ul><p><b>Кому подойдет: </b>специалистам по маршрутизации и системным администраторам.</p><p><b>Преимущества:</b></p><ul><li>Инструкторы с практическим опытом из крупных компаний;</li><li>Инфраструктура для практики от Yandex Cloud;</li><li>Проектные задания с реальными сценариями;</li><li>Разбор реальных ситуаций и итоговый проект;</li><li>Размещение резюме в базе OTUS и участие в карьерных мероприятиях;</li><li>Поддержка сообщества.</li></ul><p><b>Недостатки:</b></p><ul><li>Требуются исходные знания по сетям.</li></ul><p><b>Программа обучения:</b></p><ul><li>Архитектура и коммутация;</li><li>OSPF, IS-IS, EIGRP;</li><li>BGP и оптимизация маршрутизации;</li><li>Безопасность инфраструктуры.</li></ul><p><a href="https://experts2.ru/AulTcx?sub1=tproger-kf&amp;sub2=kursy-setevoy-injener&amp;sub4=3">Ознакомиться с полной программой &gt;&gt;&gt;</a></p><p><b>4. </b><a href="https://experts2.ru/drnIDq?sub1=tproger-kf&amp;sub2=kursy-setevoy-injener&amp;sub4=4">Кибербезопасность и сетевые технологии</a> | <b>Компьютерная академия TOP</b></p><p>Этот расширенный курс открывает путь к IT без опыта. Он помогает освоить построение и защиту систем, работу с современными инструментами DevOps. Преподаватели-практики сопровождают задания, дают советы и разбирают ошибки. Учеба в малых группах позволяет получать фидбэк на каждом этапе.</p><figure><img src="https://media.tproger.ru/user-uploads/108137/2025-09-04/5da25876-5787-4f1c-9ae8-09dc6ce7c1bc.png" alt="" /></figure><ul><li>Стоимость: от 7 830 руб./мес.</li><li>Длительность: 2,5 года.</li><li>Формат обучения: онлайн с практическими заданиями и проектной работой.</li><li>Документ об образовании: гос. диплом о профпереподготовке, международный диплом от Академии.</li></ul><p><b>Кому подойдет: </b>тем, кто хочет строить карьеру в IT с нуля.</p><p><b>Преимущества:</b></p><ul><li>Практические задачи, близкие к реальным;</li><li>Постоянная поддержка опытных специалистов;</li><li>Сертификация международного уровня;</li><li>Образование доступно с 13 лет;</li><li>Сотрудничество с IT-компаниями.</li></ul><p><b>Недостатки:</b></p><ul><li>Длительный срок прохождения.</li></ul><p><b>Программа обучения:</b></p><ul><li>Проектирование и диагностика кабельных систем;</li><li>Алгоритмы и структуры данных;</li><li>Маршрутизация в IP-сетях;</li><li>Процедурный и системный кодинг;</li><li>Администрирование Windows и Linux;</li><li>Аппаратное обеспечение;</li><li>CCNA;</li><li>Облачные технологии.</li></ul><p><a href="https://experts2.ru/drnIDq?sub1=tproger-kf&amp;sub2=kursy-setevoy-injener&amp;sub4=4">Ознакомиться с полной программой &gt;&gt;&gt;</a></p><p><b>5. </b><a href="https://experts2.ru/pFfPxm?sub1=tproger-kf&amp;sub2=kursy-setevoy-injener&amp;sub4=5">Специализация Network Engineer</a> | <b>OTUS</b></p><p>Курс от специалистов Cisco и инженеров ЦОД Т-Банка, Ozon Tech и Nokia. Обучение построено на двух ступенях: первая дает базовые навыки работы с оборудованием и протоколами, вторая развивает их до уровня Middle, включая настройку BGP, VPN и автоматизацию. Студенты научатся проектировать и документировать сети и устранять неисправности. Каждое домашнее задание сопровождается подробным разбором, а финальный проект позволяет подтвердить квалификацию и оформить диплом.</p><figure><img src="https://media.tproger.ru/user-uploads/108137/2025-09-04/e29ef173-2be8-4ff4-844e-7f924e6ab1c6.png" alt="" /></figure><ul><li>Стоимость: от 14 750 руб./мес.</li><li>Длительность: 12 месяцев.</li><li>Формат обучения: два онлайн-вебинара в неделю.</li><li>Документ об образовании: сертификат и диплом.</li></ul><p><b>Кому подойдет: </b>специалистам начального и среднего уровня, инженерам и разработчикам.</p><p><b>Преимущества:</b></p><ul><li>Спикеры со стажем в крупных компаниях;</li><li>Двухуровневая система, где каждая ступень открывает новые компетенции;</li><li>Проекты для закрепления навыков;</li><li>Работа с профессиональными инструментами и симуляторами;</li><li>Поддержка и разбор заданий в Telegram-чате и на групповых сессиях;</li><li>Возможность улучшить резюме и выложить его в специальную базу платформы;</li><li>Шанс попасть на собеседование у организаций-партнеров.</li></ul><p><b>Недостатки:</b></p><ul><li>Рассрочка дороже, чем у конкурентов.</li></ul><p><b>Программа обучения:</b></p><ul><li>Корпоративные сети, безопасность, автоматизация;</li><li>Построение локальных экосистем и протокол BGP;</li><li>Виртуализация;</li><li>Настройка защищенных каналов;</li><li>Проектные модули обеих ступеней;</li><li>Бонус: основы Linux, команды, процессы.</li></ul><p><a href="https://experts2.ru/pFfPxm?sub1=tproger-kf&amp;sub2=kursy-setevoy-injener&amp;sub4=5">Ознакомиться с полной программой &gt;&gt;&gt;</a></p><p><b>6. </b><a href="https://experts2.ru/VDoxcf?sub1=tproger-kf&amp;sub2=kursy-setevoy-injener&amp;sub4=6">Сетевой инженер на базе решений компании Cisco Systems</a> | <b>Специалист.ру</b></p><p>Экспресс-курс для тех, кто хочет уверенно работать с сетями компаний разного масштаба. Лекции ведет практик с семилетним опытом и десятками реализованных проектов в сфере интернет-инфраструктуры. Эксперт показывает, как анализировать и настраивать инфраструктуру, предотвращать сбои и повышать устойчивость систем. Задания выполняются на оборудовании Cisco. Тренинг готовит реальной работе в роли инженера или аналитика.</p><figure><img src="https://media.tproger.ru/user-uploads/108137/2025-09-04/30704ee7-50d3-4531-9d7c-a96c3597e5e9.png" alt="" /></figure><ul><li>Стоимость: от 3 788 руб./мес.</li><li>Длительность: 48 академ. часов. + 162 академ. часа самостоятельной подготовки.</li><li>Формат обучения: онлайн.</li><li>Документ об образовании: международный сертификат, удостоверение.</li></ul><p><b>Кому подойдет: </b>администраторам и инженерам.</p><p><b>Преимущества:</b></p><ul><li>Практика на оборудовании Cisco;</li><li>Продуманное комплексное наполнение;</li><li>Подготовка к экзамену CCNA 200-301;</li><li>Комплексный подход: от основ до автоматизации;</li><li>Множество графиков прохождения на выбор;</li><li>Автор программы — действующий эксперт;</li><li>Возможность индивидуального образования.</li></ul><p><b>Недостатки:</b></p><ul><li>Нет рассрочки, только кредит;</li><li>Не предусмотрена помощь в трудоустройстве.</li></ul><p><b>Программа обучения:</b></p><ul><li>Архитектура, протоколы, сетевые уровни;</li><li>VLAN, Inter-VLAN Routing, STP, DHCP;</li><li>Мониторинг, виртуализация, автоматизация.</li></ul><p><a href="https://experts2.ru/VDoxcf?sub1=tproger-kf&amp;sub2=kursy-setevoy-injener&amp;sub4=6">Ознакомиться с полной программой &gt;&gt;&gt;</a></p><p><b>7. </b><a href="https://experts2.ru/CFxetb?sub1=tproger-kf&amp;sub2=kursy-setevoy-injener&amp;sub4=7">Сетевой инженер</a> | <b>Учебный центр доп. образования ЭКОДПО</b></p><p>Мини-курс для специалистов, которые хотят подтвердить квалификацию или получить новую. Переподготовка открывает путь к современным технологиям и автоматизации инфраструктуры. Слушатели осваивают настройку оборудования, разработку решений для их модернизации. Учеба сочетает работу с электронными пособиями, сдачу зачетов и итоговую аттестацию. Содержание лекций основано на профстандартах и актуальных технологиях.</p><figure><img src="https://media.tproger.ru/user-uploads/108137/2025-09-04/904f9a31-4b89-47b6-a81e-623978319b02.png" alt="" /></figure><ul><li>Стоимость: от 29 980 руб.</li><li>Длительность: от 1,5 месяца.</li><li>Формат обучения: дистанционно.</li><li>Документ об образовании: диплом.</li></ul><p><b>Кому подойдет: </b>для начинающих или желающих сменить карьерный вектор.</p><p><b>Преимущества:</b></p><ul><li>Доступ к учебной информации без ограничений по времени;</li><li>Три тарифа с индивидуальным треком;</li><li>Поддерживают актуальные требования ИТ-индустрии;</li><li>Сопровождение от специалистов на протяжении курса;</li><li>Бесплатная доставка документов.</li></ul><p><b>Недостатки:</b></p><ul><li>Отсутствие проверки практических заданий;</li><li>Прохождение в самостоятельном темпе.</li></ul><p><b>Программа обучения:</b></p><ul><li>Linux для начала работы;</li><li>Коммутация;</li><li>Диагностика и устранение ошибок;</li><li>Python для автоматизации;</li><li>WAN и масштабируемые сети.</li></ul><p><a href="https://experts2.ru/CFxetb?sub1=tproger-kf&amp;sub2=kursy-setevoy-injener&amp;sub4=7">Ознакомиться с полной программой &gt;&gt;&gt;</a></p><p><b>8. </b><a href="https://experts2.ru/tFnzmV?sub1=tproger-kf&amp;sub2=kursy-setevoy-injener&amp;sub4=8">Сетевой инженер</a> | <b>НЦПО</b></p><p>Курс разработан для тех, кто хочет углубиться в интернет-технологии или сменить профессию. Материал подготовлен практикующими инженерами, что отражается в структуре вебинаров. Формат построен так, чтобы теория сочеталась с задачами, приближенными к наиболее частым ситуациям.</p><figure><img src="https://media.tproger.ru/user-uploads/108137/2025-09-04/1c42e57e-c678-4aa7-9443-702f43d52658.png" alt="" /></figure><ul><li>Стоимость: от 1 200 руб./мес.</li><li>Длительность: от 250 до 1 600 академ. часов.</li><li>Формат обучения: дистанционно.</li><li>Документ об образовании: диплом.</li></ul><p><b>Кому подойдет: </b>тем, кто планирует расширять компетенции в администрировании и проектировании.</p><p><b>Преимущества:</b></p><ul><li>Личный кабинет с лекциями и заданиями;</li><li>Проверка ДЗ в удобном режиме;</li><li>Высылают методические материалы;</li><li>Заключают с абитуриентом официальный договор;</li><li>Доставка диплома по всей стране без доплат.</li></ul><p><b>Недостатки:</b></p><ul><li>Отсутствие живых встреч с преподавателями.</li></ul><p><b>Программа обучения:</b></p><ul><li>Проектирование инфраструктуры;</li><li>Протоколы маршрутизации и коммутации;</li><li>IPv6: адресация, переход с IPv4, защита.</li></ul><p><a href="https://experts2.ru/tFnzmV?sub1=tproger-kf&amp;sub2=kursy-setevoy-injener&amp;sub4=8">Ознакомиться с полной программой &gt;&gt;&gt;</a></p><p><b>9. </b><a href="https://experts2.ru/xKfhYq?sub1=tproger-kf&amp;sub2=kursy-setevoy-injener&amp;sub4=9">Сетевой инженер</a> | <b>АПОК</b></p><p>Курс ориентирован на тех, кто хочет получить квалификацию и подтвердить ее дипломом. Академия предлагает три формата прохождения, позволяя выбрать темп, комфортный лично для участника. Обучение строится на практико-ориентированных дисциплинах, исключая отвлекающие темы. Содержание контролируется методистами, чтобы соответствовать требованиям отрасли. Каждый этап прохождения отражает практические сценарии, с которыми сталкиваются специалисты в сетевой сфере.</p><figure><img src="https://media.tproger.ru/user-uploads/108137/2025-09-04/0338a066-69ed-4a74-8779-11b63954a0ae.png" alt="" /></figure><ul><li>Стоимость: от 2 498 руб./мес.</li><li>Длительность: от 1 месяца.</li><li>Формат обучения: дистанционный, текстовые материалы и тестирование.</li><li>Документ об образовании: диплом.</li></ul><p><b>Кому подойдет: </b>смежным специалистам из ИТ.</p><p><b>Преимущества:</b></p><ul><li>Информация без лишних блоков;</li><li>Три учебных плана, чтобы выбрать оптимальный путь;</li><li>Контент под актуальные стандарты;</li><li>Настройка содержания программы в премиум-тарифе;</li><li>Оперативная поддержка для студентов;</li><li>Дают официальный документ;</li><li>Быстрая доставка оригиналов дипломов.</li></ul><p><b>Недостатки:</b></p><ul><li>Нет практики;</li><li>Самостоятельное прохождение, без наставничества.</li></ul><p><b>Программа обучения:</b></p><ul><li>Поиск и устранение ошибок;</li><li>Linux;</li><li>Архитектура и масштабирование;</li><li>Python для инженера;</li><li>Автоматизация инфраструктуры;</li><li>Устранение неисправностей;</li><li>Сетевые устройства.</li></ul><p><a href="https://experts2.ru/xKfhYq?sub1=tproger-kf&amp;sub2=kursy-setevoy-injener&amp;sub4=9">Ознакомиться с полной программой &gt;&gt;&gt;</a></p><p><b>10.</b> <a href="https://experts2.ru/crvHGi?sub1=tproger-kf&amp;sub2=kursy-setevoy-injener&amp;sub4=10">Сетевой инженер</a> | <b>МИПК</b></p><p>Курс с упором на переподготовку для людей с профильным образованием. Формирует навыки работы с локальными и корпоративными сетями, конфигурирования серверов и администрирования инфраструктуры. Персональный консультант поможет определить текущую степень подготовки и выбрать подходящую специализацию. Дополнительно дают бонусные материалы для самостоятельного закрепления навыков и расширения базы.</p><figure><img src="https://media.tproger.ru/user-uploads/108137/2025-09-04/8db14c92-aa3e-4c63-9cc6-d837fee3a339.png" alt="" /></figure><ul><li>Стоимость: предоставляется по запросу.</li><li>Длительность: от 72 до 512 часов.</li><li>Формат обучения: дистанционно.</li><li>Документ об образовании: диплом либо удостоверение.</li></ul><p><b>Кому подойдет: </b>техническим специалистам со средним или высшим образованием.</p><p><b>Преимущества:</b></p><ul><li>Документы госстандарта;</li><li>Разная длительность тренингов;</li><li>Подбор специальности с учетом уровня подготовки;</li><li>Обновляемое содержание дисциплин;</li><li>Свободный выбор времени для прохождения лекций;</li><li>Материалы подготовлены экспертами;</li><li>Поддержка опытных методистов.</li></ul><p><b>Недостатки:</b></p><ul><li>Информация о стоимости только по запросу;</li><li>Нет варианта без профильного образования.</li></ul><p><b>Программа обучения:</b></p><ul><li>Построение и оптимизация инфраструктуры;</li><li>Серверные решения и администрирование;</li><li>Алгоритмы работы локальных систем и варианты их обустройства;</li><li>Управление сетевой инфраструктурой.</li></ul><p><a href="https://experts2.ru/crvHGi?sub1=tproger-kf&amp;sub2=kursy-setevoy-injener&amp;sub4=10">Ознакомиться с полной программой &gt;&gt;&gt;</a></p><h2>Дополнительные курсы по сетевым технологиям</h2><p>В этом разделе отобраны еще 13 образовательных решений для обучения на сетевого инженера.</p><ul><li><a href="https://experts2.ru/MrocaQ?sub1=tproger-kf&amp;sub2=kursy-setevoy-injener&amp;sub4=netop">Инженер систем сервисов и сетей Linux, IP-телефонии и унифицированных коммуникаций</a> от Специалист.ру — тренинг  сочетает теорию с практикой: после каждого блока слушатели выполняют задания под руководством наставников. В итоге выпускники умеют запускать сервисы, настраивать IP-телефонию и интегрировать системы связи с корпоративными серверами.</li><li><a href="https://experts2.ru/wtYjiB?sub1=tproger-kf&amp;sub2=kursy-setevoy-injener&amp;sub4=netop">Системный администратор</a> от Яндекс.Практикума — за полгода научат администрированию Линукса и азам DevOps. Подготовка охватывает инфраструктуру, базы данных, контейнеризацию и мониторинг, а также темы по системному инжинирингу и архитектуре информационных систем. Выполняя практические задачи и проекты, студенты соберут портфолио из 12 работ.</li><li><a href="https://experts2.ru/oHKbtg?sub1=tproger-kf&amp;sub2=kursy-setevoy-injener&amp;sub4=netop">Полный курс по сетевым технологиям</a> от Merion Academy — погружает в IT с нуля и сразу переключает на реальные задачи инженеров. Учащиеся настраивают маршрутизаторы, создают виртуальные сети и решают проблемы в эмуляторе от Cisco. У выпускников остаются актуальные навыки и поддержка кураторов.</li><li><a href="https://experts2.ru/vialVO?sub1=tproger-kf&amp;sub2=kursy-setevoy-injener&amp;sub4=netop">Networks. Сетевые технологии</a> от Rebrain — практикум помогает освоить компьютерные сети с нуля и довести навыки до уровня проектирования сложных инфраструктур. Слушатели учатся настраивать протоколы, обеспечивать защиту, а также автоматизировать управление и интегрировать его в CI/CD. По итогам можно уверенно создавать и поддерживать надежные решения для бизнеса любого масштаба.</li><li><a href="https://experts2.ru/zEstxK?sub1=tproger-kf&amp;sub2=kursy-setevoy-injener&amp;sub4=netop">Онлайн-курс по сетевым технологиям Huawei</a> от Merion Academy — занятия строятся вокруг практики в симуляторе eNSP: от настройки VLAN и защиты сети от петель до работы с OSPF и BGP. Участники будут фильтровать трафик, динамически распределять IP-адреса и повышать устойчивость инфраструктуры.</li><li><a href="https://experts2.ru/zWoJpq?sub1=tproger-kf&amp;sub2=kursy-setevoy-injener&amp;sub4=netop">Инженерные сети и системы</a> от Профессионального стандарта — дает знания по проектированию, монтажу и обслуживанию инженерных сетей и систем. Слушатели изучают технические стандарты, правовые основы работы и учатся проводить ремонт и сертификацию объектов.</li><li><a href="https://experts2.ru/hqYNwx?sub1=tproger-kf&amp;sub2=kursy-setevoy-injener&amp;sub4=netop">Мини-курс по протоколу BGP</a> от Merion Academy — знакомят с принципами маршрутизации и работы протокола BGP. Объясняют, как настраивать фильтрацию трафика, управлять приоритетами маршрутов и проверять видимость префиксов по всему миру. Разбирают классические и современные модели, включая Application Centric Infrastructure.</li><li><a href="https://experts2.ru/EWzrqi?sub1=tproger-kf&amp;sub2=kursy-setevoy-injener&amp;sub4=netop">Атаки на сетевую инфраструктуру</a> от CyberEd — за 1,5 месяца участники разбирают реальные сценарии атак на корпоративные сети и учатся находить уязвимости в Линуксе и Windows. Осваивают методы внутреннего пентеста, анализ трафика, техники обхода защиты и атаки на Kerberos и NTLM. Финалом становится практическая отработка полного цикла компрометации инфраструктуры.</li><li><a href="https://experts2.ru/wnARpc?sub1=tproger-kf&amp;sub2=kursy-setevoy-injener&amp;sub4=netop">Курс MTCNA: MikroTik Certified Network Associate</a> от Эврики — покажут, как работать с оборудованием. В лекциях все: от первого подключения и базовой настройки до защиты трафика, управления сервисами и создания туннелей. Подходит тем, кто хочет разбираться в сетях на профессиональном уровне.</li><li><a href="https://experts2.ru/anEyoS?sub1=tproger-kf&amp;sub2=kursy-setevoy-injener&amp;sub4=netop">Локальные сети</a> от CyberEd — спикеры объяснят устройство инфраструктуры, научат проектировать их архитектуру и защищать от атак. Студенты освоят настройку маршрутизации, NAT, попрактикуют сегментирование. Получат опыт моделирования экосистем и работы с реальными уязвимостями.</li><li><a href="https://experts2.ru/yqoQsL?sub1=tproger-kf&amp;sub2=kursy-setevoy-injener&amp;sub4=netop">Основы сетевых технологий</a> от Cisco — работа на реальном оборудовании: от создания домашней или офисной сети до настройки безопасности и устранения неполадок. Слушатели знакомятся с IP-адресацией, протоколами TCP/IP, взаимодействием устройств в сети. Практика проходит на оборудовании Cisco и в симуляторе Packet Tracer.</li><li><a href="https://experts2.ru/zfJlKu?sub1=tproger-kf&amp;sub2=kursy-setevoy-injener&amp;sub4=netop">Системный инженер</a> от ИПАП — сочетает работу с серверами и современными технологиями. Абитуриенты изучат Python для автоматизации задач и освоят мониторинг инфраструктуры через Zabbix. Учеба построена на практических примерах.</li><li><a href="https://experts2.ru/wdIsvX?sub1=tproger-kf&amp;sub2=kursy-setevoy-injener&amp;sub4=netop">Сетевой инженер</a> от Academy IT DMS — превращают сухую теорию в живую практику: настраивают коммутаторы и маршрутизаторы, строят защищенные корпоративные сети. Выпускники быстро находят и устраняют неполадки, управляют доступом через PKI и прогнозируют работу сети с помощью виртуализации.</li></ul><h2>Бесплатные курсы для сетевых инженеров</h2><p>В этом разделе собраны интенсивы для бесплатного обучения на сетевого инженера. Важно было найти ресурсы, где материал подан понятно и структурировано. Они станут отличной отправной точкой для тех, кто хочет попробовать себя в профессии без вложений.</p><p><b>1.</b> <a href="https://experts2.ru/biIeDp?sub1=tproger-kf&amp;sub2=kursy-setevoy-injener&amp;sub4=netop">Погружение в сетевую безопасность</a> — <b>Яндекс.Практикум</b></p><p>Тренинг показывает, как строить безопасные сети в облаке и на собственных серверах, соединять удаленные офисы. Студенты учатся отражать DDoS-атаки и отслеживать нагрузку виртуальных машин. Практика ведется на реальном сценарии интеграции стартапа в инфраструктуру крупной сети под руководством виртуального специалиста по безопасности.</p><p><b>Главное о курсе:</b></p><ul><li>Развертывание межсетевого экрана следующего поколения;</li><li>Подходит для практикующих специалистов;</li><li>Интерактивные задания и наглядные примеры вместо сухой теории;</li><li>Постоянная поддержка экспертов и общение с коллегами;</li><li>Материалы открыты в любое время и навсегда.</li></ul><p><b>2. </b><a href="https://www.youtube.com/watch?v=duBeaGZzW7U">Основы компьютерных сетей. Диагностика и устранение основных проблем</a> — <b>GeekBrains</b></p><p>Вебинар раскрывает, как компьютеры и устройства общаются друг с другом в сети и почему иногда возникают сбои. Участники узнают, как устроены протоколы, как адресуются данные и как быстро находить и исправлять проблемы.</p><p><b>Главное о курсе:</b></p><ul><li>Ясное и доступное объяснение сложных вещей;</li><li>Насыщенный вебинар для начинающих;</li><li>Разбор моделей сетей и частых проблем трансляции данных;</li><li>Прокачивает навыки выявления и устранения сбоев.</li></ul><p><b>3.</b> <a href="https://www.youtube.com/watch?v=L5gzmu1jccI">Сетевой инженер — ответы на ключевые вопросы</a> — <b>NetSkills. Видеоуроки. Cisco, zabbix, linux</b></p><p>Автор видео описывает реальный путь сетевого инженера — от первых шагов до перспектив роста. Разбирает, какие навыки и сертификаты реально ценят на рынке и где можно найти работу с достойной оплатой.</p><p><b>Главное о курсе:</b></p><ul><li>Профориентация через реальные примеры;</li><li>Раскрывает востребованные навыки и сертификаты;</li><li>Структура по таймкодам для быстрого поиска информации;</li><li>Делится практическими советами для старта в профессии.</li></ul><p><b>4. </b><a href="https://experts2.ru/cdNLzt?sub1=tproger-kf&amp;sub2=kursy-setevoy-injener&amp;sub4=netop">Сетевой инженер</a> —<b> ИНТУИТ</b></p><p>Спикер расскажет, как устроена сеть изнутри и как ею управлять. Объяснит принцип настройки протоколов и служб, контроля доступа к файлам и принтерам, восстановления данных. Самостоятельные задания позволят чувствовать себя уверенно в управлении реальной корпоративной сетью.</p><p><b>Главное о курсе:</b></p><ul><li>Лекции с наглядными скриншотами;</li><li>Разбор протоколов, файловых ресурсов и прав доступа;</li><li>Примеры на Windows 2000/2003;</li><li>Удаленный доступ и MMC.</li></ul><p><b>5. </b><a href="https://www.youtube.com/watch?v=OLFA0soYGhw&amp;list=PLtPJ9lKvJ4oiNMvYbOzCmWy6cRzYAh9B1">Введение в компьютерные сети</a> — <b>Andrey Sozykin</b></p><p>Видеотренинг знакомит с устройством инфраструктуры и протоколов так, чтобы можно было самостоятельно разбираться в статьях и книгах по теме. Лекции сочетаются с практикой: анализ трафика через Wireshark, тестирование соединений с помощью Postman и утилит командной строки.</p><p><b>Главное о курсе:</b></p><ul><li>Создан для начинающих;</li><li>Охватывает классификации, технологии и стандарты;</li><li>Объясняет модель OSI, стеки протоколов и уровни;</li><li>Полные расшифровки теоретических видео и практических занятий.</li></ul><p><b>6. </b><a href="https://www.youtube.com/watch?v=vkwIHpI_Cj8&amp;list=PLvGOckMhKg74qyj20HQDaQ0s_1mg_d3wm">Подборка интересных моментов из курса «Сетевой инженер»</a> — <b>Академия IT DMS</b></p><p>Комплекс видеоуроков погружает в работу с корпоративными сетями так, будто показывают закулисье инфраструктуры. Здесь разбирают реальные сценарии: от защиты сети и настройки VLAN до динамической маршрутизации.</p><p><b>Главное о курсе:</b></p><ul><li>Глубокий разбор реальных сетевых задач;</li><li>Полные уроки с наглядными схемами и кодами;</li><li>Объяснение протоколов и способов защиты;</li><li>Управление VLAN и сегментация.</li></ul><p><b>7.</b> <a href="https://www.youtube.com/watch?v=u7HzcyCb9qU&amp;list=PL4p9O5LPYFNvI9LqzS8QKgoeu98QOMTWu">Школа системного администратора</a> — <b>курсы-по-ит.рф</b></p><p>Интенсив открывает мир ИТ через короткие видеоролики, где теория переплетается с наглядными схемами и практическими примерами. Материал помогает увидеть, как техника оживает в руках администратора, и освоить базовые технологии без лишней воды.</p><p><b>Главное о курсе:</b></p><ul><li>Рассчитан на новичков без опыта;</li><li>Короткие уроки, наполненные конкретикой;</li><li>Плавный переход от основ к тонкостям настройки;</li><li>Разбор доменов в действии.</li></ul><p><b>8. </b><a href="https://experts2.ru/LhZmen?sub1=tproger-kf&amp;sub2=kursy-setevoy-injener&amp;sub4=netop">Основы сетевых технологий и криптографической защиты</a> — <b>Stepik</b></p><p>Тренинг раскрывает, как устроены сети и как защитить данные от разных угроз. Учащиеся осваивают адресацию, настройку локальной сети и методы кодирования информации, включая популярные криптосистемы.</p><p><b>Главное о курсе:</b></p><ul><li>Чистая теория, без тестов и практики;</li><li>Лаконичные объяснения, никаких сложных формулировок;</li><li>Основы криптографии, включая RSA и Эль-Гамаль;</li><li>Проверка идентификаторов и организация обмена данными.</li></ul><p><b>9. </b><a href="https://www.youtube.com/watch?v=h5RdfGpkM18&amp;list=PL4p9O5LPYFNvfIu64chkBfDZlmQmrgvJ0">Архитектура современных компьютерных сетей</a> — <b>курсы-по-ит.рф</b></p><p>В серии компактных видеоуроков сети раскрываются от самой математики и физики до современных стандартов. Каждое занятие показывает, как теория реализуется на практике, так что сложные темы становятся понятными без лишнего времени и усилий. Материал помогает упорядочить знания и взглянуть на технологии свежим взглядом.</p><p><b>Главное о курсе:</b></p><ul><li>Детальный разбор протоколов и моделей передачи данных;</li><li>Короткие уроки, которые реально осилить за раз;</li><li>Полезно как новичкам, так и тем, кто хочет актуализировать знания;</li><li>Современные стандарты и технологии поданы наглядно.</li></ul><p><b>10. </b><a href="https://experts2.ru/mwUcrT?sub1=tproger-kf&amp;sub2=kursy-setevoy-injener&amp;sub4=netop">Сетевые и распределенные системы: немного о сложном и важном </a>— <b>Stepik</b></p><p>Автор помогает понять, как компьютеры обмениваются данными и как работает сетевое и системное ПО. Студенты смогут моделировать сети, отслеживать передачу пакетов и использовать инструменты для анализа и визуализации.</p><p><b>Главное о курсе:</b></p><ul><li>Тесты помогают закреплять и проверять знания;</li><li>Прочная теоретическая база для дальнейшей работы;</li><li>Сбор и визуализация с помощью Prometheus и Grafana;</li><li>Применение языка Go и контейнеров Docker для распределенных систем.</li></ul><h2>Полезные ресурсы</h2><h2>Книги</h2><ul><li><a href="https://pyneng.readthedocs.io/ru/latest/">Python для сетевых инженеров</a> — Н. Самойленко. Объясняет основы Питона через практику с оборудованием, предлагая примеры на Cisco и задания для автоматизации реальных задач. Читатель получает понятные инструменты для написания скриптов, работы с файлами, регулярными выражениями, а также старт для самостоятельного углубления в Python.</li><li><a href="https://www.piter.com/collection/programmirovanie/product/kompyuternye-seti-printsipy-tehnologii-protokoly-uchebnik-dlya-vuzov-5-e-izd">Компьютерные сети. Принципы, технологии, протоколы: Учебник для вузов</a> — Олифер В.Г., Олифер Н.А. Издание отражает современные достижения технологий: от терабитных скоростей и гибких оптических сетей до виртуализации функций и облачных сервисов. Оно помогает понять устройство локальных и глобальных экосистем, особенности их управления и актуальные вопросы безопасности.</li></ul><h2>Образовательные проекты и статьи</h2><ul><li><a href="https://otus.ru/nest/netengine-art/">Материалы по сетям</a> — блог OTUS. Школа собрала подборку статей от практикующих специалистов, которая будет полезна и новичкам, и действующим инженерам. Тексты открыты для изучения в удобном темпе, без ограничений по доступу.</li><li><a href="https://university.tssolution.ru/">Единый учебный портал</a> — TS Solution. Платформа предлагает видеокурсы и методические материалы по ИТ и ИБ, включая бесплатные уроки для практикующих инженеров. На портале можно изучить рекомендованный план образования, получить теорию и пройти специализированные бесплатные интенсивы.</li><li><a href="https://linkmeup.ru/sdsm/">Статьи про сети для самых маленьких</a> — блог linkmeup. Площадка представляет сборник статей о интернет-технологиях, от базовых понятий до продвинутых тем. Материалы написаны простым языком, с реальными примерами, что облегчает понимание и практическое применение знаний.</li></ul><h2>Вопрос — ответ</h2><h3>Кто такой сетевой инженер и чем он занимается?</h3><p>Если говорить просто, сетевой инженер — это человек, который строит и поддерживает компьютерные сети, чтобы все запускалось без сбоев. Он может работать как с маленькими офисными экосистемами, так и с огромными корпоративными инфраструктурами, где соединены сотни офисов и дата-центров.</p><p>Его главная цель — сделать так, чтобы устройства обменивались информацией быстро и безопасно. Для этого он настраивает маршрутизаторы, прокси, коммутаторы и разные системы контроля трафика и безопасности. Кроме того, такой специалист постоянно следит за нагрузкой, выявляет узкие места и устраняет тормоза, которые мешают работе пользователей или сервисов.</p><p>Он участвует в выборе оборудования и технологий, чтобы сеть оставалась надежной и могла расти вместе с компанией. И еще одна важная часть работы — продумывать резервные схемы и план восстановления на случай сбоев, чтобы система не «падала» и данные оставались целыми.</p><h3>Чем сетевой инженер отличается от системного администратора?</h3><p>Сисадмин следит за тем, чтобы компьютеры, серверы и программы работали без сбоев. Он устанавливает нужное ПО, настраивает учетные записи и почту, а еще проверяет стабильность всех систем. Если что-то идет не так, приходится быстро находить решение и устранять проблему.</p><p>Инженер занимается связью между устройствами и сетями. Он следит, чтобы соединение не «падало», данные оставались защищенными, а каналы связи работали стабильно. По сути, если с системой что-то не так, именно он берется за решение.</p><p>Иногда их обязанности пересекаются. Сисадмин может настраивать офисное оборудование, а инженер подключать серверные VLAN или настраивать фаерволы. В целом же администратор больше работает с серверами и софтом, а инженер — с сетью и ее безопасностью.</p><h3>Какие навыки нужны сетевому инженеру?</h3><p>Сначала имеет смысл разобраться с основами: TCP/IP, DHCP, DNS. Практика с реальным оборудованием пригодится, ведь часто приходится настраивать маршрутизаторы, точки подключения и коммутаторы. Полезно вникнуть в азы интернет-безопасности: как быстро ограничить доступ, подготовить фаервол или VPN, обезопасить информацию.</p><p>Важно мгновенно замечать неполадки и исправлять их с помощью специальных инструментов. Ошибки гораздо проще находить, когда ведешь схемы и карты подключения. Еще удобно использовать симуляторы и эмуляторы сетевого оборудования — можно пробовать разные настройки и проверять идеи, не тревожа настоящую инфраструктуру.</p><h3>Какие технологии и протоколы изучать в первую очередь?</h3><p>Первыми лучше освоить базу — IP‑адресацию и маршрутизацию. Сначала IPv4, потом IPv6, понять, как маршрутизаторы формируют маршруты. Хорошо сразу познакомиться с VLAN, чтобы разделять сеть, VPN — чтобы соединять офисы безопасно, и SNMP для мониторинга оборудования.</p><p>Не лишним будет разобраться с Wi‑Fi: как настроить покрытие, учесть безопасность. И базовые вещи по защите информации тоже нужны — доступ к сетям, шифрование, обнаружение подозрительной активности, резервные копии. Эти знания реально помогают дальше разбираться в сложных сетевых задачах и не теряться, когда начинаешь работать с инфраструктурой на практике.</p><h3>Какие сертификаты востребованы в этой области?</h3><p>Сертификаты реально помогают выделиться и показать, что человек умеет работать с сетями на практике. Особо выделяются Cisco CCNA и CCNP — они покрывают все, от базовой маршрутизации до настройки безопасности. Если работаете с Juniper, JNCIA будет большим плюсом, а CompTIA Network+ помогает держать общий уровень знаний.</p><p>Для карьерного роста наличие сертификатов заметно ускоряет процесс: чаще допускают к более сложным проектам и повышают. Иногда работодатели даже предпочитают, когда у сотрудника несколько разных сертификатов — это говорит, что он знаком с разными технологиями и оборудованием.</p><h3>Можно ли стать сетевым инженером без технического образования?</h3><p>Если хочется работать с IT и сетями, сначала придется разобраться, как устроены компьютеры, сети и серверы. Без практики особо ничего не закрепится — пробуйте на оборудовании или хотя бы в симуляторах.</p><p>Часто в эту сферу приходят из администрирования, техподдержки или тестирования железа. Самообразование реально работает: курсы, книги, лабораторные задания, реальные проекты — все идет в копилку опыта. Портфолио проектов зачастую ценят больше, чем диплом, если опыта достаточно.</p><h3>Сколько времени занимает подготовка к профессии?</h3><p>Если заниматься регулярно, базовые навыки реально освоить за полгода–год — пробовать технологии, настраивать оборудование, решать задачи на практике. Но чтобы спокойно работать с реальными сетями, опыта нужно гораздо больше, годы, и придется подтягивать смежные темы. Настоящее понимание маршрутизации, протоколов, безопасности и облачных решений приходит постепенно. Даже профессионалы постоянно учатся, осваивая новые инструменты по мере их появления.</p><h3>Насколько востребованы сетевые инженеры?</h3><p>Спрос на таких специалистов реально высокий. Везде, где есть IT‑инфраструктура — от ЦОДов до крупных корпораций и телекомов — нужны люди, которые умеют держать сеть в устойчивом состоянии. С облачными сервисами, виртуализацией и постоянными угрозами безопасности без таких сотрудников бизнес просто бы не справлялся. Хорошо прокачанные профи могут спокойно работать удаленно для компаний по всему миру, а в городах с развитой IT-сферой всегда есть интересные проекты.</p><h3>Какие перспективы карьерного роста у сетевого инженера?</h3><p>Сетевой инженер может идти разными путями. Кто-то сосредотачивается на проектировании сложных инфраструктур, кто-то работает с защитой данных. Есть направление DevNet, где сети автоматизируются и программируются. Опытные специалисты часто переходят к управлению IT-инфраструктурой и ведут команду.</p><p>Карьерный рост зависит от того, как навыки используются на практике и какие технологии освоены. Практика и сертификаты открывают доступ к крупным проектам и руководящим позициям.</p><h3>Какие смежные области полезно изучать?</h3><p>Если работать с сетями всерьез, то без базовых знаний в области безопасности никуда. Плюс сейчас почти везде используется виртуализация и облака — AWS, Azure, Google Cloud, так что с ними тоже придется подружиться. Чтобы не тратить кучу времени на рутину, удобно автоматизировать задачи скриптами: Python или Ansible отлично подходят. Linux и работа в консоли — это вообще ежедневный инструмент, без него сложно администрировать сервера или сетевые устройства.</p><p>Стоит хотя бы в общих чертах разбираться в мониторинге, анализе трафика и резервировании данных. Эти вещи сильно влияют на стабильность системы и спасают в непредвиденных ситуациях. Чем больше такого опыта, тем шире круг задач, которые можно спокойно брать на себя.</p><p><b>Сетевой инженер</b> — это не просто работа с железом и настройками. Тут и инфраструктура, и безопасность, и куча мелких деталей, где без внимательности никуда. Вроде звучит сложно, но зато открывает дорогу в IT и дает навыки, которые реально ценятся.</p><p><b>Учиться можно онлайн: </b>сначала теория, а потом сразу практика. Где-то попробуете инструменты, где-то разберете задачу и поймете, что без ошибок не обойтись. Зато именно так все лучше усваивается. На что смотреть при выборе обучения? Ну, хотя бы на проекты, обратную связь экспертов и то, насколько материал свежий.</p><p><i>В подборке собраны разные варианты курсов сетевого инженера — с их помощью можно шаг за шагом войти в профессию. А если вы уже пробовали подобные тренинги, расскажите, как все прошло. Может, у вас есть свой проверенный курс?</i></p>]]></content:encoded>
    </item>
    <item>
      <title>Не только Speedtest: как измерять скорость интернета</title>
      <link>https://tproger.ru/articles/ne-tolko-speedtest--kak-izmeryat-skorost-interneta</link>
      <comments>https://tproger.ru/articles/ne-tolko-speedtest--kak-izmeryat-skorost-interneta?scrollTo=tproger-comments</comments>
      <dc:creator><![CDATA[Денис Кудерин]]></dc:creator>
      <guid isPermaLink="true">https://tproger.ru/articles/ne-tolko-speedtest--kak-izmeryat-skorost-interneta</guid>
      <description><![CDATA[<p>Обзор сервисов с актуальными ссылками: Линкметр (ГОСТ-точность), ПроСеть (официальный мобильный тест РКН), nPerf (стриминг 4К). Как выбрать инструмент под ваши задачи: игры, стримы, проф.аналитика. Все сервисы проверены на доступность в РФ в 2025.</p><p>— Читать дальше «<a rel="follow" href="https://tproger.ru/articles/ne-tolko-speedtest--kak-izmeryat-skorost-interneta">Не только Speedtest: как измерять скорость интернета</a>»</p>]]></description>
      <category><![CDATA[Интернет]]></category>
      <category><![CDATA[Сетевые протоколы]]></category>
      <category><![CDATA[Сервисы]]></category>
      <category><![CDATA[Статьи]]></category>
      <slash:comments>0</slash:comments>
      <pubDate>Sat, 09 Aug 2025 09:10:09 GMT</pubDate>
      <content:encoded><![CDATA[<p>Вы только что запустили важный стрим, а картинка рассыпалась на пиксели. Или в решающий момент онлайн-боя ваш герой застыл на месте. Знакомо? Такие ситуации чаще всего связаны с качеством интернет-соединения, которое можно и нужно измерять. Но в 2025 году привычный Speedtest исчез из российского цифрового ландшафта по решению Роскомнадзора в целях обеспечения безопасности.</p><p>Блокировка популярного «интернет-спидометра» оставила миллионы пользователей в растерянности. Как теперь проверить, действительно ли провайдер недодаёт обещанные 100 Мбит/с? Или выявить скрытые проблемы с пингом? К счастью, Speedtest — не единственный скоростемер интернета. Существуют проверенные альтернативы, которые работают в России прямо сейчас, дают точные данные и при этом не требуют ухищрений с обходом блокировок.</p><p>В этом материале — только реальные инструменты, протестированные нами в августе 2025 года. Разберём, как устроены замеры скорости и почему цифры в разных сервисах отличаются; что делать, если результаты тестов вызывают сомнения и как получить максимально точные результаты.</p><h2>Что такое скорость интернета и на что она влияет</h2><p>Скорость интернета — не абстракция, а набор конкретных метрик:</p><ul><li>Download (загрузка): сколько данных в секунду вы получаете — важно для стриминга, загрузки файлов.</li><li>Upload (отдача): скорость отправки данных — критична для видеозвонков или загрузки фото в облако.</li><li>Ping (задержка): время отклика сервера в миллисекундах — ниже 20 мс. Идеально для геймеров.</li><li>Jitter (джиттер): колебания пинга — если выше 30 мс, голос в Zoom начнёт «рваться».</li><li>Packet Loss (потери пакетов): даже 2% способны разрушить стабильность соединения.</li></ul><p>Как работают измерители? Сервисы отправляют тестовые пакеты данных на ближайший сервер и анализируют время передачи, объём успешно переданных данных и стабильность соединения.</p><h2>Альтернативы, которые работают в 2025 году</h2><p>Сегодня в Рунете доступны проверенные сервисы, прошедшие испытание временем и блокировками. Они сочетают точность замеров с прозрачностью методологии, а главное — работают без обхода блокировок. Мы отобрали семь ключевых платформ, охватывающих все сценарии: от быстрой проверки на смартфоне до глубокого анализа для инженеров.</p><h2>Яндекс.Интернетометр: минимум действий, максимум ясности</h2><p>Когда нужен мгновенный замер без настроек — это идеальный выбор. <a href="https://yandex.ru/internet">Сервис</a> запускается в два клика и за 15–20 секунд выдаёт ключевые показатели. Помимо скорости загрузки (Download) и отдачи (Upload), он показывает детали вашего подключения: точный IP-адрес, географический регион, разрешение экрана и даже версию браузера. Это удобно для быстрой диагностики: например, если сайт грузится медленно, сравните ваши данные с показателями на другом устройстве, подключенном к той же сети.</p><p>Главные преимущества:</p><ul><li>точность измерений;</li><li>автоматический выбор ближайшего сервера Яндекса (что снижает погрешность);</li><li>возможность поделиться скриншотом результата в один клик;</li><li>полное отсутствие рекламы и минимальная нагрузка на систему.</li></ul><p>Но есть и минусы. Сервис не измеряет критически важные для геймеров и VoIP-звонков метрики — ping (задержку) и jitter (джиттер — неравномерность задержек между пакетами данных, что влияет на качество связи). Нет и истории замеров: нельзя сравнить сегодняшнюю скорость с прошлогодней. Это плата за простоту.</p><figure><img src="https://media.tproger.ru/user-uploads/113565/2025-08-08/debd0534-32c1-4dc2-8c72-9a94f5c20051.png" alt="" /></figure><p>Для кого: идеален для рядовых юзеров сети, техподдержки и ситуаций, когда нужно за 30 секунд доказать: «Да, интернет сегодня действительно тормозит». Если же вам нужны технические детали — смотрите в сторону Линкметра или Cloudflare Speed Test.</p><h2>Линкметр: эталон для профессионалов</h2><p>Это не просто <a href="https://linkmeter.net/">сервис</a>, а метрологический инструмент, созданный на базе аппаратно-программного комплекса «Вектор-2019». Его ключевая особенность — внесение в госреестр средств измерений СИ РФ (ФГИС АРШИН №79185-20). Это означает юридическую силу результатов: показатели Линкметра принимают Роскомнадзор, суды и провайдеры при разрешении споров о качестве связи.</p><p>Что делает его незаменимым для специалистов:</p><ul><li>Тестирует не только скорость (Download/Upload), но и параметры, критичные для стабильности — потерю пакетов (Packet Loss), задержки (Ping, Jitter), временные отклонения вплоть до микросекунд.</li><li>Режим «Длительного мониторинга» (до 24 часов) выявляет периодические «проседания» скорости — например, когда интернет замедляется каждый вечер из-за перегруженности сети.</li><li>Экспорт в PDF/XLS с печатью штампов времени — готовый отчёт для аудита.</li></ul><p>Интерфейс — функциональный, но без излишеств. Графики в реальном времени показывают малейшие колебания. Серверы в России (Москва, Санкт-Петербург, Краснодар, Воронеж и т.д.) позволяют тестировать задержки внутри страны. Для новичков это может выглядеть сложным, но для сетевого инженера такой детализации не хватает в других сервисах.</p><figure><img src="https://media.tproger.ru/user-uploads/113565/2025-08-08/2dd6936b-e961-4804-a062-24bc429951bd.jpg" alt="" /></figure><p>Главные ограничения:</p><ul><li>нет мобильных приложений: только веб-версия;</li><li>минималистичный дизайн может отпугнуть неподготовленных пользователей.</li></ul><p>Когда он необходим:</p><ul><li>при проверке SLA-договора с провайдером;</li><li>для поиска скрытых проблем сети (например, периодических потерь пакетов);</li><li>если нужны юридически значимые доказательства некачественной связи.</li></ul><p>Профессиональный лайфхак: используйте Линкметр вместе с Wireshark (анализатором сетевого трафика) — это даст полную картину поведения сети.</p><h2>Cloudflare Speed Test: технически продвинутый</h2><p>Этот <a href="https://speed.cloudflare.com/">сервис</a> — не просто измеритель скорости, а диагностический инструмент для сетевых инженеров. Он анализирует три критичных параметра одновременно:</p><ul><li>пропускную способность (Download/Upload);</li><li>джиттер;</li><li>потери пакетов..</li></ul><p>Ключевое преимущество — интерактивные графики в реальном времени. Вы видите не просто цифры, а динамику соединения: как ведёт себя канал при пиковых нагрузках, есть ли микроразрывы, насколько стабильна линия. Это незаменимо для диагностики «плавающих» проблем, когда интернет работает с перебоями.</p><figure><img src="https://media.tproger.ru/user-uploads/113565/2025-08-08/6cfc304b-3635-4982-b9a1-36e70975d850.png" alt="" /></figure><p>Для профессионалов:</p><ul><li>ручной выбор сервера из 300+ точек Cloudflare — можно проверить связь с конкретным регионом (например, Франкфурт для AWS или Сингапур для азиатских сервисов);</li><li>подробная статистика — от времени загрузки DNS до уровня загруженности канала;</li><li>экспорт в JSON — данные готовы для анализа в Zabbix или Grafana.</li></ul><p>Недостаток периодические блокировки в РФ.</p><p>Практическое применение:</p><ol><li>Оптимизация VoIP — если jitter &gt; 30 мс, голос в Zoom будет прерываться.</li><li>Диагностика потерь пакетов — 2% уже влияют на возможность участвовать в игре.</li><li>Сравнение CDN — тест до разных серверов покажет, где маршрутизация эффективнее.</li></ol><p>Для кого: системные администраторы, DevOps-инженеры, геймеры на профессиональном уровне.</p><h2>nPerf: комплексный тест для стримеров, киноманов и не только</h2><p>Если вам нужен <a href="https://www.nperf.com/">инструмент</a>, который не просто измеряет скорость, но и предсказывает качество стриминга на RuTube или Twitch — nPerf станет идеальным способом проверки интернета.</p><p>Этот сервис, доступный в РФ в 2025 году, сочетает простоту запуска с глубиной анализа. Главное преимущество — симуляция реальных сценариев: вместо абстрактных цифр вы видите, как поведёт себя ваше соединение при просмотре 4K-видео или запуске прямой трансляции.</p><p>Почему стримеры выбирают nPerf? Автоматический тест стриминга — ключевая фишка. При запуске проверки nPerf эмулирует:</p><ul><li>загрузку видео с битрейтом до 50 Мбит/с;</li><li>параллельную работу мессенджеров (Zoom, WhatsApp);</li><li>фоновую передачу файлов через облачные хранилища.</li></ul><p>Результат — оценка качества связи по 100-балльной шкале. Например, 85+ баллов гарантируют плавный стрим без буферизации, а 60–70 предупредят о рисках при трансляции в Full HD.</p><p>Детализация без сложностей:</p><ul><li>графики в реальном времени показывают стабильность скорости;</li><li>ручной выбор сервера (включая российские локации Москвы и Санкт-Петербурга);</li><li>история тестов с сравнением результатов за неделю или месяц.</li></ul><p>Ограничения, которые стоит учесть</p><ul><li>Перегруженные серверы: бесплатные точки тестирования иногда не справляются с нагрузкой. Если скорость скачет — переключитесь на сервер в Финляндии или Германиию</li><li>Реклама в веб-версии: мобильное приложение (Android/iOS) чище, но требует установки.</li></ul><p>Профессиональный лайфхак: активируйте опцию «Режим инженера» в настройках.</p><p>Это покажет потерю пакетов (Packet Loss). колебания пинга (Jitter), загрузку процессора во время теста — полезно для диагностики «тормозов» на слабых устройствах.</p><figure><img src="https://media.tproger.ru/user-uploads/113565/2025-08-08/e4a94dfe-f18d-4e27-9925-42726d6b0ec9.png" alt="" /></figure><p>Когда nPerf незаменим:</p><ul><li>перед запуском стрима — если оценка выше 80 баллов, смело включайте трансляцию в 1080p;</li><li>при выборе провайдера — сравните результаты в разное время суток;</li><li>для диагностики Wi-Fi — запустите тест в разных комнатах. График стабильности выявит «мёртвые зоны».</li></ul><p>Важно: nPerf сохраняет данные на европейских серверах. Если нужен аналог с хранением в РФ — используйте другие площадки.</p><h2>SpeedOf.Me: браузерный тест с детализацией для аналитиков</h2><p>Этот <a href="https://speedof.me/">сервис</a> — идеальный компромисс между простотой браузерного теста и глубиной профессионального инструмента. Работая на чистом HTML5 без Flash или Java, он запустится даже на старом ноутбуке с Windows XP или бюджетном Chromebook.</p><p>Главная фишка — динамические графики в реальном времени: во время замера вы видите, как ведёт себя ваше соединение. Резкий скачок вверх? Плавное снижение? Или «пила» из-за помех? Это сразу видно на диаграмме.</p><p>Ключевые преимущества для повседневного использования:</p><ul><li>не требует установки плагинов — всё работает прямо в браузере за три клика;</li><li>адаптивный дизайн корректно отображается на любом смартфоне — от iPhone SE до Samsung Galaxy Fold;</li><li>автоматическое сохранение истории тестов — сравните сегодняшние показатели с результатами недельной давности одним нажатием;</li><li>выявляет кратковременные «просадки» скорости — например, если Wi-Fi роутер перегревается или сосед включает микроволновку.</li></ul><figure><img src="https://media.tproger.ru/user-uploads/113565/2025-08-08/c64c3c07-3abd-4816-a788-1d87f564d4ee.png" alt="" /></figure><p>Как это помогает профессионалам:</p><ul><li>Веб-разработчикам — проверяют, как их сайт будет грузиться на медленных каналах.</li><li>Аналитикам трафика — сопоставляют скорость с пиковыми нагрузками на сервер.</li></ul><p>Единственный существенный недостаток: система сама выбирает оптимальный сервер. Вы не можете принудительно указать Москву для проверки локального CDN или Лондон для теста международного канала. Это ограничивает использование для географического анализа.</p><p>Практический совет: запускайте тест одновременно на ноутбуке (по Wi-Fi) и смартфоне (через 4G). Сравнение графиков покажет, где узкое место — в домашней сети или на мобильном операторе.</p><p>Для кого: идеален для фрилансеров, создающих сайты; маркетологов, анализирующих поведение пользователей; ИТ-специалистов, которые хотят быстро проверить канал без сложных инструментов.</p><h2>Orb: ваш персональный инженер по качеству связи</h2><p>Этот <a href="https://orb.net/get-orb/windows">инструмент</a> — наследник DNA Speedtest от команды разработчиков оригинального Ookla. Он создан для тех, кому недостаточно разовых замеров. Orb превращает ваш ПК (Windows, macOS, Linux) или сервер (Docker) в стационарный измерительный пункт, отслеживающий качество связи 24/7.</p><p>В отличие от браузерных сервисов, он оценивает сеть по пяти параметрам: пропускная способность, задержки, джиттер, потери пакетов, стабильность — и выводит единый балл от 0 до 100.</p><p>Как это помогает на практике:</p><ul><li>кроссплатформенность — идентичные тесты на ноутбуке, домашнем ПК и сервере в дата-центре;</li><li>привязка к реальным приложениям — Orb симулирует нагрузку Zoom (VoIP), YouTube (видео), Dropbox (файлы) и показывает, как ваша сеть поведёт себя в рабочих сценариях;</li><li>локальный контроль — можно развернуть тестовый сервер в офисе или облаке (AWS/Azure), чтобы проверять каналы без выхода в интернет.</li></ul><p>Для глубокой аналитики:</p><ul><li>графики за час/день/неделю — видите, что скорость падает каждый день в 18:00 из-за нагрузки на сеть провайдера;</li><li>уведомления в Telegram — если балл качества падает ниже 80, вы узнаете об этом первым;</li><li>отчёты в PDF с метками времени — доказательная база для провайдера.</li></ul><figure><img src="https://media.tproger.ru/user-uploads/113565/2025-08-08/6b8e08f1-9007-468d-9141-26d643d4b794.png" alt="" /></figure><p>Что может отпугнуть новичков:</p><ul><li>требует установки ПО — нет веб-версии для быстрой проверки;</li><li>интерфейс исключительно на английском — базовые термины вроде «jitter» (неравномерность задержек) или «packet loss» (потеря пакетов) нужно знать;</li><li>настройка приватного сервера потребует навыков работы с Docker или Linux.</li></ul><p>Идеальные сценарии использования:</p><ol><li>удалённая работа — если вы подключаетесь к корпоративной сети из дома, Orb выявит проблемы до того, как начнёт «лагать» RDP;</li><li>DevOps-мониторинг — интеграция с Zabbix/Grafana для сбора метрик сети между серверами;</li><li>тестирование Wi-Fi-сетей — сравнение качества связи в разных точках офиса.</li></ol><p>Профессиональный совет: Запустите Orb на Raspberry Pi (маломощном и дешёвом устройстве) в режиме 24/7 — это даст полную картину стабильности вашего канала. Непрерывный мониторинг выявляет скрытые проблемы, которые разовые тесты не фиксируют.</p><p>Запуск Orb на Raspberry Pi позволяет:</p><ul><li>обнаружить периодические сбои — например, падение скорости каждый вечер при нагрузке на сеть провайдера или кратковременные обрывы из-за перегрева роутера;</li><li>собрать юридически значимые доказательства для провайдера — например, если 30% времени скорость ниже 50% от заявленной по договору.</li></ul><p>Для кого: IT-специалисты, работающие из дома; администраторы распределённых команд; инженеры, оптимизирующие гибридную инфраструктуру.</p><h2>ПроСеть: мобильный инспектор от РКН</h2><p><a href="https://www.rustore.ru/catalog/app/com.ether.etherapp">Приложение</a> разработано Центром мониторинга сетей связи при поддержке Минцифры. Это не просто измеритель, а диагностический комбайн: проверяет доступность сайтов Рунета, трассирует маршруты данных, анализирует Wi-Fi (сигнал, загруженность каналов). Удобен для жалоб провайдеру — результаты невозможно оспорить, так как серверы контролирует РКН.</p><p>Плюсы:</p><ul><li>интеграция с системой подачи жалоб в РКН;</li><li>показывает реальные проблемы: например, если видеохостинг тормозит из-за перегруженности канала;</li><li>нет рекламы, интерфейс на русском.</li></ul><p>Минусы:</p><ul><li>только Android (для iOS версии нет);</li><li>в тестах на устройствах с Wi-Fi 5 пинг иногда скачет до 100 мс — не подходит для киберспорта.</li></ul><p>Для кого: обычные пользователи, которым нужно быстро доказать провайдеру, что «интернет плохой».</p><figure><img src="https://media.tproger.ru/user-uploads/113565/2025-08-08/acde929e-7fa4-4a01-bb2a-b5468296cbf8.png" alt="" /></figure><h2>Как получить точные результаты: преодолеваем помехи</h2><p>Почему 90% пользователей видят заниженные цифры? Неправильная подготовка искажает данные сильнее, чем реальные проблемы провайдера. Фоновые процессы, Wi-Fi-помехи или перегруженный сервер — всё это создаёт «шум». Чтобы измерения отражали истинные возможности канала, нужен системный подход.</p><p>Пять фундаментальных правил, проверенных на практике:</p><ul><li>закройте фоновые приложения — особенно торренты, облачные хранилища (Dropbox, Яндекс.Диск) и стриминговые сервисы (Twitch, YouTube);</li><li>используйте проводное подключение — Ethernet-кабель CAT 5e/6 устраняет погрешность Wi-Fi, достигающую 30% из-за стен и помех;</li><li>выберите географически близкий сервер — если сервис позволяет ручной выбор (как в Линкметре или Cloudflare);</li><li>проведите серию замеров — 3-5 тестов в разное время суток (утро/вечер/ночь) с интервалом в два часа;</li><li>отключите прокси — шифрование снижает скорость на 10-40%, а маршрутизация через сторонние серверы искажает ping.</li></ul><p>Как это работает? Представьте: вы проверяете скорость Wi-Fi с открытым uTorrent. Показатель Download — 35 Мбит/с. После кабельного подключения и закрытия торрента тот же сервис показывает 95 Мбит/с. Разница в 171% — это не волшебство, а устранение помех. Для профессиональных задач (SLA-тесты, жалобы провайдеру) используйте Линкметр: его эталонные алгоритмы компенсируют даже кратковременные помехи.</p><p>Важно: ни один сервис не даст точных данных при перегруженной сети. Если сосед качает 4К-фильмы, а вы играете в Counter-Strike — результаты будут некорректны в любой системе.</p><h2>Что выбрать? Краткий гид</h2><figure><img src="https://media.tproger.ru/user-uploads/113565/2025-08-09/636cb146-abca-4f63-b069-228b1f074484.png" alt="" /></figure><h2>Почему цифры на разных сервисах отличаются?</h2><p>Разброс показателей на разных площадках действительно имеет место. Например, при одновременном тесте download (загрузка): от 89 до 332 Мбит/с;, а ping (задержка): от 0 до 241 мс.</p><p>Причины:</p><ul><li>расположение сервера — тест для Москвы покажет одну скорость, для Нью-Йорка — другую;</li><li>методология замера — одни сервисы используют многопоточные подключения (для выполнения параллельных процессов), другие — нет;</li><li>нагрузка на сервер — публичные сервисы в час пик тормозят.</li></ul><p>Совет: для объективной картины выбирайте сервер вашего провайдера. Например, у «Ростелекома» есть QMS (qms.rt.ru), но он иногда занижает показатели на 10-20%.</p><h2>Итоги</h2><p>Запрет Speedtest — не катастрофа. Для большинства подойдут Яндекс.Интернетометр (простота) или Линкметр (точность). Мобильным пользователям — ПроСеть. Главное — понимать, какие метрики вам нужны, и как их интерпретировать.</p><p>Проверьте сами: все сервисы из статьи доступны в РФ на август 2025. Если заметили блокировку — пишите в комментарии, обновим список!</p><p>P.S. Для самых требовательных: если нужно измерить скорость «как в реальной жизни», качайте торрент с тысячей сидов — это эталон, с которым не поспорит ни один сервис.</p>]]></content:encoded>
    </item>
    <item>
      <title>Почему технологии 80-х тормозят корпоративные коммуникации и что с этим делать</title>
      <link>https://tproger.ru/articles/pochemu-tehnologii-80-h-tormozyat-korporativnye-kommunikacii-i-chto-s-etim-delat</link>
      <comments>https://tproger.ru/articles/pochemu-tehnologii-80-h-tormozyat-korporativnye-kommunikacii-i-chto-s-etim-delat?scrollTo=tproger-comments</comments>
      <dc:creator><![CDATA[Игорь Кальметов]]></dc:creator>
      <guid isPermaLink="true">https://tproger.ru/articles/pochemu-tehnologii-80-h-tormozyat-korporativnye-kommunikacii-i-chto-s-etim-delat</guid>
      <description><![CDATA[<p>Почему корпоративная почта до сих пор работает на стандартах прошлого века? И можно ли это изменить без отказа от привычного формата? Разбираемся на примере стандартных протоколов и рассказываем, как мы в «МБК Лаб» подошли к решению этой проблемы.</p><p>— Читать дальше «<a rel="follow" href="https://tproger.ru/articles/pochemu-tehnologii-80-h-tormozyat-korporativnye-kommunikacii-i-chto-s-etim-delat">Почему технологии 80-х тормозят корпоративные коммуникации и что с этим делать</a>»</p>]]></description>
      <category><![CDATA[Интернет]]></category>
      <category><![CDATA[Красивый хак]]></category>
      <category><![CDATA[Open Source]]></category>
      <category><![CDATA[Инструменты]]></category>
      <category><![CDATA[Сетевые протоколы]]></category>
      <category><![CDATA[Работа]]></category>
      <category><![CDATA[Статьи]]></category>
      <slash:comments>0</slash:comments>
      <pubDate>Sat, 26 Jul 2025 10:00:03 GMT</pubDate>
      <content:encoded><![CDATA[<p>Электронная почта остаётся одновременно незаменимым и устаревшим способом коммуникации. Это всё ещё основной путь для официальной деловой переписки, без которого не обходится ни одна крупная организация. Но в то же время — это технология, архитектура которой практически не изменилась с 1980-х годов.</p><h2>Что такое почтовые протоколы и почему они определяют всё</h2><p>Почтовый протокол — это набор правил, по которым устройства и программы обмениваются email-сообщениями. Он определяет, как письмо отправляется, передается, хранится и извлекается. Именно эти протоколы лежат в основе любой почтовой инфраструктуры — от личных ящиков до корпоративных систем.</p><p>Существуют как открытые, так и закрытые (проприетарные) протоколы. Открытые стандарты доступны всему рынку, закрытые принадлежат отдельным компаниям (например, Microsoft). Большинство современных почтовых систем до сих пор работает на открытых протоколах, разработанных в XX веке:</p><ul><li>SMTP (1982 год, RFC 821) — используется для отправки писем с почтового клиента на сервер и между серверами, но не предназначен для получения писем пользователем.</li><li>IMAP (первая версия — 1986 год, RFC 1064; текущая версия IMAP4 — RFC 3501, 2003) — используется для доступа к письмам на сервере без их загрузки, с возможностью синхронизации между устройствами. Например, что прочитано на одном устройстве, будет отмечено прочитанным и на другом.</li><li>WebDAV / CalDAV / CardDAV (с конца 1990-х) — для управления файлами на сервере, работы с календарями, адресными книгами и контактами.</li></ul><p>Из проприетарных — MAPI от Microsoft (в начале 1990-х годов) обеспечивает тесную интеграцию почты, календарей, контактов и задач между клиентом (Outlook) и сервером (Microsoft Exchange).</p><p>Эти протоколы универсальны и поддерживаются большинством почтовых клиентов. Но их возраст — главная проблема.</p><h2>Технологии 80-х против задач 2020-х</h2><p>Стандартные почтовые протоколы создавались в эпоху, когда интернет был медленным, письма — короткими, а безопасность и мобильность не были приоритетами. С тех пор многое изменилось, а они — почти нет. Это делает инфраструктуру электронной почты неготовой к требованиям современного бизнеса. Вот с чем сегодня сталкиваются ИТ-отделы и пользователи:</p><ul><li>Ограничения на размер сообщений. SMTP технически не предназначен для передачи больших файлов: вложения кодируются и увеличиваются в объёме, а большинство серверов ограничивают размер письма 25 МБ. Видео, презентации и таблицы нередко «не проходят».</li><li>Медленная доставка. В классических протоколах нет push-механизма — клиенты запрашивают почту вручную или по таймеру. На мобильных устройствах это особенно заметно — письма приходят с задержкой.</li><li>Нет встроенного шифрования. SMTP и IMAP изначально не защищены. Шифрование реализуется через внешние надстройки (например, STARTTLS), и далеко не все системы его поддерживают по умолчанию.</li><li>Разрозненность функций. Почта, календарь и контакты работают по разным протоколам: SMTP, IMAP, CalDAV, CardDAV. Это требует сложной настройки и дает нестабильный результат — особенно в гибридных или распределенных средах.</li><li>Нет централизованного управления. В открытых протоколах нельзя массово настраивать клиентские приложения, удалять учетные записи с устройств или управлять профилями пользователей. Это затрудняет администрирование и снижает безопасность.</li><li>Уязвимость к атакам. IMAP и SMTP в открытых конфигурациях — популярная мишень. Почта давно стала основным каналом проникновения. По данным BI.ZONE CESP, в 2024 году число вредоносных вложений в корпоративной почте выросло на 250%, а фишинговых ссылок — на 25%.</li></ul><p>Такие изъяны особенно критичны для корпоративных почтовых систем, где требуется высокая функциональность, масштабируемость, надёжность и защита данных.</p><h2>Открытый протокол 2TMTP</h2><p>Чтобы почта соответствовала современным требованиям, нужен принципиально новый протокол — не «костыль» над старым, а полноценная замена. Мы в «МБК Лаб» разрабатываем такой стандарт — 2TMTP.</p><p>Это открытый протокол, который можно свободно использовать и встраивать — и на стороне сервера, и на стороне клиента. Его архитектура построена с нуля, с учетом того, как работают современные компании, в том числе — крупные и распределенные.</p><p><b>Что умеет 2TMTP:</b></p><ul><li>Передача любых типов данных без ограничений по объему: письма, файлы, календари, задачи, контакты.</li><li>Встроенное сквозное шифрование — по умолчанию, без внешних решений.</li><li>Push-доставка и подтверждение прочтения — как в мессенджерах.</li><li>Автонастройка клиента и автоудаление профиля — удобно для MDM и гостевого доступа.</li><li>Централизованное управление профилями: настройка прав, политик, внешнего вида клиента с серверной стороны.</li><li>Работа между серверами — не только клиент-сервер, как у SMTP, но и сервер-сервер с полной синхронизацией.</li><li>Поддержка fallback-режимов. Если одно из устройств не поддерживает 2TMTP, можно откатиться на SMTP или IMAP. Протокол встроен в стандарт ESMTP CAPABILITY и активируется при обоюдной поддержке.</li></ul><h2>Чем 2TMTP отличается от MAPI</h2><p>MAPI — это ближайший аналог 2TMTP по функциональности, но он полностью закрыт. Протокол используется только в экосистеме Microsoft (Outlook + Exchange), и сторонние разработчики не могут интегрировать его в свои решения. Кроме того, в отличие от MAPI, который ограничен клиент-серверным взаимодействием, 2TMTP также поддерживает полноценное межсерверное общение. В результате 2TMTP не имеет лимита на размер передаваемого сообщения, в то время как почта Microsoft ограничена 25 МБ, поскольку для передачи данных между серверами переходит на стандартный SMTP.</p><p>2TMTP — открытый. Любая российская или зарубежная компания сможет встроить его в свою почтовую систему или клиент и получить техническую поддержку. Это делает его универсальной платформой для почтовой инфраструктуры в России, странах ЕАЭС, БРИКС.</p><h3>Когда будет доступен новый протокол</h3><p>На данный момент разработка стандарта 2TMTP полностью завершена. Тем не менее, для его официального внедрения потребуется время на юридические процедуры и регистрацию. Мы ожидаем завершить эти этапы до конца 2025 года — в начале 2026 года протокол станет доступен для широкого использования.</p><p>Каждый разработчик почтового сервиса сможет интегрировать 2TMTP и получить техническую поддержку от нашей команды.</p><h3>А что со старым добрым SMTP</h3><p>SMTP работает на миллиардах устройств в мире. Совершенно очевидно, что ещё много десятков лет, он сохранит свою работоспособность. Естественно, расширяя функциональность, мы обязаны предусмотреть совместимость. Поэтому 2TMTP распространяется в двух форматах:</p><ol><li>Самостоятельный протокол;</li><li>Расширения протокола SMTP. Дело в том, что в начале сессии eSMTP оба хоста «знакомятся», обмениваясь методами, которые могут применить на одной и другой стороне. Если найдено пересечение, то можно продолжить взаимный диалог. Если оба хоста заявили о поддержке 2TMTP, то оба переходят на взаимодействие по предложенному протоколу.</li></ol><p>Таким образом достигается расширенная функциональность. Тем же, кто этого не умеет, придётся довольствоваться архаичными свойствами.</p>]]></content:encoded>
    </item>
    <item>
      <title>Как платформа SD-WAN Reasonance от Manticore помогла сети из 400 ресторанов быстрого питания</title>
      <link>https://tproger.ru/articles/kak-platforma-sd-wan-reasonance-ot-manticore-pomogla-seti-iz-400-restoranov-bystrogo-pitaniya-erid-2w5zfhd5zal</link>
      <comments>https://tproger.ru/articles/kak-platforma-sd-wan-reasonance-ot-manticore-pomogla-seti-iz-400-restoranov-bystrogo-pitaniya-erid-2w5zfhd5zal?scrollTo=tproger-comments</comments>
      <dc:creator><![CDATA[Анна Ельцова]]></dc:creator>
      <guid isPermaLink="true">https://tproger.ru/articles/kak-platforma-sd-wan-reasonance-ot-manticore-pomogla-seti-iz-400-restoranov-bystrogo-pitaniya-erid-2w5zfhd5zal</guid>
      <description><![CDATA[<p>Рассказываем об успешном кейсе внедрения программно-управляемых сетей в федеральную сеть ресторанов быстрого питания.</p><p>— Читать дальше «<a rel="follow" href="https://tproger.ru/articles/kak-platforma-sd-wan-reasonance-ot-manticore-pomogla-seti-iz-400-restoranov-bystrogo-pitaniya-erid-2w5zfhd5zal">Как платформа SD-WAN Reasonance от Manticore помогла сети из 400 ресторанов быстрого питания</a>»</p>]]></description>
      <category><![CDATA[Инструменты]]></category>
      <category><![CDATA[Сетевые протоколы]]></category>
      <category><![CDATA[Безопасность]]></category>
      <category><![CDATA[Сервисы]]></category>
      <category><![CDATA[Linux]]></category>
      <category><![CDATA[DevOps]]></category>
      <category><![CDATA[Статьи]]></category>
      <slash:comments>0</slash:comments>
      <pubDate>Thu, 27 Feb 2025 14:00:03 GMT</pubDate>
      <content:encoded><![CDATA[<p>Современным компаниям, чтобы оставаться конкурентоспособными, нужно выстраивать надежные IT-процессы с минимальными издержками — это определяет их главный тренд развития. Единая сеть информационных систем и инструментов автоматизации производства дает компаниям скорость, управляемость и предсказуемость таких процессов. Отечественные разработки в этой области продолжают развиваться, и все больше бизнесов внедряют их в свои системы.</p><p>В сети ресторанов быстрого питания тысячи касс, киосков и систем учёта. Если сеть «падает» — заказы не принимаются, клиенты уходят, а бизнес теряет деньги. Раньше в сети быстрого питания сбои устраняли вручную, а ИТ-окружение работы нового объекта предприятия инсталлировалось и настраивалось неделями. Это и неудивительно, поскольку каждый объект был особенной «снежинкой» со своими нюансами в настройках. В декабре 2024 года компания внедрила SD-WAN Reasonance от бренда <a href="https://manticore.ru/reasonance.html#video">Manticore</a> — это не только сократило время установки и простои сети, но и снизило расходы на IT-инфраструктуру на 20%.</p><h2>Какие стояли задачи</h2><p>В холдинге — главном франчайзи KFC/Rostic’s — 600 ресторанов, и у каждого объекта свое сетевое оборудование, провайдеры и настройки для касс, ПК, менеджеров и IoT-устройств. Инженеры тратили часы на поиски источников сбоев, обновление систем и настройку безопасности. Каждое развертывание требовало ручной работы, занимало недели и увеличивало издержки. Администрирование происходило на уровне отдельных устройств, поэтому проводить диагностику и устранять неполадки было сложнее. Компании нужен был инструмент, который позволил бы:</p><ul><li>Быстро развертывать новые сервисы, например, развернуть в бизнес-подразделении сервис диджитал-киоска за два дня</li><li>Обеспечить предсказуемость и надежности сети</li><li>Автоматизировать управление сетевым оборудованием</li><li>Сократить затраты на телеком и IT-услуги</li></ul><p>Технология SD-WAN позволяет централизованно управлять сетями и сетевыми политиками в филиалах, а также облачными сервисами и ЦОДами. От традиционных MPLS-сетей и VPN она отличаются гибкостью в выборе каналов (MPLS, широкополосный доступ, LTE, 5G), оптимизацией трафика и автоматическим распределением нагрузки на сети, низкими затратами, повышенной безопасностью благодаря встроенным механизмами шифрования и быстрым развертыванием.</p><h2>Внедрение и результаты</h2><p>В декабре 2024 года <a href="https://manticore.ru/reasonance.html#video">Manticore</a> завершила развертывание своей системы в сети ресторанов быстрого питания. Во время внедрения бизнес-процессы продолжали работать, а управляемость сети повысилась, поскольку теперь появилась возможность управлять не отдельными устройствами и каналами, а сервисами и локациями через единый интерфейс. Теперь сетевая инфраструктура нового ресторана подключается за 10 минут вместо нескольких дней, поэтому инженерам не нужно постоянно выезжать на место. За это отвечает Zero Touch Provisioning (ZTP), которая исключает ручную настройку.</p><p>Всего проект охватил 600 филиалов — 400 действующих и 200 новых. Reasonance помогла автоматизировать управление IT-инфраструктурой и стандартизировать настройки оборудования без потери качества обслуживания. Плюс повысилась безопасность всех систем при аутентификации на оборудовании, поскольку у сотрудников появился единый контроль доступа.</p><blockquote>Reasonance отличается от зарубежных аналогов тем, что продукт развивался нашими инженерами и разработчиками, которые сами прошли путь эксплуатации сетевого оборудования, и остро понимают, какие инструменты и функции действительно важны в ежедневной работе. И речь не только об администрировании и выстраивании архитектуры, но и об аварийно-восстановительной работе на всех трех уровнях поддержки.</blockquote><p>Как результат — компания сократила расходы на телеком и IT-услуги более чем на 20%, а время технического аудита — с 60 до 5 дней. Платформа поддерживает мультивендорность и интегрируется с оборудованием Cisco, Fortinet, Mikrotik, Qtech без замены железа. Это позволило внедрить SD-WAN без дополнительных затрат на обновление инфраструктуры.</p><p>Более того, сеть ресторанов смогла ускорить процесс диагностики и восстановления критичных приложений — теперь системы в реальном времени отслеживают работу сети и мгновенно реагируют на неполадки, переключая трафик на резервные каналы, а также динамически распределяют нагрузку сети. Снизилась и нагрузка на IT-отдел на 50%, поскольку специалистам не нужно вручную мониторить все системы и устранять баги.</p><p>Сейчас компания управляет более 2000 единицами сетевого оборудования с помощью единых стандартов, а распространение конфигураций на новые филиалы происходит автоматически. В планах сети — открыть еще 100 ресторанов в следующем году. Благодаря SD-WAN Reasonance развертывание новых точек займёт не недели, а дни.</p><p>Внедрять <a href="https://manticore.ru/reasonance.html#video">Reasonance</a> может средний и крупный бизнес практически во всех сферах — от розничной торговли и логистики до медицины и финтеха. В любом случае развертывание пройдет практически бесшовно, а эксперты компании будут оказывать всю необходимую техническую поддержку даже после продажи продукта.</p><p>Реклама. Рекламодатель: ООО «НПП Бизнес Связь Холдинг» ИНН 7703050752, erid: 2W5zFHd5zAL</p>]]></content:encoded>
    </item>
    <item>
      <title>Что такое API и как с ним работать?</title>
      <link>https://tproger.ru/articles/chto-takoe-api-i-kak-s-nim-rabotat-</link>
      <comments>https://tproger.ru/articles/chto-takoe-api-i-kak-s-nim-rabotat-?scrollTo=tproger-comments</comments>
      <dc:creator><![CDATA[Ксения Андреева]]></dc:creator>
      <guid isPermaLink="true">https://tproger.ru/articles/chto-takoe-api-i-kak-s-nim-rabotat-</guid>
      <description><![CDATA[<p>В этой статье разберёмся, что такое API и как он работает на практике, как запустить первые интеграции и как научиться разбираться в документации.</p><p>— Читать дальше «<a rel="follow" href="https://tproger.ru/articles/chto-takoe-api-i-kak-s-nim-rabotat-">Что такое API и как с ним работать?</a>»</p>]]></description>
      <category><![CDATA[API]]></category>
      <category><![CDATA[JavaScript]]></category>
      <category><![CDATA[Java]]></category>
      <category><![CDATA[Тестирование]]></category>
      <category><![CDATA[Сетевые протоколы]]></category>
      <category><![CDATA[Python]]></category>
      <category><![CDATA[JSON]]></category>
      <category><![CDATA[Советы]]></category>
      <category><![CDATA[Статьи]]></category>
      <slash:comments>0</slash:comments>
      <pubDate>Mon, 30 Dec 2024 09:00:03 GMT</pubDate>
      <content:encoded><![CDATA[<p>API (интерфейс прикладного программирования) — набор правил и механик, которые позволяют нескольким (и, самое главное, разным) приложениям взаимодействовать друг с другом. По сути API — это посредник, который позволяет одной программе «общаться» с другой, обмениваться нужной датой и отображать её для пользователей.</p><p>Самый простой пример: сайт использует API для получения данных о погоде из Яндекс.Погоды или другой сайт использует API для обработки платежей через онлайн-банкинг.</p><p>В этой статье разберёмся, что такое API и как он работает на практике, как запустить первые интеграции и научиться разбираться в документации.</p><h2>Основы работы с API</h2><p>Если объяснять простыми словами, то работа с API похожа на процесс заказа в ресторане: вы делаете заказ (<i>запрос</i>), а затем получаете ваш заказ от официанта (<i>ответ</i>). В контексте API заказ — это HTTP-запрос, который содержит свои инструкции и данные в нужном формате:</p><p><b>Основные HTTP-запросы:</b></p><ul><li><b>GET</b> для запроса данных;</li><li><b>POST</b> для отправки новых данных на сервер;</li><li><b>PUT</b> для обновления уже занесённых данных;</li><li><b>DELETE</b> для удаления данных.</li></ul><p><b>Форматы данных, используемые в API:</b></p><ul><li><b>JSON</b> — упрощённый и более компактный формат выдачи информации;</li><li><b>XML</b>  — более сложный формат по сравнению с JSON.</li></ul><p>После отправки запроса вы получите ответ в формате JSON или XML. Что хорошо: ответ API будет содержать не только запрашиваемые данные, но и информацию об ошибках в формировании запросов.</p><p>Кстати, есть ещё формат данных — YAML. Он более ёмкий по сравнению с JSON и уж тем более по сравнению с XML.</p><p><b>Пример кода в JSON:</b></p><p><b>XML:</b></p><p><b>и YAML:</b></p><h2>Основные виды API</h2><p>Первое, что важно знать: что такое архитектурный стиль в программировании. <b>Архитектурный стиль </b>— это список всех компонентов кода, типов соединений между всеми частями и условий их соединения. Иными словами, это информация о том, как использовать конкретный фрагмент кода.</p><h4>REST</h4><p><b></b>Архитектурный стиль, который использует обычные HTTP-методы для обмена данными. RESTful-сервисы много где используются в кодинге: всё просто, гибко и понятно. RESTful-сервисы хороши ещё и тем, что с помощью них можно работать и с JSON, и с XML. А это означает, что они особенно популярны у разработчиков.</p><h4>SOAP</h4><p><b></b>Протокол для обмена сообщениями между двумя сервисами. SOAP подчиняется строгим стандартам W3C и работает только с XML, а точнее с SOAP XML. Более надёжный и безопасный вид API, особенно для выполнении сложных программных транзакций, но требует больше времени и усилий за счёт того, что SOAP XML-ответы нужно правильно обрабатывать и анализировать.</p><h4>GraphQL</h4><p><b></b>Язык запросов от Нельзябука, альтернатива REST. GraphQL хорош тем, что он даёт возможность точечно запрашивать данные из API, увеличивает результативность запросов за счёт возможности извлечения только тех данных, которые действительно нужны. Плюс можно добавлять дополнительные поля в GraphQL без изменения серверной части.</p><h4>WebSocket</h4><p><b></b>Протокол бесперебойной отправки и получения сообщений между клиентом и сервером через одно соединение TCP. WebSocket можно пользоваться для работы чатов, игр и веб-сервисов, где важно отправлять сообщения и получать ответы в настоящем времени.</p><p>REST использует API для простых веб-приложений, SOAP — для сложных решений (особенно корпоративных), GraphQL хорош гибкостью получения данных, а WebSocket подойдёт для сервисов, где нужно в режиме реального времени обрабатывать запросы.</p><h2>Принципы работы API</h2><p>Как уже говорилось выше, API работает как посредник между сервисом и клиентом, позволяя им обмениваться необходимыми данными. API упрощает интеграцию сервисов и систем с помощью стандартизированного подхода к «общению» сервиса и клиента.</p><h2>Как устроен запрос и ответ</h2><p>Основные HTTP методы, которые используются для отправки запросов к API:</p><ul><li><b>GET</b> используется для получения информации из базы данных сервера. Для открытия страницы сайта в браузере нужно получить все данные сайта и преобразовать их в «готовый» вид — по такому же принципу работает GET.</li><li><b>POST</b> для отправки новых данных на сервер. Например, несколько новых пользователей зарегистрировалось на сайте — POST автоматически отправляет все данные о новом реге на сервер.</li><li><b>PUT </b>для обновления уже занесённых данных. Например, пользователь уже был зарегистрирован на сайте, но решил сменить ник и заодно обновить аватарку. С помощью PUT все данные отправляются на сервер.</li><li><b>DELETE</b> для удаления данных. Та же аналогия: пользователь удалил информацию из раздела «Любимые фильмы» — эти данные стираются и с сервера.</li></ul><h2>Форматы данных</h2><p>Форматов данных существует много. <b>Два самых популярных формата — это JSON и XML.</b></p><p><b>JSON</b> — более легковесный формат. Он проще для чтения и понимания человеком и понятнее для обработки машиной. Именно поэтому он и популярен.</p><p><b>XML</b> — более сложный формат с большим количеством тегов. Используется в «формализованных» системах, в том числе и в корпоративных.</p><h2>Как начать работать с API?</h2><p><b>Первый шаг — подключиться к платформе</b>, которая предоставляет API, <b>и получить API-ключ.</b> Этот ключ будет идентификатором вашей учетной записи и даст серверу доступ к запрашиваемой вами информации.</p><p>Например, при использовании API для отображения виджета/данных о погоде, вам нужно зарегистрироваться на сайте-провайдере. После регистрации вы получите доступ к личному кабинету, где и получите персональный ключ. Этот ключ нужно передавать с каждым запросом к API.</p><p>Для работы с API <b>можно использовать разные специализированные инструменты</b>, например, Postman и curl, которые автоматизируют процесс отправки запросов и получения ответов — при этом код писать не нужно.</p><p><b>Postman</b> — это программа для тестирования API. Postman поддерживает разные форматы данных и методы HTTP. С помощью Postman можно настраивать параметры аутентификации и просматривать все полученные ответы.</p><p><b>Как работать с Postman:</b></p><ul><li>Откройте приложение Postman;</li><li>Создайте новый запрос;</li><li>Введите URL-адрес API;</li><li>Укажите метод запроса;</li><li>Добавьте API-ключ в заголовке запроса;</li><li>Нажмите «Send» для отправки запроса.</li></ul><p>curl — это командная строка для передачи данных, которая использует различные сетевые протоколы и пользуются API. Curl особенно часто используют для автоматизации задач или при работе с Linux.</p><h2>Интеграция API в коде</h2><p>После того, как тестирование запросов прошло успешно, можно переходить к интеграции API. Вот два примера интеграции — для Python и JavaScript.</p><p><b>Python:</b></p><p><b>JavaScript:</b></p><p>Интеграция полученной даты в сам код помогает создавать более функциональные и интерактивные приложения без необходимости разрабатывать все функции вручную.</p><h2>Практическое использование API</h2><p>В этой части рассмотрим применение API на практике на примере запроса данных о погоде из публичного API и узнаем, как работать с токенами и авторизацией OAuth 2.0.</p><h2>Пример запроса данных из публичного API</h2><p>Возьмём пример запроса данных о погоде через OpenWeatherMap, сервис о погоде.</p><p><b>Шаги запроса:</b></p><ul><li>Регистрация на сайте OpenWeatherMap и получение API-ключа. Например, чтобы получить данные о текущей погоде в Москве, нужно составить запрос следующего вида: <a href="http://api.openweathermap.org/data/2.5/weather?q=Moscow&amp;appid=ВАШ_API_КЛЮЧ">http://api.openweathermap.org/data/2.5/weather?q=Moscow&amp;appid=ВАШ_API_КЛЮЧ</a></li></ul><ul><li>Используя Python и библиотеку requests, можно отправить запрос следующим образом:</li></ul><ul><li>Ответ от сервера приходит в формате JSON.</li></ul><p>Частичный пример ответа:</p><h2>Работа с токенами и OAuth 2.0</h2><p>OAuth 2.0 — протокол авторизации, который даёт сторонним приложениям ограниченный доступ к данным пользователя без передачи пароля.</p><p><b>Как работать с OAuth 2.0:</b></p><ul><li>Создайте учетную запись разработчика;</li><li>Зарегистрируйте ваше приложение на платформе, которая поддерживает OAuth 2.0;</li><li>Предоставьте доступ к вашему приложению;</li><li>После авторизации ваш сервер получает временный код, который затем обменивается на токен доступа:</li></ul><p>Используя полученный токен доступа, ваше приложение может делать запросы к защищённым ресурсам пользователя.</p><h2>Советы и лучшие практики</h2><h3>Чтение документации API</h3><p>Знакомство с документацией API — это первый шаг в работе с API. Документация содержит все важные сведения о ресурсах, запросах и параметрах.</p><p>Прежде чем уходить в детали, важно понять общие принципы работы конкретного выбранного API — какие ресурсы вообще есть, какая у них иерархия и какие методы используются для обмена сообщениями.</p><p>В правильно оформленной документации всегда можно найти примеры запросов и ответов. Так вы сможете лучше понять основы работы с API и на базе шаблонов разработать собственные решения.</p><p>A FAQ поможет быстро решить типичные «стартовые» проблемы.</p><h3>Обработка ошибок и исключений</h3><p>Ошибки — основа работы с любым приложением, база. Если правильно обрабатывать ошибки, то вы как разработчик сможете лучше понимать, что происходит и на каком этапе, по какой причине была допущена ошибка.</p><p>Несколько советов по обработке ошибок и исключений:</p><ul><li><b>Проверка кодов состояния HTTP.</b> Ошибка 200 или 404 — это и есть коды состояния HTTP. С помощью них можно быстрее понять, где именно затаилась проблема.</li><li><b>Try-catch блоки. </b>При работе с Python или JavaScript важно использовать try-catch блоки для поиска и устранения ошибок выполнения.</li><li><b>Логирование ошибок и исключений</b> с указанием времени их возникновения и деталей запроса поможет в анализе проблем.</li></ul><h3>Оптимизация запросов для минимизации нагрузки</h3><p>Оптимизация запросов сильно снижает нагрузку на серверы и повышает производительность приложения. Базовые советы:</p><ul><li><b>Использовать кэширование ответов</b> от серверов по максимуму — так вы избежите повторных реквестов к одному и тому же ресурсу и сократите время ожидания ответа.</li><li>По возможности <b>объединять несколько запросов в один</b> для уменьшения количества сетевых обращений.</li><li>Запрашивать только те данные, которые нужны в данный момент времени с помощью фильтрации.</li></ul><p>Работа с API требует особой внимательности, терпеливости и понимания основ взаимодействия систем. Читайте документацию, изучайте FAQ, вовремя обрабатывайте ошибки, оптимизируйте запросы, выбирайте подходящий вид API и наиболее понятный для вас формат данных — так вы создадите приложение с высокой производительностью. И не забывайте всегда самосовершенствоваться.</p>]]></content:encoded>
    </item>
    <item>
      <title>От HTTP/1.1 до HTTP/3: как эволюционировали сетевые протоколы</title>
      <link>https://tproger.ru/articles/evolyuciya-setevyh-protokolov--ot-http-1-1-do-http-3</link>
      <comments>https://tproger.ru/articles/evolyuciya-setevyh-protokolov--ot-http-1-1-do-http-3?scrollTo=tproger-comments</comments>
      <dc:creator><![CDATA[Денис Кудерин]]></dc:creator>
      <guid isPermaLink="true">https://tproger.ru/articles/evolyuciya-setevyh-protokolov--ot-http-1-1-do-http-3</guid>
      <description><![CDATA[<p>Какие бывают виды сетевых протоколов. Рассказываем об основных изменениях от HTTP/1.1 до HTTP/3. Рассматриваем каждый вид и его особенности ✔ Tproger</p><p>— Читать дальше «<a rel="follow" href="https://tproger.ru/articles/evolyuciya-setevyh-protokolov--ot-http-1-1-do-http-3">От HTTP/1.1 до HTTP/3: как эволюционировали сетевые протоколы</a>»</p>]]></description>
      <category><![CDATA[Сетевые протоколы]]></category>
      <category><![CDATA[Интернет]]></category>
      <category><![CDATA[Статьи]]></category>
      <slash:comments>0</slash:comments>
      <pubDate>Sat, 07 Dec 2024 08:00:03 GMT</pubDate>
      <content:encoded><![CDATA[<p>Сетевые протоколы — это правила, по которым устройства взаимодействуют в сети. Благодаря им отправка и получение данных проходят без потерь и искажений информации. Чтобы протоколы работали, все участники процесса должны принимать предложенные условия и следовать им. Стандарты взаимодействия могут быть встроены в аппаратную часть устройств (то есть в железо) и/или в программный код.</p><p>Протоколы позволяют устройствам успешно связываться друг с другом и обмениваться данными независимо от различий в архитектуре и дизайне.</p><p>Узнаем, какие сетевые протоколы используются сейчас и какие применялись ранее, чем стандарт HTTP/1.1 отличается от более поздних версий, как внедряются протоколы нового поколения и каковы их перспективы.</p><h2>HTTP/1.1: Первый стандарт</h2><p>Основа цифрового мира — информация. Протоколы HTTP делают ее доступной для пользователя. Речь идет о правилах передачи гипертекста, на которых основана работа веб-ресурсов. Протокол HTTP регламентирует взаимодействие браузеров с серверами при загрузке страниц, картинок, видео и прочих данных.</p><p>За время существования интернета сетевые протоколы существенно изменились. Произошла эволюция, которая сделала загрузку страниц быстрее, а передачу данных — более надежной.</p><h2>Ранняя история</h2><p>Развитие протоколов началось не с HTTP/1.1, а с более ранних версий. Стоит кратко рассмотреть первые шаги на этом пути, прежде чем говорить о технологиях, которыми мы пользуемся сегодня. Выясним, какие основные сетевые протоколы существовали и как они развивались.</p><p>Еще в 1991 году, когда создавалась концепция современного интернета, разработчики задумались над эффективной системой передачи файлов. Модели сетевых протоколов в то время уже существовали, дело было за продуктом прикладного уровня.</p><p>Первым протоколом стал HTTP/0.9, который использовал сетевую модель управления передачей TCP в качестве транспортного слоя. HTTP/0.9 был задействован только в передаче гипертекста — это единственная концепция представления данных, которая существовала на тот момент.</p><p>Простой однострочный протокол HTTP/0.9 был максимально простым в плане реализации и мог работать из командной строки. Принципы, по которым работал этот инструмент, используются по сей день.</p><p>Однако уже через несколько лет после запуска HTTP/0.9 перестал удовлетворять потребности пользователей. Кроме гипертекстовых документов, требовался показ изображений и воспроизведение звуковых файлов, с чем протокол явно не справлялся. Не было также возможности использовать прокси-серверы для увеличения трафика.</p><p>Указанные выше проблемы были частично исправлены в HTTP/1.0, реализованном в 1995 году после первой всемирной конференции World Wide Web. Рабочая группа, созданная по итогам встречи разработчиков и представителей ИТ-индустрии, занялась вопросами развития сетевых протоколов. Сайты MTV, Amazon, Microsoft и других крупных компаний к тому времени уже были запущены и нуждались в развитии инфраструктуры.</p><p>Ресурсы работали через HTTP/1.0 поверх TCP, при этом новый протокол был ориентирован на графические браузеры. Для передачи метаданных клиент и сервер использовали заголовки, задающие тип передаваемых данных. Таким образом, по протоколу, кроме гипертекста, можно было передавать графические, аудио и другие файлы. Инструмент поддерживал кэширование, аутентификацию, передачу через прокси типа SQUID и шлюзы.</p><p>Несмотря на все нововведения, обнаружились и проблемы протокола, исходящие из его дизайна. Принцип «один запрос — один ответ» показывал более низкую эффективность, чем конвейерная передача нескольких запросов сразу. Для решения задачи устанавливалось несколько TCP-соединений вместо одного. Это ускоряло загрузку, но увеличивало использование ресурсов.</p><h2>Запуск HTTP/1.1</h2><p>К концу прошлого века программисты приступили к поиску альтернатив. Перед ними стояли вполне конкретные задачи:</p><ul><li>сократить избыток TCP-соединений;</li><li>повысить эффективность и скорость передачи данных;</li><li>увеличить возможности кэширования;</li><li>сократить использование IP-адресов;</li><li>стандартизировать методы доставки веб-приложений;</li><li>установить контроль над расширениями к протоколу;</li><li>обеспечить совместимость веб-приложений.</li></ul><p>Все эти проблемы были в той или иной степени решены в 1999 году с выходом HTTP/1.1. Это стандарт сейчас известен всем разработчикам и частично продолжает использоваться. Текстовый протокол с расширенной семантикой предыдущих версий работал поверх TCP с помощью опционального слоя шифрования SSL/TLS.</p><p>Алгоритм работы HTTP/1.1 следующий:</p><ol><li>Клиент (компонент, отправляющий запрос) устанавливает соединение через TCP и согласует SSL/TLS-связи.</li><li>Сервер получает от клиента строку с методом, маршрутом к документу и версией протокола.</li><li>Далее клиент отправляет заголовки в нужном формате, уведомляет при необходимости о поддержке стабильных подключений и может попросить сервер не прекращать соединение после завершения запроса.</li><li>Сервер в ответ отправляет версию протокола, часть строки со статус-кодом, по возможности тело ответа.</li><li>Если обе стороны поддерживают постоянные подключения, соединение TCP не закрывается, что решает проблему избыточного использования этой сетевой модели.</li></ol><p>Ключевым моментом стало применение поддерживающих соединений, позволяющих многократно использовать TCP-связь. Долгое время такое решение считалось оптимальным, хотя уже тогда многие разработчики не были удовлетворены новым стандартом. Как и ранним версиям, протоколу HTTP/1.1 были свойственны задержки и блокировки сети при увеличении запросов. Проблема стала особенно ощутимой после внедрения беспроводных технологий.</p><p>Еще одной сложностью было отсутствие полноценной поддержки параллелизма. Передача многих файлов одновременно требовала привлечения дополнительных ресурсов.</p><p>Разработчики обращали внимание на блокировку Head-of-Line (начала очереди). Такая ситуация возникает, когда один объект с низкой скоростью задерживает весь поток. Аналогия с кассой супермаркета, когда покупатели с единичными покупками ждут, пока рассчитается один клиент с огромной тележкой товаров, в полной мере отражает суть проблемы.</p><p>Расширения, которые использовались для обхода блокировок и задержек, не были эффективными в достаточной степени. Поэтому уже с середины 2000-х шла работа над альтернативными решениями</p><h2>HTTP/2: Большой шаг вперед</h2><p>Веб-страницы со временем усложнялись и включали в себя все больше визуальных средств. Появились самостоятельные веб-приложения, увеличились размеры скриптов, возникли интерактивные опции. Объем данных, передаваемых с помощью HTTP-запросов, кратно увеличился, что привело к повышению накладных расходов при использовании текущего протокола.</p><p>Возникла настоятельная потребность в новых протоколах. В начале 2010 разработчики Google создали экспериментальное решение SPDY — альтернативный вариант для обмена данными. Протокол повышал скорость отклика и решал проблему удвоения данных. Именно он стал основой для HTTP/2.</p><h2>Характеристики и преимущества протокола HTTP/2</h2><p>Ключевое отличие от предшественников в том, что HTTP/2 — бинарный протокол, а не текстовый, то есть применяет двоичный формат для передачи данных. Поскольку информацию не нужно трансформировать в текст, радикально увеличивается скорость взаимодействия клиента и сервера, упрощается загрузка файлов любого типа, в том числе аудио и видео.</p><p>Официальный стандарт HTTP/2 был представлен в 2015 году, а к 2022 на нем уже работала почти половина всех сайтов. Ресурсы с высокой посещаемостью почти в полном составе перешли на этот протокол с целью экономии средств на передаче данных.</p><p>Относительно быстрое внедрение нового стандарта объясняется просто — при использовании HTTP/2 не нужно вносить изменения в код сайтов и веб-приложений. Нужен только современный сервер, который взаимодействует с актуальной версией браузера. В процессе обновления сетевых ресурсов и хранилищ использование протокола реализуется естественным образом.</p><p>Вот основные плюсы HTTP/2:</p><ul><li><b>HTTP/2 — мультиплексированный протокол</b>, поэтому параллельные запросы могут исполняться через одно и то же соединение. Это отменяет блокировки начала очереди Head-of-Line — не нужно дожидаться прохождения предыдущего запроса перед отправкой следующего.</li><li><b>Сжатие заголовков</b>, которые часто совпадают в разных запросах, устраняет дублирование и экономит трафик — лишние данные не передаются, только нужные.</li><li><b>Функция Server Push.</b> Эта технология прогнозирования списка ресурсов, которые могут понадобиться клиенту в ближайшее время, и их предварительное продвижение.</li><li><b>Безопасность данных.</b> Протокол не требует обязательного шифрования HTTPS, но большинство браузеров делают это автоматически, что повышает уровень безопасности при обмене данными.</li><li><b>Установка приоритетов.</b> Сторона клиента может указывать приоритет запроса, на что сервер отвечает соответственно — отправляя в первую очередь более важные ресурсы.</li></ul><p>Версия HTTP/2 ускоряет загрузку страниц, позволяет отправлять множество запросов одномоментно через одно соединение, снижает затраты ресурсов, делает более эффективным и приятным серфинг в сети. Загрузка сайтов становится быстрой даже на мобильных гаджетах с нестабильным интернетом.</p><h2>Поддержка и перспективы</h2><p>Внедрение протокола второго поколения пошло на пользу и разработчикам. Теперь создание и реализация веб-проектов стали более простыми процедурами. В свою очередь улучшение пользовательского опыта и SEO — это рост монетизации ресурсов и увеличение коммерческой отдачи от проектов.</p><p>Специалисты отмечают, что преимущества HTTP/2 для поисковой оптимизации связано с техническими особенностями протокола. Быстродействие сайта входит в число важных факторов ранжирования. Медленный ресурс вряд ли понравится клиентам. Практика показывает, что внедрение нового протокола повышает скорость загрузки на 50-80%. Посетители имеют меньше проблем при навигации и использовании интерактивных функций.</p><p>Чтобы перейти на HTTP/2, требуется поддержка со стороны клиента и браузера. Почти все современные браузеры в актуальных версиях созданы с автоматической поддержкой стандарта. Постепенно обновляется ПО серверов и сетей доставки. Издержки и затраты времени на обновление невелики в сравнении с плюсами, которые дает скорость и производительность HTTP/2.</p><h2>HTTP/3: Протокол нового поколения</h2><p>Разработка нового протокола началась еще в 2018 году. При этом экспериментальный стандарт QUIC, на котором основан HTTP/3, компания Google создала еще в 2012. Именно благодаря транспортному протоколу QUIC технология нового поколения получила свои преимущества и уникальные качества.</p><p>HTTP/3 — улучшенная версия предыдущих стандартов, которая со временем заменит их благодаря еще более высокой скорости и надежности. Поскольку HTTP/2 использует TCP, это накладывает определенные ограничения на быстроту передачи данных.</p><p>Транспортный протокол QUIC — это разработка на базе UDP (User Datagram Protocol), которая оперирует собственными, принципиально иными механизмами управления данными, контроля и исправления ошибок.</p><p>Основные преимущества протокола нового поколения:</p><ul><li><b>Ускоренное соединение.</b> QUIC использует взаимный обмен приветствиями (handshake) уменьшенной длины в сравнении с TCP, поэтому передача данных начинается быстрее.</li><li><b>Уменьшение задержки.</b> Транспортный протокол оптимизирован для работы в условиях нестабильного интернета — это положительно влияет на пользовательский опыт.</li><li><b>Высокая пропускная способность.</b> QUIC более эффективно использует возможности сети, даже если происходят потери пакетов.</li><li><b>Повышенная безопасность</b>. Используется шифрование TLS 1.3, что делает передачу данных более безопасной.</li><li><b>Повышение качества веб-ресурсов.</b> Внедрение протоколов выводит разработку онлайн-сервисов на новый уровень. Быстрая загрузка, беспроблемная передача звука и видео — все это ускоряет создание новых проектов и повышает их эффективность.</li></ul><p>Хотя HTTP/2 позволяет загружать за раз сразу несколько ресурсов, его модель TCP не особенно подходит для мультиплексирования. Причина в том, что при провале одного запроса, браузеру приходится вместе с ним повторять и остальные. В HTTP/3 эта проблема решается более рационально — повторяется только проблемный запрос, что существенно не влияет на скорость соединения.</p><p>Зачем нужен HTTP/3, если есть протокол второго поколения? Эксперты говорят, что необходимость в новом стандарте, основанном на транспортном протоколе QUIC, назрела практически сразу после повсеместного распространения интернета. TCP изначально работал на максимуме продуктивности, поэтому имел существенные ограничения.</p><p>Годами с помощью новых функций и расширений разработчики пытались нивелировать недостатки TCP, но развернуть их в масштабе всего интернета было чрезвычайно сложно. По этой причине и понадобился протокол нового поколения HTTP/3, который в настоящий момент становится все более востребованным.</p><h2>Реализация и поддержка HTTP/3</h2><p>В 2024 году протокол HTTP/3 поддерживают многие популярные браузеры. В Chrome стандарт используется в большинстве подключений к серверам. Подключение через HTTP/3 применяют также Firefox, Safari, Microsoft Edge и другие браузеры.</p><p>В настоящий момент этот протокол поддерживают миллионы самых популярных онлайн-ресурсов, и это количество постоянно растет. Кроме компании Google, которая принимала активное участие в разработке нового стандарта, протокол использует, например, платформа CloudFlare — ее опции без использования серверов совместимы с HTTP/3. Активные пользователи протокола — компании Akamai, Fastly, Amazon и многие другие.</p><p>Существенным преимуществом HTTP/3 для последующего распространения выступает его полная зашифрованность. Посредники (прокси) в сети не замечают и не интерпретируют его работу, как случае с TCP, поэтому новые версии протокола и новые фичи будут работать корректно на любых устройствах сразу после их обновления.</p><h2>Итоги — будущее сетевых протоколов</h2><p>Эволюция сетевых протоколов — процесс непрерывный. По мере развития технологий и веб-приложений повышаются и требования к передаче данных. Поскольку количество подключенных к сети устройств, включая мобильные гаджеты, постоянно растет, актуальным будет и увеличение пропускной способности протоколов, а также скорости загрузки данных. Нельзя забывать и о безопасности информации, так что этот аспект тоже будет развиваться.</p><p>Потребуется также оптимизация для IoT — интернета вещей. Таких устройств становится все больше, растет и необходимость в эффективных протоколах для них. В этом направлении разработка стандартов ведется особенно интенсивными темпами.</p><p>Становится все более актуальным применение искусственного интеллекта в совершенствовании сетевых протоколов. Машинное обучение и ИИ могут быть использованы для оптимизации различных уровней сетевого взаимодействия для повышения производительности и безопасности.</p>]]></content:encoded>
    </item>
    <item>
      <title>Основы модели OSI</title>
      <link>https://tproger.ru/articles/model-osi-osnovy</link>
      <comments>https://tproger.ru/articles/model-osi-osnovy?scrollTo=tproger-comments</comments>
      <dc:creator><![CDATA[Ryen]]></dc:creator>
      <guid isPermaLink="true">https://tproger.ru/articles/model-osi-osnovy</guid>
      <description><![CDATA[<p>Разбираем модель OSI — одну из фундаментальных концепций в мире компьютерных сетей. Рассказываем об её принципах и уровнях.</p><p>— Читать дальше «<a rel="follow" href="https://tproger.ru/articles/model-osi-osnovy">Основы модели OSI</a>»</p>]]></description>
      <category><![CDATA[Для начинающих]]></category>
      <category><![CDATA[Сетевые протоколы]]></category>
      <category><![CDATA[Статьи]]></category>
      <slash:comments>0</slash:comments>
      <pubDate>Mon, 24 Jul 2023 11:18:40 GMT</pubDate>
      <content:encoded><![CDATA[<p>Здравствуйте! Сегодня мы с вами разберем одну из фундаментальных концепций в мире компьютерных сетей — модель OSI. Не будем медлить, а сразу погрузимся в увлекательный мир сетевых протоколов и уровней взаимодействия.</p><h2>Что такое модель OSI: основные принципы</h2><p>Модель OSI (Open Systems Interconnection) представляет собой структурированный подход к организации работы сетевых протоколов и устройств. Разработанная Международной организацией по стандартизации (ISO), эта модель определяет семь уровней взаимодействия, каждый из которых выполняет определенные функции. Вот как выглядят эти семь уровней:</p><figure><img src="https://media.tproger.ru/uploads/2023/07/8df4f422-a08d-49a0-8868-b220f3a184b6.png" alt="" /></figure><h2>Уровни модели OSI и их функции</h2><h3>Уровень 1: Физический уровень (Physical Layer)</h3><p>Физический уровень обеспечивает физическую передачу данных по среде связи. Он определяет характеристики кабелей, разъемов, протоколов передачи и другие аспекты физической связи. Этот уровень отвечает за преобразование данных в сигналы, которые могут передаваться по физической среде. Примеры: Ethernet-кабели для проводной передачи данных, оптоволокно для передачи данных по световым сигналам, USB для подключения устройств к компьютеру.</p><h3>Уровень 2: Канальный уровень (Data Link Layer)</h3><p>На канальном уровне происходит передача данных между соседними устройствами в сети. Он отвечает за создание фреймов, адресацию устройств, контроль доступа к среде и обнаружение ошибок. Этот уровень гарантирует, что данные успешно доставлены между устройствами в одной сети. Примеры: Ethernet для проводной сетевой передачи данных, Wi-Fi для беспроводной передачи данных.</p><h3>Уровень 3: Сетевой уровень (Network Layer)</h3><p>Сетевой уровень занимается маршрутизацией данных в сети. Он определяет оптимальный путь для передачи данных между различными сетями и устройствами. Здесь также осуществляется управление потоком данных и контроль ошибок в пределах сети. Примеры протоколов: IP (Internet Protocol) для маршрутизации данных между сетями, ICMP (Internet Control Message Protocol) для передачи сообщений об ошибках и управления сетью.</p><h3>Уровень 4: Транспортный уровень (Transport Layer)</h3><p>Транспортный уровень обеспечивает надежную доставку данных от одного узла до другого. Он отвечает за разделение данных на пакеты, контроль ошибок, управление потоком данных и обеспечение доставки в правильной последовательности. На этом уровне протоколы обеспечивают механизмы для установки, поддержания и завершения соединений. Примеры протоколов: TCP (Transmission Control Protocol) для надежной доставки данных в правильной последовательности и контроля ошибок, UDP (User Datagram Protocol) для передачи данных БЕЗ гарантии доставки.</p><h3>Уровень 5: Сеансовый уровень (Session Layer)</h3><p>На сеансовом уровне устанавливаются, поддерживаются и завершаются сеансы связи между приложениями. Этот уровень контролирует взаимодействие и синхронизацию между приложениями, предоставляя средства для управления сеансами. Он также отвечает за управление диалогами и обеспечивает восстановление связи при сбоях. Примеры: NetBIOS для управления сеансами в Windows сетях, SSH для безопасного удаленного доступа.</p><h3>Уровень 6: Представительский уровень (Presentation Layer)</h3><p>Представительский уровень занимается преобразованием данных в удобный для обмена формат. Он обеспечивает сжатие данных, кодирование, декодирование и шифрование. Это позволяет обеспечить совместимость между различными форматами данных, так как приложения могут использовать различные форматы для представления информации. Примеры: JPEG для сжатия изображений, MPEG для сжатия видео, а также технологии для защиты данных SSL (Secure Sockets Layer) и TLS (Transport Layer Security).</p><h3>Уровень 7: Прикладной уровень (Application Layer)</h3><p>На прикладном уровне происходит взаимодействие пользовательских приложений с сетевыми службами. Этот уровень предоставляет интерфейс для приложений, что позволяет программам обмениваться данными через сеть. Здесь работают протоколы, позволяющие обмениваться данными между программами и пользователями. Примеры протоколов: HTTP для передачи веб-страниц, SMTP для отправки электронной почты.</p><h2>Применение модели OSI в современных сетях</h2><p>Модель OSI служит основой для понимания взаимодействия устройств в компьютерных сетях. Сетевые инженеры используют эту модель для разработки, настройки и поддержки сложных сетевых инфраструктур. Она помогает им лучше понимать принципы работы различных протоколов и их влияние на производительность и безопасность сетей.</p><h2>Заключение</h2><p>Модель OSI остается неотъемлемой частью мира компьютерных сетей. Её понимание позволяет сетевым специалистам строить эффективные и надежные сети, а также успешно диагностировать и решать проблемы в сетевых инфраструктурах. Надеюсь, что данная статья помогла вам лучше разобраться в этой важной теме.</p>]]></content:encoded>
    </item>
    <item>
      <title>WebRTC и SIP: где отличия и что выбрать под свои задачи</title>
      <link>https://tproger.ru/articles/webrtc-i-sip-gde-otlichiya-i-chto-vybrat-pod-moi-zadachi</link>
      <comments>https://tproger.ru/articles/webrtc-i-sip-gde-otlichiya-i-chto-vybrat-pod-moi-zadachi?scrollTo=tproger-comments</comments>
      <dc:creator><![CDATA[Станислав]]></dc:creator>
      <guid isPermaLink="true">https://tproger.ru/articles/webrtc-i-sip-gde-otlichiya-i-chto-vybrat-pod-moi-zadachi</guid>
      <description><![CDATA[<p>Рассуждаем, в чём разница между протоколами WebRTC и SIP, и какой протокол выбрать под задачи вашего проекта.</p><p>— Читать дальше «<a rel="follow" href="https://tproger.ru/articles/webrtc-i-sip-gde-otlichiya-i-chto-vybrat-pod-moi-zadachi">WebRTC и SIP: где отличия и что выбрать под свои задачи</a>»</p>]]></description>
      <category><![CDATA[Инструменты]]></category>
      <category><![CDATA[Сетевые протоколы]]></category>
      <category><![CDATA[Советы]]></category>
      <category><![CDATA[Статьи]]></category>
      <slash:comments>0</slash:comments>
      <pubDate>Fri, 05 May 2023 05:44:13 GMT</pubDate>
      <content:encoded><![CDATA[<p>До сих пор ходят байки, что лучше из этих двух протоколов. Разберу их цели, расскажу про подходы, их отличия, плюсы и, возможно, помогу определиться с тем, что подойдёт вам.</p><p>Основная задача популярной технологии WebRTC — передавать потоковые данные (иными словами, звонить) от одного браузера или приложения к другому по принципу «точка-точка».</p><p>Рынок этой технологии <a href="https://www.globenewswire.com/en/news-release/2022/08/30/2506931/0/en/WebRTC-Market-to-Rise-at-a-CAGR-of-35-30-during-Forecast-Period-observes-TMR-Study.html">растёт</a> на 35,3% в год и по прогнозу за десять лет может вырасти в 20 раз. WebRTC работает почти во всех известных браузерах, поэтому изначально разработчики планировали использовать эту технологию вместо SIP-телефонии. Такое решение сделало бы работу с виртуальной АТС проще и легче. Из-за отличий между системами заменить SIP-телефонию не получилось.</p><h2>Отличия между WebRTC и SIP-телефонией</h2><p>Для простых пользователей:</p><ul><li>Стандарт WebRTC работает почти во всех браузерах, и даже <a href="https://developer.mozilla.org/en-US/docs/Web/API/WebRTC_API">документация есть</a>.</li><li>Софтфоны нужно отдельно загружать на ПК, так как это программное обеспечение.</li></ul><p>Для технического инженера или сисадмина:</p><ul><li>Все программное обеспечение компании должно поддерживать стандарт WebRTC. А еще — телефонный оператор и виртуальная АТС. Только у четырёх телефонных операторов есть возможность использовать эту систему в браузерах.</li><li>SIP-протокол — это стандарт, который поддерживают все ПО и аппаратура.</li></ul><h2>Может ли WebRTC заменить SIP-софтфон</h2><p>Да, но не во всём. WebRTC-телефоны по некоторым параметрам превосходят SIP.</p><p>Работают через браузер без отдельной установки. Для звонка нужно открыть ссылку и войти в свой аккаунт на платформе, где совершается разговор. Телефон загрузится и можно общаться — это доступно пользователям любых ПК</p><p>Однако для колл-центров этот факт не так важен. Операторы нечасто меняют ПК, поэтому возможность запуска программы без установки для них не такой уж очевидный плюс. К тому же современные софтфоны загружаются примерно за минуту, когда пользователь делает настройку рабочего пространства, и весят не более 20 МБ (гораздо меньше, чем Skype и Microsoft Office).</p><p>WebRTC не нужно настраивать в браузере. Как только будет открыта страница с телефоном, нужно дать разрешение на доступ к микрофону. Но в каждом профессиональном софтфоне есть удалённая настройка. Специалист колл-сервиса заходит в софтфон, авторизуется, и все нужные настройки уже в приложении. Ни операторы, ни сисадмины сами не вводят настройки. Можно сразу звонить в настроенном приложении.</p><h2>Плюсы SIP-телефонов перед WebRTC</h2><p>Технически WebRTC не работает на маломощных ПК или возможны утечки памяти. Через два часа активной работы телефон увеличится в два раза и система может тормозить.</p><p>Не в каждом колл-центре или у удалённых работников есть ПК с требованиями, которых достаточно для использования WebRTC. Это отдельная <a href="https://www.quora.com/What-are-the-server-requirements-specifications-for-making-a-webRTC-server">тема для обсуждений</a>. Расширить ОЗУ на устаревших ПК не получится. А при заполнении памяти оператор и клиент плохо слышат друг друга, постоянно требуется перезагрузка программы. Есть два выхода: замена устройств на более современные и использование программы, которая меньше весит.</p><p>К примеру, Softphone.Pro займёт всего 100 МБ и не увеличивается в объёме. Эта программа может легко работать даже на маломощных ПК, которыми пользуются удалёнщики.</p><p>На WebRTC-телефоне не поддерживается работа одновременно с разными SIP-аккаунтами. А есть центры звонков, для которых это принципиально важно. Например, когда сервис относится к нескольким офисам одной компании в разных точках страны. У каждого города — свой аккаунт. Поэтому оператору нужно не только видеть, откуда поступает исходящий звонок, но и самому делать вызовы с номера конкретного города (заказчику из Твери — с тверского).</p><p>SIP-софтфоны работают сразу с несколькими аккаунтами и делают вызов с необходимой учётной записи в один клик. При обзвоне клиентов из общей системы достаточно нажать на кнопку с номером телефона, и оператор позвонит с нужного SIP-аккаунта. Это сводит к минимуму ошибки, связанные с человеческим фактором.</p><p>В WebRTC не работают многие стандартные функции телефонов. Например, невозможно удерживать и переводить вызовы, создавать конференции. SIP-софтфоны не имеют таких сложностей. У них есть всё опции для работы с облачными АТС, специальным ПО для колл-центров. Перечислим некоторые из них:</p><ul><li>Быстрые переключения звонков.</li><li>Условный автоматический ответ.</li><li>Удержание и снятие вызова.</li><li>Создание конференции максимум из шести абонентов.</li><li>Включение аудиосообщений.</li><li>Запись звонков.</li><li>Открытие статусов сотрудников.</li><li>Параллельное включение двух линий звонка.</li></ul><h2>WebRTC для кого</h2><p>В WebRTC нет опций, необходимых для всех колл-центров. Например, оптимизации расписания операторов, записи с экранов или съемки с камеры.</p><p>WebRTC-телефония не всегда решает главные задачи:</p><ul><li>Не интегрируется с основными гарнитурами и приложениями. Следовательно, нет звонков в одно нажатие, нет всплывающих карточек</li><li>Нет стереозаписи менеджера и клиента в разных каналах, а значит, невозможно распознавать речь.</li></ul><figure><img src="https://media.tproger.ru/uploads/2023/05/0abcc0a5-146c-4c20-ba04-80969947adf4.png" alt="" /></figure><p>WebRTC-телефония больше подходит для отдельных сотрудников компаний, которые редко совершают звонки. Чаще всего это руководители и бухгалтеры. А вот менеджерам колл-центров больше подходят сервисы с SIP-телефонией, особенно если речь идёт <a href="https://docs.exolve.ru/docs/ru/api-reference/sip-api/creating-sip/">про API</a>. Так легче переварить большой объём трафика и гибко выстроить сценарии.</p><p>Они могут легко интегрироваться с другими программами, записывать экран ПК, отслеживать работу операторов, поддерживают профессиональные гарнитуры и могут работать сразу с нескольких аккаунтов.</p><h2>Гибкость и свобода</h2><p>SIP обладает большей гибкостью на уровне протокола, а WebRTC — на уровне приложений. С большей гибкостью у вас есть больше свободы для инноваций, но, к сожалению, и больше проблем с совместимостью. SIP, например, позволяет использовать описание сеанса без SDP, применять медиатранспорт на основе RTP, SRTP или ZRTP. О них подробнее можете почитать <a href="https://support.telnyx.com/en/articles/4404575-tls-srtp-zrtp">здесь</a>.</p><p>WebRTC предписывает множество таких элементов в протоколе, например, работу с SDP, SRTP, ICE и так далее. В будущем, если придумают медиатранспорт получше, спецификацию придётся изменить.</p><p>Благодаря вот той же гибкости SIP люди создали сотни различных реализаций, используя один и тот же базовый протокол. WebRTC не в силах помочь реализовать нетривиальный медиаканал, вроде многоадресной рассылки на уровне приложения или LAN по локальной сети, или позволить веб-приложению работать с text-to-speech.</p><p>Гибкость протокола SIP имеет свою цену — нет гарантии таких функций, как безопасность или общие кодеки в разных реализациях.</p><h2>Заключение</h2><p>Многие существующие приложения на основе SIP, вероятно, воспользуются WebRTC, если возникнет спрос. Точно так же новые веб-приложения, основанные исключительно на WebRTC, вероятно, будут включать SIP-шлюз для доступа к пользователям без браузера, если, опять же, будет спрос.</p><p>SIP или WebRTC сами по себе — это лишь небольшая часть головоломки. Тем не менее, WebRTC пытается заполнить пустоту, которая уже давно витает в мире SIP-связи.</p>]]></content:encoded>
    </item>
    <item>
      <title>Почему решения для M2M устройств 2G/3G/4G не применимы для NB-IoT</title>
      <link>https://tproger.ru/articles/pochemu-reshenija-dlja-m2m-ustrojstv-2g-3g-4g-ne-primenimy-dlja-nb-iot</link>
      <comments>https://tproger.ru/articles/pochemu-reshenija-dlja-m2m-ustrojstv-2g-3g-4g-ne-primenimy-dlja-nb-iot?scrollTo=tproger-comments</comments>
      <dc:creator><![CDATA[Мария Кривоченко]]></dc:creator>
      <guid isPermaLink="true">https://tproger.ru/articles/pochemu-reshenija-dlja-m2m-ustrojstv-2g-3g-4g-ne-primenimy-dlja-nb-iot</guid>
      <description><![CDATA[<p>Постарались систематизировать для вас наш более чем трёхлетний опыт эксплуатации сети и собственных разработок устройств NB-IoT.</p><p>— Читать дальше «<a rel="follow" href="https://tproger.ru/articles/pochemu-reshenija-dlja-m2m-ustrojstv-2g-3g-4g-ne-primenimy-dlja-nb-iot">Почему решения для M2M устройств 2G/3G/4G не применимы для NB-IoT</a>»</p>]]></description>
      <category><![CDATA[Интернет вещей]]></category>
      <category><![CDATA[Сетевые протоколы]]></category>
      <category><![CDATA[Статьи]]></category>
      <slash:comments>0</slash:comments>
      <pubDate>Thu, 24 Mar 2022 10:18:58 GMT</pubDate>
      <content:encoded><![CDATA[<p>С начала коммерческого использования сети в 2018 году и появления первых устройств NB-IoT мы столкнулись с тем, что проверенные решения, которые применялись при разработке M2M устройств предыдущих поколений 2G/3G/4G, абсолютно неприменимы к NB-IoT разработкам. В этой статье мы постарались собрать весь опыт эксплуатации сети и собственных разработок устройств <b>NB-IoT</b>, а также взаимодействия с нашими партнёрами-разработчиками.</p><h2>Что такое NB-IoT?</h2><p>Технология NB-IoT многое унаследовала от LTE, начиная с физической структуры радиосигнала и заканчивая архитектурой. При передаче сигнала LTE используется механизм разделения каналов OFDM с разнесением поднесущих на 15 кГц. В DL (Downlink, направление от БС) используется OFDMA, а в UL (Uplink, направление на БС) используется SC-FDMA.</p><figure><img src="https://media.tproger.ru/uploads/2022/03/ut07UZ_w0-w_waifu2x_photo_noise3_scale_tta_1-autoconverted.jpeg" alt="" /><figcaption>Рисунок 3.1 Частотные компоненты LTE</figcaption></figure><p>Для достижения большой пропускной способности соты применяются высокие порядки модуляции QAM256 для DL и QAM64 для UL. Вдобавок с этой же целью применятся технологии MIMO2x2 и MIMO4x4.</p><p>Для обозначения величины падающей мощности DL, помимо значений RSSI и RSRP, используется значение падающей мощности EPRE (Energy Per Resource Element), то есть значение мощности для одного RE (Рисунок 3.1).</p><h3>Радиочастоты NB-IoT и методы выделения частотного ресурса</h3><p>Для NB-IoT могут использоваться практически все те же диапазоны частот, что и для 2G/3G/4G в нижних частотных диапазонах 800-1880 МГц. В Российской Федерации для NB-IoT выделены три диапазона. Это B20 (800МГц), B8(900МГц), B3(1800МГц).</p><p>Более высокочастотные диапазоны обычно не используются из-за большего затухания сигнала.</p><figure><img src="https://media.tproger.ru/uploads/2022/03/Snimok-jekrana-2022-03-16-v-17.33.39.png" alt="" /><figcaption>Таблица 3.1 Частотные диапазоны, выделенные в Российской Федерации для NB-IoT</figcaption></figure><p>На практике применяются три режима выделения частотного ресурса для NB-IoT:</p><ul><li>Stand-alone;</li><li>In-band;</li><li>Guard-band.</li></ul><p>Режим <b>Stand-alone</b> является самым эффективным для работы NB-IoT, но и самым затратным. В этом режиме под NB-IoT выделяется частотный канал шириной 200 кГц. Для этого может понадобиться от 300 до 600 кГц ценного радиочастотного спектра, чтобы обеспечить требуемые защитные интервалы. И взаимные интерференции с другими технологиями минимальны.</p><figure><img src="https://media.tproger.ru/uploads/2022/03/w3IwrWh71z4-2_waifu2x_photo_noise3_scale_tta_1-autoconverted.jpeg" alt="" /><figcaption>Рисунок 3.2 Варианты размещения канала NB-IoT в режиме stand-alone</figcaption></figure><p>В режиме <b>In-band</b> для NB-IoT выделяются ресурсы внутри существующей LTE-несущей, но NB-IoT-несущая имеет на 6 дБ более высокую мощность по сравнению с ресурсными блоками LTE. Этот вариант хорошо подходит для экономии частотного ресурса, но при этом есть проблема взаимного влияния с LTE-сетью.</p><figure><img src="https://media.tproger.ru/uploads/2022/03/1lkLC80X6BY_waifu2x_photo_noise3_scale_tta_1-autoconverted.jpeg" alt="" /><figcaption>Рисунок 3.3 Размещение несущей NB-IoT в режиме In-band</figcaption></figure><p>В режиме <b>Guard-band</b> несущая NB-IoT располагается в защитном интервале несущей LTE. Например, в полосе LTE 10 МГц ширина защитного интервала с обеих сторон несущей составляет 500 кГц. Так же, как и в режиме In-band, несущая NB-IoT имеет на 6-9дБ более высокую мощность  по сравнению с ресурсными блоками LTE (Рисунок 4). Этот вариант использования позволяет одновременно сэкономить частотный ресурс и уменьшить взаимное влияние с LTE сетью, хотя при этом ухудшаются параметры внеполосных излучений для LTE.</p><figure><img src="https://media.tproger.ru/uploads/2022/03/ZPQfwmWNw4s_waifu2x_photo_noise3_scale_tta_1-autoconverted.jpeg" alt="" /><figcaption>Рисунок 3.4 Размещение несущей NB-IoT в режиме Guard-band</figcaption></figure><h3>Особенности радиосигнала NB-IoT</h3><p>Самое важное в NB-IoT — возможность работы при более низких уровнях сигнала и высоком уровне шумов, а также экономия батареи. NB-IoT предназначен для передачи коротких сообщений, и от него не требуется передача аудио-видео контента, больших файлов.</p><p>Исходя из этого, на физическом уровне в сигнал NB-IoT заложены особенности, которые помогают обеспечить необходимые характеристики:</p><ul><li>общая полоса для NB-IoT ограничена одним ресурсным блоком шириной 180 кГц;</li><li>радиотракт устройства NB-IoT чаще всего использует только одну антенну;</li><li>передача и приём разнесены по времени, то есть используется полудуплексный режим;</li><li>существует возможность передавать в направлении UL на одной поднесущей;</li><li>используемые типы модуляции ограничены BPSK и QPSK;</li><li>используется механизм переповторов передаваемой информации (Сoverage Enhancement).</li></ul><p>Это позволяет:</p><ul><li>снизить требования к процессорной мощности хост-контроллера (некоторые разработчики предпочитают не устанавливать в устройство отдельный хост-контроллер, а используют для выполнения прикладных программ контроллер радиомодуля);</li><li>минимизировать энергопотребление, за счёт чего увеличивается срок работы устройства без замены элемента питания;</li><li>уменьшить габариты;</li><li>удешевить устройство.</li></ul><p>У NB-IoT есть существенное преимущество по сравнению с сетям 2G/3G/4G в части зоны покрытия и проникновения сигнала в труднодоступные места (например, подвалы и помещения с коммуникациями в зданиях). Оно обеспечивается более помехоустойчивыми сигналами, благодаря применению узкополосных сигналов, а также встроенным механизмом переповтора передаваемых пакетов данных.</p><p>Остальные плюсы NB-IoT по сравнению с другими технологиями передачи данных.</p><ul><li>Расширенная зона покрытия и глубокое проникновения сигнала в труднодоступные места (например, подвалы, колодцы, технические помещения). Преимущество обеспечивается улучшенной характеристикой сигнал/шум вследствие узкополосного сигнала, используемой модуляцией, а также функцией переповторов при передаче пакетов данных.</li><li>Технология NB-IoT от МТС имеет выделенный ресурс сети, а значит приоритет в обслуживании не может быть отдан абонентам со смартфонами в периоды высоких нагрузок на сеть.</li><li>Существует общемировая тенденция по сокращению ресурсов, выделяемых операторами на устаревающие технологии 2G/3G. В этой связи и с учетом долгого срока жизни устройств интернета вещей целесообразно рассматривать современные и перспективные технологии, как раз такой и является NB-IoT.</li><li>В технологии NB-IoT реализован режим передачи данных NIDD, который на сегодня является самым эффективным и функциональным для LPWAN устройств.</li></ul><h3>Максимально достижимая скорость передачи данных</h3><p>Максимально достижимую скорость передачи данных в канале NB-IoT удобно показать в зависимости от Coupling Loss – уровня полных потерь в канале связи.</p><figure><img src="https://media.tproger.ru/uploads/2022/03/Snimok-jekrana-2022-03-16-v-17.42.22.png" alt="" /></figure><p>Как видно из таблицы, увеличение помехоустойчивости сигнала NB-IoT обратно пропорционально скорости передаваемой информации. Поэтому максимального выигрыша можно достичь, только обмениваясь по сети пакетами данных достаточно маленького размера, которые можно передать в разумный промежуток времени.  В дополнение, при разработке ПО для устройств нужно учесть, что в режиме CL2 передача даже одного пакета может занимать несколько секунд.</p><p>В 14-м релизе рекомендаций 3GPP, появился функционал extended TBS и Dual-HARQ, позволяющий увеличить скорость передачи информации до 159 кбит/с. Для реализации этого режима нужно использовать радио-модули категории NB2. При этом стоит учитывать, что преимущества NB2 по скорости реализуется только при достаточно хороших радиоусловиях, а в плохих — разница практически отсутствует.</p><p>Радиомодули новой категории NB2 также позволяют ещё более уменьшить энергопотребление и увеличить срок работы устройства без замены элемента питания за счет использования максимальной мощности передачи в 14 dBm. Для сравнения, максимальная мощность передачи предыдущей радио-модулей категории NB составляет 20, 23 dBm</p><p>Представленные цифры условны и зависят от конфигурации сети, и реальное проникновение сигнала зависит ещё и от качества и коэффициента усиления антенны устройства.</p><p>Поэтому при разработке приложений для устройств рекомендуется придерживаться определённых значений объёма и частоты передаваемых сообщений. Например, для LPWA приложений 3GPP определяет следующие модели трафика:</p><figure><img src="https://media.tproger.ru/uploads/2022/03/Snimok-jekrana-2022-03-16-v-17.44.53.png" alt="" /><figcaption>Таблица 3.3 Модели трафика для сетей LPWA</figcaption></figure><p>Практически нужно учесть, что по радиоканалу передается не только полезная информация, но и сигнальная нагрузка. При этом передача данных по NIDD создает меньшую сигнальную нагрузку чем по IP, что может в некоторых случаях иметь решающее значение для успешного радиообмена.</p><h3>Основные критерии при выборе технологии NB-IoT для разрабатываемого устройства:</h3><ul><li>энергоэффективность — устройство должно работать от одного комплекта батарей длительный срок, до 10 лет и более;</li><li>надёжность передачи данных, защищЁнность канала связи;</li><li>подключение большого числа устройств в одной локации;</li><li>стоимость устройства;</li><li>наличие сети доступа во всех регионах РФ;</li><li>развитие и поддержка сети в течение долгого времени.</li></ul><h2>Выбор протоколов транспортного уровня</h2><p>При выборе используемого протокола в первую очередь необходимо учитывать избыточность протокола и накладные расходы на установление и поддержание соединения:</p><figure><img src="https://media.tproger.ru/uploads/2022/03/ZBotmE4N0vM.jpg" alt="" /><figcaption>Рисунок 4.1 Избыточность протоколов TCP/UDP по сравнению с NIDD</figcaption></figure><p>В сетях NB-IoT рекомендуется применять следующие способы передачи данных в порядке убывания предпочтения:</p><ul><li>режим передачи NIDD (Non-IP data delivery);</li><li>протокол передачи данных CoAP (стек IP/UDP);</li><li>протоколы MQTT-SN и LWM2M 1.1 (стек IP/UDP);</li><li>проприетарные бинарные протоколы, основанные на UDP.</li></ul><figure><img src="https://media.tproger.ru/uploads/2022/03/n0MVyQDaRaI_waifu2x_photo_noise3_scale_tta_1-autoconverted.jpeg" alt="" /><figcaption>Рисунок 4.2 Процедура установления и поддержания сессии TCP</figcaption></figure><p>Стоит отметить, что одно и то же устройство может работать как в режиме IP, так и в режиме NIDD, текущий режим работы зависит от активированного контекста (Non-IP или Ipv4/IPv6). Для работы с IP и NIDD используются различные виды тарификации: для IP пакеты, измеряемые в килобайтах, для NIDD пакеты, измеряемые в сообщениях.</p><figure><img src="https://media.tproger.ru/uploads/2022/03/fhzCLxdeAjI_waifu2x_photo_noise3_scale_tta_1-autoconverted.jpeg" alt="" /></figure><h3>Протоколы на основе UDP</h3><p>Рекомендуется применение как проприетарных протоколов поверх UDP, так и специфицированных транспортных протоколов поверх UDP: CoAP, MQTT-SN, LWM2M.</p><p>Текущая практика разработки устройств показывает, что наибольшей популярностью пользуется протокол CoAP. Отчасти это обусловлено тем, что данный протокол поддерживается на уровне прошивки радиомодуля многими поставщиками. На примере этого протокола рассмотрим несколько механизмов, позволяющих реализовать функциональность для энергоэффективного устройства.</p><p>Протокол CoAP построен на основе протокола HTTP, использует те же методы (POST, GET и другие), то есть протокол позволяет публиковать данные, запрашивать данные и выполнять другие запросы.</p><p>Реализован механизм квитирования (подтверждений), для этого используется атрибут CON или NON. Также протоколом предусмотрен механизм подписки: устройство может получить уведомление об изменении какого-либо параметра на сервере, для этого используется функция observe.</p><p>Протокол реализует стандартные ответы сервера на запросы, например, ответ 2.03 Valid говорит от том, что переданные данные успешно сохранены на сервере. Всё описанное выше — только малая часть возможностей протокола CoAP, но этого вполне достаточно, чтобы развеять сомнения разработчиков относительно возможности реализовать необходимую им функциональность, в том числе гарантированную доставку данных, с использованием UDP.</p><p>Пример последовательности АТ-команд для передачи данных по протоколу CoAP модуля Quectel BC68:</p><p>Основное отличие в передаче NIDD данных от передачи данных в IP стеке заключается в том, что устройству не выделяется IP-адрес и ему не нужно знать IP-адрес и порт сервера. Радиомодуль отправляет данные в сеть без какого-то определенного адресата, а сеть, в свою очередь, передаёт данные от устройства на платформу (Application Server) по подписке.</p><p>Из-за этого устройство выполняет меньше действий, чтобы передать данные. А значит уменьшается время нахождения приёмопередатчика в активном состоянии. И меньшему расходу батареи устройства.</p><p>С точки зрения сети использование NIDD также предпочтительнее, чем IP, так как устройства NIDD более эффективно используют ресурсы сети. Уменьшение общего объёма передаваемых данных, сокращение времени нахождения радиомодуля в активном состоянии позволяет обслужить больше устройств.</p><p>Вероятность успешной доставки информации тем выше чем меньше размер пакета, что особенно ярко выражается при низком уровне сигнала и/или большой зашумлённости канала.</p><p>Дополнительные преимущества даёт наличие сетевого элемента сети оператора — SCEF. Данный сетевой элемент реализует обмен данными с устройством посредством HTTP API и системы подписок. Проще говоря, платформа (Application Server) отправляет данные на устройство и получает данные с устройства, используя HTTP POST запросы на определенный URL.</p><p>Платформе не нужно хранить IP-адрес устройства и дополнительно идентифицировать его, получая запросы с различных IP-адресов, выделяемых устройству сетью. Коммуникация упрощается за счёт использования универсального идентификатора – external ID вида @, который присваивает устройству непосредственно разработчик.</p><p>Ещё одно важное преимущество NIDD — это большая безопасность в случае доступа извне: коммуникация с устройством из интернета возможна только через специальный узел (SCEF) и вероятность взлома устройства значительно понижается.</p><p>Кроме того, SCEF предоставляет дополнительные возможности для разработчика и пользователя платформы: отправка сообщения от платформы на группу устройств, отправка сообщения от устройства на несколько платформ, гарантированная доставка сообщений, буферизация сообщений, контроль состояния устройства (доступность) и другие возможности.</p><p>Пример АТ-команд для передачи данных по NIDD модуля Quectel BC68:</p><p>Сравнивая набор АТ-команд для отправки данных в CoAP/UDP и NIDD, можно увидеть, что реализовать NIDD проще с точки зрения управления радимодулем.</p><p>Для наглядности на рисунках 4.4 и 4.5 показано различие в архитектуре передачи данных IP и Non-IP для общего случая, когда платформа расположена вне инфраструктуры оператора связи.</p><p>Исследования специалистов МТС, также показали. значения нижних предельно допустимых уровней EPRE для трёх способов передачи данных по каналу «вверх» (Таблица 4.1). Значения EPRE действительны для гарантированной отправки пакета данных объемом 250 байт.</p><figure><img src="https://media.tproger.ru/uploads/2022/03/zZDbPOZ0c1A_waifu2x_photo_noise3_scale_tta_1-autoconverted-scaled.jpeg" alt="" /><figcaption>Рисунок 4.4 Информационные потоки при использовании протоколов IP</figcaption></figure><figure><img src="https://media.tproger.ru/uploads/2022/03/V7pmUfSq4yk_waifu2x_photo_noise3_scale_tta_1-autoconverted-scaled.jpeg" alt="" /><figcaption>Рисунок 4.5 Информационные потоки при использовании режима NIDD</figcaption></figure><figure><img src="https://media.tproger.ru/uploads/2022/03/Snimok-jekrana-2022-03-16-v-17.29.03-e1647441048697.png" alt="" /><figcaption>Таблица 4.1 Значения нижних предельно допустимых уровней EPRE для разных протоколов</figcaption></figure><h2>Элементы идентификации (SIM)</h2><p>SIM-элементы бывают нескольких видов. В виде привычной и знакомой всем SIM-карты: (U)SIM-карта М2М NB-IoT Trio. Это SIM-карта, совмещающая три форм-фактора 2FF-3FF-4FF, говоря проще, стандарт-микро-нано.</p><figure><img src="https://media.tproger.ru/uploads/2022/03/jALDbRXbbQo_waifu2x_photo_noise3_scale_tta_1-autoconverted.jpeg" alt="" /></figure><p>Рекомендуем применять в устройствах SIM элементы в форм-факторе SIM-чипа, полное название (U)SIM-чип М2М термо NB-IoT MFF2. По сравнению с SIM-картой чип обеспечивает более длительную и надёжную работу устройства за счёт устойчивости к перепадам температур, влажности, вибрациям и так далее. Воздействие суровых условий окружающей среды вместе с долгим сроком использования устройств IoT — от 10 лет — делает выбор в пользу SIM-чипа предпочтительным.</p><p>В качестве примеров устройств, работающих в сложных условиях, можно привести датчики проникновения в колодцы, контроллеры индивидуального управления уличным светом, датчики ТКО (мусора), устройства экомониторинга.</p><p>Стоит отметить, что технология eSIM (embedded SIM) реализована как в форм-факторе SIM-чипа, так и SIM-карты.</p><h2>Общая информация о радиомодулях</h2><p>Бывает так, что производитель устройств начинает работать с радиомодулем NB-IoT и сталкивается с недопониманием, «поведение» модуля не соответствует ожиданиям. Чаще всего это связано с тем, что разработчики не разобрались с режимами и настройками модуля по умолчанию. Ниже приведено несколько советов, что можно сделать для устранения проблем.</p><ul><li>Рекомендуется устанавливать в настройках конкретные частотные диапазоны (band), соответствующие сети оператора. Для сети NB-IoT МТС нужно выбирать band 3, 20, 8. Причём некоторые модули позволяют задать перечень в порядке приоритета поиска сети. Для сети МТС нужно использовать приоритет, как указано выше, то есть первый частотный диапазон в очереди на поиск сети band 3, второй band 20, третий band 8. Указанная настройка позволит ускорить поиск и регистрацию в сети при первом включении радиомодуля.</li><li>Мы столкнулись с тем, что многие модули по умолчанию активируют режим eDRX. Это также можно проверить и деактивировать этот режим, если он не нужен. Для совмещённых модулей, работающих в двух технологиях радиодоступа NB-IoT и 2G рекомендуется настроить логику по переключению между технологиями на уровне прошивки устройства, чтобы устройство само управляло включением той или иной технологии. При этом важно помнить, что пакет трафика актуальный для NB-IoT может быть израсходован быстрее при переходе в 2G в случае, если при этом также изменяется протокол транспортного уровня, включается TCP вместо UDP или NIDD.</li><li>Параметр APN необходимо настраивать в соответствии с инструкциями от оператора. При работе в сети NB-IoT МТС рекомендуется настраивать в модуле APN: iot для стандартного подключения, когда не используется выделенный клиентский APN. Желательно контролировать контекст, который активирует радиомодуль при включении, это может быть IPv4/IPv6 или NIDD, или оба типа одновременно. Не нужно активировать контекст IPv4/IPv6, если вы планируете работать только в NIDD, эта проверка дополнительно активирует обмен служебными данными между устройством и сетью.</li></ul><p>В целом на уровне устройства и на уровне прошивки управляющего контроллера желательно управлять состоянием и настройками радиомодуля и использовать соответствующие АТ-команды из мануала на модуль. Если проблему не удается решить стандартными средствами, стоит обратиться к поставщику радиомодуля, он расскажет, как включить debug-порт на модуле и выполнить более глубокую диагностику проблемы.</p><h2>Типичные ошибки разработчиков</h2><h3>Несоблюдение процедур создания/удаления сессий</h3><ul><li>Использование процедур Attach/создания сессии (Create PDN) при каждой новой передаче данных. Это существенно влияет на энергоэффективность устройства и повышает нагрузку на радиоресурсы.</li><li>Попытка регистрации в сети (Attach) и создания сессии (Create non-IP PDN) без предварительного создания подписки на устройство на SCEF. Это приводит к отказу в регистрации в сети МТС NB-IoT и существенно влияет на энергоэффективность устройства. Повышает нагрузку на радиоресурсы.</li></ul><h2>Список источников</h2><ol><li>ГОСТ Р 59026-2020 НАЦИОНАЛЬНЫЙ СТАНДАРТ РОССИЙСКОЙ ФЕДЕРАЦИИ Протокол беспроводной передачи данных на основе стандарта LTE в режиме NB-loT. Основные параметры.</li><li>Приказ № 113 от 29.03.2019 Министерства цифрового развития и массовых коммуникаций Российской Федерации Об утверждении Концепции построения и развития узкополосных беспроводных сетей связи «Интернета вещей» на территории Российской Федерации.</li><li>Приказ № 315 от 22.06.2018 О внесении изменений в Правила применения абонентских терминалов сетей подвижной радиотелефонной связи стандарта LTE и его модификации LTE-Advanced, утвержденные приказом Министерства связи и массовых коммуникаций Российской Федерации от 06.06.2011 № 128.</li><li>Протокол принятых решений Государственной комиссии по радиочастотам (ГКРЧ) от 28.12.2017.</li><li>GSMA white paper 3GPP Low Power Wide Area Technologies.</li><li>ETSI TR 103 055 Electromagnetic compatibility and Radio spectrum Matters (ERM); System Reference document (Srdoc): Spectrum Requirements for Short Range Device, Metropolitan Mesh Machine Networks (M3N) and Smart Metering (SM) applications.</li></ol>]]></content:encoded>
    </item>
    <item>
      <title>WebSocket: особенности протокола и пример использования на React</title>
      <link>https://tproger.ru/articles/websocket-osobennosti-protokola-i-primer-ispolzovanija-na-react</link>
      <comments>https://tproger.ru/articles/websocket-osobennosti-protokola-i-primer-ispolzovanija-na-react?scrollTo=tproger-comments</comments>
      <dc:creator><![CDATA[София Биткова]]></dc:creator>
      <guid isPermaLink="true">https://tproger.ru/articles/websocket-osobennosti-protokola-i-primer-ispolzovanija-na-react</guid>
      <description><![CDATA[<p>Как устроен протокол WebSocket: установка соединения через HTTP-запрос, преимущества и недостатки, сферы применения и пример React-компонента.</p><p>— Читать дальше «<a rel="follow" href="https://tproger.ru/articles/websocket-osobennosti-protokola-i-primer-ispolzovanija-na-react">WebSocket: особенности протокола и пример использования на React</a>»</p>]]></description>
      <category><![CDATA[Сетевые протоколы]]></category>
      <category><![CDATA[Гостевая публикация]]></category>
      <category><![CDATA[Статьи]]></category>
      <slash:comments>0</slash:comments>
      <pubDate>Thu, 09 Sep 2021 13:58:02 GMT</pubDate>
      <content:encoded><![CDATA[<p>Интернет — основа сети, техническая инфраструктура, благодаря которой и существует World Wide Web, или Всемирная паутина. По своей сути интернет — гигантская сеть компьютеров, которые могут взаимодействовать друг с другом.</p><p>Принципы взаимодействия и способы передачи данных между этими компьютерами определяются сетевыми протоколами. Иными словами, сетевой протокол — это набор правил и действий, который регулирует соединение и обмен данными между двумя и более включенными в сеть устройствами.</p><p>Наиболее известные:</p><ul><li><b>HTTP</b> (Hyper Text Transfer Protocol) — протокол передачи гипертекста, используется при пересылке веб-страниц между компьютерами;</li><li><b>FTP</b> (File Transfer Protocol) — протокол передачи файлов со специального файлового сервера на компьютер пользователя;</li><li><b>POP3</b> (Post Office Protocol) — протокол почтового соединения получения клиентской почты. Серверы POP обрабатывают входящую почту, а протокол POP необходим для обработки запросов на получение почты от пользователей;</li><li><b>SMTP</b> (Simple Mail Transfer Protocol) — протокол, который задает набор правил для передачи электронной почты в сети. Сервер SMTP возвращает ответ при отправке;</li><li><b>Telnet</b> — протокол удаленного доступа, дает возможность пользователю работать на любой ЭВМ, находящейся с ним в одной сети.</li></ul><p>В этой статье я расскажу про популярный в наше время протокол — <b>WebSocket</b>. Он используется, как правило, при разработке приложений, в которых содержимое обновляется с высокой частотой или в реальном времени.</p><h2>Описание</h2><p>WebSocket обеспечивает обмен данными между браузером и сервером через постоянное соединение. Это двунаправленный, полнодуплексный протокол, который используется в сценарии взаимодействия «Клиент-сервер». Он начинается с <b>ws:// или wss://</b> в случае безопасного соединения.</p><p>Принцип веб-сокета — соединение между клиентом и сервером остается активным до тех пор, пока оно не будет разорвано любой из сторон.</p><p>Соединение WebSocket устанавливается посредством HTTP-запроса:</p><ul><li>клиент, который поддерживает веб-сокеты и хочет установить постоянное соединение, отправляет HTTP-запрос, содержащий набор необходимых заголовков (headers);</li><li>в ответ он должен получить ответ сервера: HTTP 101 Switching Protocols. Ответ 101 указывает, что сервер переключается на протокол, запрошенный клиентом в заголовке запроса на обновление;</li><li>клиент получает ответ сервера, и WebSocket-соединение открывается для начала обмена данными.</li></ul><figure><img src="https://media.tproger.ru/uploads/2021/09/Picture3.jpg" alt="" /></figure><h2>Особенности протокола</h2><p><b>О плюсах WebSocket:</b></p><ol><li>Поддерживает двусторонний обмен данными: может одновременно получать и передавать информацию.</li><li>Отправляет данные быстрее, чем HTTP.</li><li>Кроссплатформенная совместимость. Для сервера веб-сокета не имеет значения, кто выступает в качестве клиента: веб-сайт или мобильные приложение.</li><li>HTTP требует до 2000 байтов накладных расходов, тогда как веб-сокет — всего 2 байта.</li><li>Кратковременное отсутствие связи не прерывает соединение. Если интернет будет работать нестабильно, клиенту и серверу не придётся заново устанавливать WebSocket-соединения, они смогут продолжить обмениваться данными в обычном режиме, пока связь не восстановится.</li><li>Протокол позволяет работать в асинхронном режиме вместо привычной для веба работы «Запрос-ответ». Так, у клиента и сервера равноправные роли в процессе обмена данными, и они действуют автономно.</li></ol><p><b>О минусах:</b></p><ol><li>Высокие требования к серверному оборудованию.</li><li>Молчаливый отвал соединения. При отправке пакета в WebSocket вы не узнаете о том, доставлен ли он или нет, пока не пройдёт время таймаута — по умолчанию 75 секунд. Зачастую приходится вводить дополнительные механизмы общения между клиентом и сервером, чтобы быстро понять, отвечает ли клиент.</li><li>Смена сети клиентом. Бывают ситуации, когда клиент находится в дороге и меняется сеть, в которой находится устройство. В таких случаях сервер ничего не знает о смене адреса, если клиент не закрыл соединение при переподключении к другой сети.</li></ol><h2>Где применяется WebSocket</h2><p>WebSocket может быть очень полезен для повышения скорости работы сайта. Но не стоит использовать этот протокол в случаях, когда мы хотим получать старые или неизменные данные, или необходимо загрузить данные лишь один раз. В таких кейсах стоит применить протокол HTTP.</p><p>Где используется WebSocket:</p><ul><li>трейдерские приложения;</li><li>игровые приложения;</li><li>чаты;</li><li>социальные сети;</li><li>управление IoT.</li></ul><p>WebSocket подходит для этих проектов лучше всего, так как в них клиент может не выполнять на своей стороне никаких вычислений, а лишь получать\передавать данные на сервер.</p><p>Легкость протокола позволяет с высокой частотой отправлять или получать информацию. Например, моментально отображать обновления в онлайн-игре, когда соперник выполнил определенные действия, или загружать данные с наименьшей задержкой на трейдерской платформе, что будет положительно сказываться на результате торгов.</p><h3>Пример из практики</h3><p>В качестве примера покажу React-component, работающий с веб-сокетом. Его суть проста — отображать текущее состояние соединения и функциональность принудительного закрытия и открытия соединения.</p><p>Сервер веб-сокета — ресурс wss://ws.kraken.com/, который с определённой периодичностью отправляет клиентам сообщение о том, что сервер работает.</p><figure><img src="https://media.tproger.ru/uploads/2021/09/componentj-autoconverted.jpeg" alt="" /></figure><p>Использование протокола WebSocket в React-приложении выглядит так:</p><p>Протокол WebSocket позволяет быстро и безопасно пересылать данные на любой домен, помогает увеличить скорость сайта или приложения. Он поддерживается всеми популярными браузерами: Google Chrome, Apple Safari, Mozilla Firefox, Opera и Internet Explorer, что делает его универсальным.</p>]]></content:encoded>
    </item>
    <item>
      <title>Сможете ли вы запустить, вырастить и не уронить сайт? Игра про DNS от Tproger и NGENIX</title>
      <link>https://tproger.ru/interactive/narrativ-ot-tipichnogo-programmista-i-ngenix</link>
      <comments>https://tproger.ru/interactive/narrativ-ot-tipichnogo-programmista-i-ngenix?scrollTo=tproger-comments</comments>
      <dc:creator><![CDATA[Александр Ланский]]></dc:creator>
      <guid isPermaLink="true">https://tproger.ru/interactive/narrativ-ot-tipichnogo-programmista-i-ngenix</guid>
      <description><![CDATA[<p>В этой игре вам предстоит использовать свои познания в DNS для запуска нового и быстрорастущего маркетплейса.</p><p>— Читать дальше «<a rel="follow" href="https://tproger.ru/interactive/narrativ-ot-tipichnogo-programmista-i-ngenix">Сможете ли вы запустить, вырастить и не уронить сайт? Игра про DNS от Tproger и NGENIX</a>»</p>]]></description>
      <category><![CDATA[Сетевые протоколы]]></category>
      <category><![CDATA[Системное администрирование]]></category>
      <category><![CDATA[Игры]]></category>
      <slash:comments>0</slash:comments>
      <pubDate>Wed, 17 Mar 2021 09:55:11 GMT</pubDate>
      <content:encoded><![CDATA[<p>Технология DNS стара как мир, но это адресная книга интернета. Чтобы сайт был доступен для пользователей, не падал под большой нагрузкой и мог противостоять ряду сложных атак, необходимо правильно «готовить» DNS.</p><p>Сыграйте за нового сотрудника, которому предстоит запустить сайт маркетплейса и справиться с его растущей популярностью.</p>]]></content:encoded>
    </item>
    <item>
      <title>Телеком-дайджест от Bercut</title>
      <link>https://tproger.ru/digest/telekom-dajdzhest-ot-bercut-dec-2020</link>
      <comments>https://tproger.ru/digest/telekom-dajdzhest-ot-bercut-dec-2020?scrollTo=tproger-comments</comments>
      <dc:creator><![CDATA[Типичный программист]]></dc:creator>
      <guid isPermaLink="true">https://tproger.ru/digest/telekom-dajdzhest-ot-bercut-dec-2020</guid>
      <description><![CDATA[<p>Edge computing, 6G, интернет вещей — новости из этих (и не только) областей читайте в дайджесте. 21 янв 2021</p><p>— Читать дальше «<a rel="follow" href="https://tproger.ru/digest/telekom-dajdzhest-ot-bercut-dec-2020">Телеком-дайджест от Bercut</a>»</p>]]></description>
      <category><![CDATA[Сетевые протоколы]]></category>
      <category><![CDATA[Интернет вещей]]></category>
      <category><![CDATA[Подборки]]></category>
      <slash:comments>0</slash:comments>
      <pubDate>Thu, 21 Jan 2021 08:38:30 GMT</pubDate>
      <content:encoded><![CDATA[<p>Предлагаем вам небольшую подборку для специалистов из области телеком от команды <a href="https://www.bercut.com/">Bercut</a>.</p><h2>IoT</h2><p>IoT развивается в России. У нас подготовили <a href="https://www.cnews.ru/news/top/2020-12-28_sozdan_gost_protokola_interneta">проект ГОСТ</a> Р в области использования новой технологии беспроводной передачи данных. Протокол NB-Fi — технология класса LPWAN (беспроводные технологии передачи небольших по объему данных на дальние расстояния) для распределенных сетей телеметрии, межмашинного взаимодействия и интернета вещей.</p><h2>Edge computing</h2><p>Verizon Business <a href="https://telecoms.com/507973/verizon-deloitte-to-co-develop-edge-computing-apps/">заключила партнерское соглашение</a> с Deloitte с целью стимулировать развертывание и внедрение услуг мобильных периферийных вычислений (MEC) для предприятий. Для нужд производственного сектора Verizon и Deloitte совместно разрабатывают интеллектуальное производственное решение, которое будет использовать компьютерное зрение и обнаружение на основе датчиков — в сочетании с MEC — для выявления и прогнозирования дефектов качества на сборочной линии и автоматического оповещения персонала в реальном времени.</p><p><a href="https://www.fiercetelecom.com/telecom/lumen-rolls-out-bare-metal-as-a-service-at-cloud-edge">Lumen развернул «metal-as-a-service»</a> на своих граничных вычислительных узлах. В прошлом компания Lumen создавала для своих клиентов частные пользовательские вычислительные конфигурации bare metal. Теперь она перенесла bare metal на границу облака. С помощью службы компании могут развертывать приложения и рабочие нагрузки на границе облака через «metal-as-a-service» на платформе Lumen. Перемещение приложений и сервисов обеспечит низкую задержку, поскольку им больше не нужно возвращаться в центры обработки данных и обратно к пользователям.</p><h2>Technologies</h2><p><a href="https://techxplore.com/news/2020-12-wi-fi-technology-fibre-optic-like-industry.html">Предложена технология Wi-Fi</a> с оптоволоконной производительностью для Industry 4.0. В рамках исследовательского проекта, опубликованного в журнале IEEE Transactions on Wireless Communications, была создана первая параметризация модели распространения сигнала миллиметрового диапазона, беспроводной технологии, способной передавать огромное количество данных в секунду в промышленной среде. По словам исследователей, эта новая модель — первый шаг к пониманию того, как этот тип сигнала ведет себя на промышленном предприятии, и может оказать значительное влияние на развитие Industry 4.0.</p><p>Verizon <a href="https://www.telecompetitor.com/as-verizon-expands-5g-markets-nationwide-company-outlines-underlying-technology/">запустил</a> 5G на новых рынках со своей услугой Nationwide 5G. Сервис развернут в диапазоне миллиметровых волн, где компания обеспечивает скорости, достигающие гигабит в секунду. Обратной стороной использования спектра миллиметровых волн является то, что сигналы в этом диапазоне не распространяются далеко; следовательно, доступность только на некоторых новых рынках. Как Verizon объясняет в пресс-релизе, компания использует динамическое совместное использование спектра (DSS), чтобы позволить 5G сосуществовать с LTE в той же полосе спектра. Результирующие скорости не особо впечатляют и в релизе не обсуждаются.</p><p>O2 <a href="https://telecoms.com/507789/o2-uk-wants-to-use-openran-to-boost-indoor-connectivity/">протестировала</a> технологию OpenRAN от Vilicom, чтобы удешевить предоставление корпоративных услуг 4G и 5G внутри помещений. В O2 заявили, что виртуализированная платформа снижает стоимость и требования к пространству для сотовых сетей внутри помещений, которые, по его мнению, станут критически важными для UK PLC после коронавируса.</p><p>Компания Colt Technology Services <a href="https://www.fiercetelecom.com/telecom/colt-launches-sd-wan-2-0-to-meet-enterprises-evolving-needs">обновила</a> свой сервис SD-WAN. Пакет оптимизации WAN включает в себя возможности клонирования пакетов и прямого исправления ошибок (FEC) для повышения скорости и надежности критически важных приложений в корпоративных сетях. Что касается SASE, Colt построил трехуровневую защиту для клиентов WAN, LAN и DMZ. SD-WAN 2.0 Colt также поддерживает встроенную защиту Dynamic NAT и DDoS.</p><p>Исследования, проведенные Nokia и Telefónica, <a href="https://telecomstechnews.com/news/2020/dec/02/nokia-5g-networks-90-percent-more-energy-efficient/">показали</a>, что сети 5G на 90 процентов более энергоэффективны, чем 4G. Исследование проводилось в течение трех месяцев и касалось энергопотребления 5G RAN (сети радиодоступа) Telefónica.</p><h2>Clouds, data-centers</h2><p>Google Cloud объявил, что <a href="https://www.fiercetelecom.com/telecom/google-cloud-broadens-its-global-reach-three-new-regions">запустил</a> дата-центры в трех новых регионах: Германии, Саудовской Аравии и Чили. Отчасти из-за пандемии Covid-19 поставщики гипермасштабируемых облачных сервисов, такие как Amazon Web Services, Microsoft Azure и Google Cloud, продолжили в этом году добавлять больше центров обработки данных в регионах, чтобы удовлетворить спрос на перемещение рабочих нагрузок и приложений в гибридное облако в рамках цифровой трансформации бизнеса.</p><p>Bloomberg сообщил, что в Microsoft <a href="https://telecoms.com/507954/microsoft-starts-developing-own-chips-for-datacentres-report/">начали разрабатывать</a> собственные процессоры для использования в облачных системах и компьютерах Surface, снижая зависимость от Intel, с использованием архитектур ARM. Основное целевое направление бизнеса, которое необходимо поддерживать — это центры обработки данных, на которых работают системы облачных вычислений Microsoft, включая Azure для бизнеса и OneDrive для потребителей</p><p>Согласно <a href="https://www.fiercetelecom.com/telecom/report-cloud-providers-drive-jump-q3-data-center-spend-while-enterprise-declines">отчету</a>, мировые расходы на оборудование и программное обеспечение центров обработки данных выросли на 2% по сравнению с прошлым годом благодаря расходам облачных провайдеров.</p><p>Последний месяц 2020 года был полон новостей о коллаборациях в части облачных сотрудничеств. В России ВТБ стал партнером «Ростелекома» по развитию облачного бизнеса. Банк <a href="https://www.cnews.ru/news/top/2020-12-24_vtb_vlozhit_35_milliardov_v">вложит</a> 35 млрд руб. в компанию «РТК-ЦОД» — облачную «дочку» «Ростелекома», получив взамен долю в ней размером 44,8%. В течение трех лет «РТК-ЦОД» может выйти на IPO.</p><p>Deutsche Telekom<a href="https://telecoms.com/507843/deutsche-telekom-and-microsoft-ink-seven-year-cloud-deal/"> объявил</a> о расширении своего стратегического партнерства с Microsoft. В соответствии с соглашением Deutsche Telekom также перейдет на Microsoft Azure в рамках своей текущей стратегии по переносу большинства внутренних ИТ-рабочих нагрузок в общедоступное облако к 2025 году.</p><p>IBM <a href="https://www.fiercetelecom.com/telecom/ibm-feeds-its-hybrid-cloud-ambitions-deal-to-buy-nordcloud">заключил сделку</a> по покупке европейского облачного стартапа Nordcloud. Финансовые условия сделки, завершение которой планируется в первом квартале следующего года, не разглашаются.</p><p>А Amazon Web Services ухватил сразу два крупных контракта в декабре:</p><p>T-Systems и AWS <a href="https://www.fiercetelecom.com/telecom/aws-corrals-a-multi-year-agreement-t-systems-for-cloud-migrations">объявили</a> о многолетнем стратегическом соглашении о сотрудничестве, чтобы обеспечить более быструю миграцию приложений в облако, решения для вычислений и хранения, а также безопасность облачных решений T-Systems</p><p>Twitter <a href="https://www.fiercetelecom.com/telecom/twitter-jumps-public-cloud-aws-to-strengthen-its-user-feeds">выбрал</a> Amazon Web Services для предоставления своих услуг в режиме реального времени. Twitter использует свои собственные центры обработки данных на протяжении многих лет, но многолетняя сделка дает Twitter доступ к глобальной облачной инфраструктуре AWS для выполнения SLA по качеству.</p><h2>6G</h2><p>Nokia <a href="https://telecomstechnews.com/news/2020/dec/07/nokia-lead-eu-hexa-x-6g-research-project/">возглавит</a> исследовательский проект Европейской комиссии по 6G – Hexa-X. Проект получил финансирование в рамках программы исследований и инноваций Horizon 2020 и направлен на объединение заинтересованных сторон со всей Европы, чтобы заложить основы того, чем однажды станет 6G.</p><h2>Исследования и прогнозы</h2><p>В конце года все традиционно подводят итоги и дают свои прогнозы на следующий год. Иностранные и отечественны ресурсы дали свои прогнозы развития телеком и медиа индустрии на следующий год:</p><ul><li>Deloitte <a href="https://www2.deloitte.com/content/dam/Deloitte/us/Documents/technology-media-telecommunications/us-tmt-2021-outlook-for-the-us-tme-industry.pdf">предлагает</a> концентрироваться на потребностях клиентов за счет более тонкого подхода к взаимодействию с ними, на конвергенции и преобразовании развлекательных программ с помощью новых предложений услуг и пакетов развлечений для гибкости бизнеса и репозиционировании беспроводных сетей с помощью новых продуктов, услуг и бизнес-моделей для их монетизации.</li><li>Российское агентство CNews Analytics провело <a href="https://www.cnews.ru/reviews/cnews_trendy_2021">опрос</a> среди своих читателей. Как и в ходе прошлогоднего опроса, наибольшие надежды возлагаются на аналитику больших данных, искусственный интеллект и облачные решения. В некоторых отраслях в топ по востребованности также вошли интернет вещей, сети пятого поколения и автономные системы.</li><li><a href="https://telecoms.com/507980/what-is-lying-in-wait-for-telecoms-in-2021/">Исследование</a> Omdia ICT Enterprise Insights Survey предполагает, что большинство поставщиков услуг увеличат свои расходы на инструменты искусственного интеллекта в 2021 году. Более половины планируют увеличить свои расходы на системы взаимодействия с клиентами (CRM, мобильные приложения и т. д.). Архитектура на основе микросервисов является необходимым условием для большинства покупок нового программного обеспечения, как и возможность развертывания программного обеспечения в общедоступном облаке.</li><li>Ресурс Totaltele.com <a href="https://www.totaltele.com/508202/2021-predictions-Can-the-telecoms-sector-dare-to-dream-of-a-world-beyond-Covid">видит</a> три ключевых направления, в которых они ожидают значительного движения в 2021 году: развитие инфраструктуры, развитие промышленных сетей 5G и частных сетей, развитие Open RAN.</li></ul><p>Пандемия сделала 2020 год годом стремления к цифровизации. Всем стало очевидно и понятно, что многие сферы жизни и деятельности уходят в онлайн, меняется клиентское поведение. Неудивительна в этом контексте статья о прогнозе роста расходов на цифровую трансформацию: <a href="https://telecoms.com/507803/digital-transformation-spending-forecast-to-skyrocket-to-6-8-trillion/">ожидается</a>, что глобальные расходы на цифровую трансформацию (DX) в период с 2020 по 2023 год составят 6,8 триллиона долларов, поскольку бизнес адаптируется к «новым нормам». Эта оценка была получена от IDC, которая заявила на этой неделе, что к 2022 году ожидается оцифровка 65% мирового ВВП.</p><h2>Контент и продукты</h2><p>В разных направлениях в США двигаются AT&amp;T и Verizon в части своих взглядов на развитие контента. AT&amp;T <a href="https://telecoms.com/507822/att-makes-money-from-content-by-flogging-assets/">согласилась</a> продать Sony свой аниме-бизнес Crunchyroll примерно за 1,2 миллиарда долларов США и, как сообщается, находится на последней стадии процесса продажи DirecTV, которая может стоить около 15 миллиардов долларов при том, что AT&amp;T заплатила за DirecTV 49 миллиардов долларов в 2015 году.</p><p>Между тем Verizon <a href="https://www.telecompetitor.com/verizon-continues-streaming-tv-strategy-with-free-discovery-streaming-offer/">продолжает развивать</a> потоковое ТВ с предложением Free Discovery + Streaming. Запустив Verizon Discovery+ компания предоставит потоковые сервисы бесплатно в течение длительного периода, продолжив традицию подобных решений. Услуга будет доступна новым клиентам на сверхширокополосных мобильных устройствах Verizon 5G, домашнем Интернете 5G и Fios в течение года.</p><p>Toyota и AWS <a href="https://telecoms.com/opinion/mobility-as-platform-services-are-operators-the-missing-piece/">объявили</a> о своем партнерстве для расширения платформы мобильных сервисов Toyota. Платформа представляет собой «экосистему, которая поможет инженерам Toyota разрабатывать, развертывать и управлять мобильными сервисами нового поколения на основе данных для обеспечения безопасности водителей и пассажиров, безопасности, комфорта и удобства в транспортных средствах Toyota, подключенных к облаку». Речь идет о сборе, управлении и использовании данных для помощи в проектировании и разработке автомобилей Toyota и для предложения дополнительных услуг, таких как совместное использование автомобилей и аренда с полным спектром услуг, а также уведомления о проактивном техническом обслуживании автомобилей.</p>]]></content:encoded>
    </item>
    <item>
      <title>Телеком-дайджест от Bercut</title>
      <link>https://tproger.ru/digest/telekom-dajdzhest-ot-bercut</link>
      <comments>https://tproger.ru/digest/telekom-dajdzhest-ot-bercut?scrollTo=tproger-comments</comments>
      <dc:creator><![CDATA[Типичный программист]]></dc:creator>
      <guid isPermaLink="true">https://tproger.ru/digest/telekom-dajdzhest-ot-bercut</guid>
      <description><![CDATA[<p>Облака, 5G, интернет вещей — новости из этих (и не только) областей читайте в этом дайджесте. 18 дек 2020</p><p>— Читать дальше «<a rel="follow" href="https://tproger.ru/digest/telekom-dajdzhest-ot-bercut">Телеком-дайджест от Bercut</a>»</p>]]></description>
      <category><![CDATA[Сетевые протоколы]]></category>
      <category><![CDATA[Интернет вещей]]></category>
      <category><![CDATA[Подборки]]></category>
      <slash:comments>0</slash:comments>
      <pubDate>Fri, 18 Dec 2020 13:03:34 GMT</pubDate>
      <content:encoded><![CDATA[<p>Предлагаем вам небольшую подборку для специалистов из области телеком от команды <a href="https://www.bercut.com/">Bercut</a>.</p><h2>BSS</h2><p>Amdocs <a href="https://www.fiercetelecom.com/telecom/amdocs-collaborates-aws-to-deliver-cloud-native-bss-offerings-to-csps">заключил соглашение</a> с Amazon Web Services (AWS) о поставке совместных интегрированных облачных BSS операторам связи. Интеграция позволит предложить операторам доступ к портфелю цифровых услуг, которые сократят время выхода оператора на рынок. Коронавирус ускорил цифровую трансформацию компаний, процессы и приложения начали быстрее перемещаться в облака для организации удаленного доступа. Как показывает опыт первых волн, кто успевает первым, зарабатывает больше.</p><h2>5G</h2><p>Orange к концу 2020 года <a href="https://www.fiercetelecom.com/telecom/amdocs-collaborates-aws-to-deliver-cloud-native-bss-offerings-to-csps">планирует</a> обеспечить 80-процентное покрытие outdoor 5G в 160 муниципалитетах Франции. Оператор уже запустил тарифные планы, включающие трафик 5G. Тарифы начинаются с 30 евро в месяц за 70 ГБ, а за 80 евро в месяц клиенты могут получить безлимитный интернет во всех сетях, включая сети 5G.</p><p>В <a href="https://telecomstechnews.com/news/2020/nov/17/ericsson-qualcomm-5g-deliver-14-8-billion-growth-industries/">отчете</a>, посвященном будущему британского телекома и подготовленном Ericsson и Qualcomm, предполагается, что 5G обеспечит экономический рост почти в 15 миллиардов фунтов стерлингов в трех ключевых отраслях: обрабатывающая промышленность, сельское хозяйство и строительство. Ставка в исследовании делается на:</p><ul><li>датчики, которые позволят в реальном времени отслеживать фабрики, посевы и строительные площадки;</li><li>автономные и дистанционно управляемые автомобили;</li><li>AR для повышения производительности и обучения;</li><li>совместную робототехнику для ремонта и обследования строительных площадок на предмет безопасности.</li></ul><p>Vodafone в своих отчетах <a href="https://telecomstechnews.com/news/2020/nov/11/vodafone-clear-majority-5g-used-transform-healthcare/">подчеркивает</a> преимущества 5G и Интернета вещей в области преобразования здравоохранения. Пока картинка, представленная в отчете, больше похожа на фантастику, но темпы развития технологий говорят, что скоро подобные кейсы будут реальностью:</p><ul><li>машины скорой помощи, оснащенные 5G, могут связываться с умными светофорами, чтобы обеспечить безопасное и беспрепятственное движение;</li><li>возможность получить операцию у специалиста, независимо от того, находится ли он в той же больнице или на другом конце света (удаленная хирургия);</li><li>дистанционные медицинские консультации (не телемедицина, а полноценное онлайн посещение профессионала).</li></ul><p>Интересное мнение относительно конкуренции edge computing и облаков в том виде, в котором они существуют сейчас, представлено в <a href="https://telecoms.com/opinion/edge-computing-and-5g-power-telco-and-cloud-convergence/">исследовании</a>: edge computing быстро превращается в новое облако. По данным Gartner, к 2022 году более 50% корпоративных данных будет создаваться и обрабатываться вне центра обработки данных или облака, что представляет собой серьезную проблему для гигантов облачных вычислений, таких как Amazon Web Services и Microsoft Azure, чьи сервисы не предназначены для работы в массово распределенных и удаленных периферийных средах. Сценарии использования edge computing и новые архитектурные модели на их основе развиваются очень быстро, формируя новый тренд использования сетей 5G. Есть подозрения, что Amazon и Microsoft купят успешные стартапы, развивающие edge computing, но сам факт быстрых смен технических парадигм интересный.</p><p>Сразу два оператора в ноябре продемонстрировали возможности использования 5G и AR в медиа-маркетинге: Verizon <a href="https://www.telecompetitor.com/verizon-offers-augmented-reality-music-performance-to-demonstrate-5g-possibilities/">сделал</a> музыкальное сопровождение с дополненной реальностью, а EE <a href="https://telecomstechnews.com/news/2020/nov/13/ee-iphone-12-pro-ar-5g-early-capabilities/">запустил</a> кампанию с легендой Голливуда Кевином Бэйконом и поп-певицей Ритой Ора.</p><p>IBM <a href="https://www.fiercetelecom.com/telecom/big-blue-reaches-for-hybrid-cloud-to-target-5g-telcos-signs-up-intel-and-samsung-as">запустил</a> новую гибридную облачную платформу, которая делает ставку на 5G. IBM Cloud для операторов похожа на платформу, анонсированную VMware в сентябре. Она также нацелена на экосистему телекоммуникационных сетей 5G. По той же схеме, что и комбинированная платформа VMware, IBM Cloud for Telecommunications объединяет и переупаковывает различные технологии IBM и Red Hat.</p><h2>Clouds</h2><p>BT <a href="https://www.fiercetelecom.com/telecom/bt-launches-software-defined-network-services-vmware-s-sd-wan-first-offering">объявил</a> о запуске нового поколения управляемых сервисов, оптимизированных для облака, с предложением, основанным на технологии VMware SD-WAN. Традиционные глобальные сети (WAN) требовали установки специального оборудования проприетарного производителя на каждом объекте заказчика. Новая управляемая услуга BT основана на стандартном оборудовании, которое способно поддерживать выбор программных сетевых решений от разных поставщиков.</p><p>Еще одна интересная новость об Orange. Французский оператор <a href="https://www.fiercetelecom.com/telecom/orange-business-services-embraces-aws-to-accelerate-cloud-innovation">объявил</a> о сотрудничестве с Amazon Web Services с целью ускорения перехода клиентов в облако. В июле Orange заявил о заключении стратегического партнерства с Google Cloud, чтобы вместе строить телеком ИТ-инфраструктуру и проектировать облачные сервисы. Плюс к этому Orange также поддерживает отношения с Microsoft Azure для внутреннего использования ПО Microsoft. Оператор трансформируется по полной. Используя AWS, Azure и Google Cloud, Orange выстраивает обширный, независимый от поставщика, мультиоблачный подход для удовлетворения всех потребностей клиентов на всех этапах их перевода в облако.</p><p>Возможно, Orange выстраивает свою стратегию в области облачной инфраструктуры, потому что разделяет мнение ABI Research. Отчет последних показал, что глобальный рынок облачных услуг для телекоммуникационных компаний будет стремительно расти в течение следующих пяти лет. В настоящее время мировая рыночная стоимость облачных услуг составляет около 8,7 млрд долларов, а к 2025 году эта сумма увеличится более чем в три раза и <a href="https://www.totaltele.com/508004/Telco-cloud-revenue-to-soar-to-29bn-by-2025">достигнет</a> 29,3 млрд долларов. Согласно модели ABI Research, глобальный рынок облачных услуг для телекоммуникационных компаний будет относительно поровну разделен по всему миру: 10 миллиардов долларов в Северной Америке, 9 миллиардов долларов в Азиатско-Тихоокеанском регионе и 8,2 миллиарда долларов в Европе. ABI Research связывает этот быстрый рост в первую очередь с инвестициями в облачную инфраструктуру в таких областях, как VNF, MANO и CNF.</p><h2>В мире</h2><p>Война стандартов. На рынке промышленного IoT LoRaWAN <a href="https://telecoms.com/507521/the-lorawan-renaissance-continues-as-here-and-actility-launch-iot-tracking-platform/">одолевает</a> NB-IoT.</p><p>Rakuten, разрушитель японского рынка телекома, показал неутешительные для себя итоги третьего квартала. Агрессивное увеличение Capex в Rakuten Mobile привело к тому, что группа понесла операционные убытки (и снизила стоимость акций). Операционный убыток Rakuten Mobile в размере 57,9 млрд иен свел на нет операционную прибыль, полученную по двум другим направлениям бизнеса, и привел к операционному убытку в размере 28,7 млрд иен.</p><p>Абонентская база тоже не растет огромными темпами. 1.6 миллиона клиентов – ничто на японском рынке. Даже самый маленький оператор большой тройки японского рынка имеет 23 миллиона клиентов. Частично проблема кроется в покрытии оператора. Сеть Rakuten за пределами Токио, Осаки и Нагои мала, и клиенты вынуждены использовать сети KDDI.</p><p>Интересный опыт, в котором каменный цветок пока не выходит. Хорошо, что в группе компаний Rakuten деньги есть и японский маркетплейс, пожелавший выйти на рынок телекома, пока может себе <a href="https://www.totaltele.com/507870/Rakuten-Mobile-accelerating-rollout-after-lacklustre-subscriber-growth">позволить</a> работать в минус.</p><p>В той же Японии Subaru и Softbank <a href="https://telecoms.com/507636/softbank-and-subaru-merge-cars-onto-a-highway-using-c-v2x/">объявили</a>, что провели успешные испытания связи 5G для всех транспортных средств (C-V2X), в ходе которых автоматизированные автомобили выезжали на шоссе и сливались с движением. Летом на испытательном полигоне Subaru Bifuka были смоделированы два сценария: в первом было свободное движение на главном шоссе; второй имитировал пробку. Автомобиль подключался через 5G к серверу, где приложение предсказывало вероятность его столкновения с автомобилями на главной дороге. Чтобы предотвратить аварию, приложение передавало команды предупреждения и замедления, позволяя подключенному автомобилю рассчитать правильную скорость, которая позволила бы ему безопасно выехать на главную магистраль.</p><p>Пока все операторы стремятся наращивать ARPU своих клиентов с помощью дополнительных сервисов, в том числе за счет телевидения, AT&amp;T <a href="https://telecoms.com/507264/att-edges-closer-to-tv-asset-stake-sale/">решил</a> продать свои медиактивы. Долги висят, а актив по какой-то причине проигрывает конкурентам на рынке видеостриминга. Тем более странно это смотрится на фоне <a href="https://www.telecompetitor.com/parks-finds-increase-in-customers-with-two-video-streaming-subscriptions/">исследования</a> Parks, в котором говорится о том, что количество людей с двумя подписками ОТТ-видеосервисов в США растет.</p><h2>В России</h2><p>Бум eSim: <a href="https://www.cnews.ru/news/line/2020-11-18_sbermobajl_zapustil_esim">Сбермобайл</a>, <a href="https://www.cnews.ru/news/line/2020-11-05_mts_zapustila_distantsionnoe">МТС</a> и <a href="https://telecom.cnews.ru/news/line/2020-11-27_vtb_mobajl_zapustil_esim">ВТБ-Мобайл</a> заявили в ноябре о запуске виртуальной SIM-карты.</p>]]></content:encoded>
    </item>
    <item>
      <title>Протоколы передачи данных: что это, какие бывают и в чём различия?</title>
      <link>https://tproger.ru/explain/protokoly-peredachi-dannyh-chto-jeto-kakie-byvajut-i-v-chjom-razlichija</link>
      <comments>https://tproger.ru/explain/protokoly-peredachi-dannyh-chto-jeto-kakie-byvajut-i-v-chjom-razlichija?scrollTo=tproger-comments</comments>
      <dc:creator><![CDATA[Александр Ланский]]></dc:creator>
      <guid isPermaLink="true">https://tproger.ru/explain/protokoly-peredachi-dannyh-chto-jeto-kakie-byvajut-i-v-chjom-razlichija</guid>
      <description><![CDATA[<p>Сетевые протоколы задают правила обмена данными в интернете. Разбор основных из них, начиная с IP — ненадёжного протокола без установки соединения.</p><p>— Читать дальше «<a rel="follow" href="https://tproger.ru/explain/protokoly-peredachi-dannyh-chto-jeto-kakie-byvajut-i-v-chjom-razlichija">Протоколы передачи данных: что это, какие бывают и в чём различия?</a>»</p>]]></description>
      <category><![CDATA[Интернет]]></category>
      <category><![CDATA[Сетевые протоколы]]></category>
      <category><![CDATA[Коротко о главном]]></category>
      <slash:comments>0</slash:comments>
      <pubDate>Wed, 09 Dec 2020 08:33:01 GMT</pubDate>
      <content:encoded><![CDATA[<p>Интернет очень большой и комплексный. Но на базовом уровне это всего лишь связь между различными компьютерами (не только персональными). Эта связь представляет из себя сетевые протоколы передачи данных — набор правил, который определяет порядок и особенности передачи информации для конкретных случаев.</p><p>Протоколов большое множество. Про основные из них рассказано далее.</p><h2>IP — Internet Protocol</h2><p>Протокол передачи, который первым объединил отдельные компьютеры в единую сеть. Самый примитивный в этом списке. Он является ненадёжным, т. е. не подтверждает доставку пакетов получателю и не контролирует целостность данных. По протоколу IP передача данных осуществляется без установки соединения.</p><p>Основная задача этого протокола — маршрутизация <a href="https://ru.wikipedia.org/wiki/%D0%94%D0%B0%D1%82%D0%B0%D0%B3%D1%80%D0%B0%D0%BC%D0%BC%D0%B0">датаграмм</a>, т. е. определение пути следования данных по узлам сети.</p><p>Популярная версия на текущий момент — IPv4 с 32-битными адресами. Это значит, что в интернете могут хранится 4.29 млрд адресов IPv4. Число большое, но не бесконечное. Поэтому существует версия IPv6, которая поможет решить проблему переполнения адресов, ведь уникальных IPv6 будет 2 ^ 128 адресов (число с 38 знаками).</p><h2>TCP/IP — Transmission Control Protocol/Internet Protocol</h2><p>Это стек протоколов TCP и IP. Первый обеспечивает и контролирует надёжную передачу данных и следит за её целостностью. Второй же отвечает за маршрутизацию для отправки данных. Протокол TCP часто используется более комплексными протоколами.</p><h2>UDP — User Datagram Protocol</h2><p>Протокол, обеспечивающий передачу данных без предварительного создания соединения между ними. Этот протокол является ненадёжным. В нём пакеты могут не только не дойти, но и прийти не по порядку или вовсе продублироваться.</p><p>Основное преимущество UDP протокола заключается в скорости доставки данных. Именно поэтому чувствительные к сетевым задержкам приложения часто используют этот тип передачи данных.</p><h2>FTP — File Transfer Protocol</h2><p>Протокол передачи файлов. Его использовали ещё в 1971 году — задолго до появления протокола IP. На текущий момент этим протоколом пользуются при удалённом доступе к хостингам. FTP является надёжным протоколом, поэтому гарантирует передачу данных.</p><p>Этот протокол работает по принципу клиент-серверной архитектуры. Пользователь проходит аутентификацию (хотя в отдельных случаях может подключаться анонимно) и получает доступ к файловой системе сервера.</p><h2>DNS</h2><p>Это не только система доменных имён (Domain Name System), но и протокол, без которого эта система не смогла бы работать. Он позволяет клиентским компьютерам запрашивать у DNS-сервера IP-адрес какого-либо сайта, а также помогает обмениваться базами данных между серверами DNS. В работе этого протокола также используются TCP и UDP.</p><h2>HTTP — HyperText Transfer Protocol</h2><p>Изначально протокол передачи HTML-документов. Сейчас же он используется для передачи произвольных данных в интернете. Он является протоколом клиент-серверного взаимодействия без сохранения промежуточного состояния. В роли клиента чаще всего выступает веб-браузер, хотя может быть и, например, поисковый робот. Для обмена информацией протокол HTTP в большинстве случаев использует TCP/IP.</p><p>HTTP имеет расширение HTTPS, которое поддерживает шифрование. Данные в нём передаются поверх криптографического протокола <a href="https://ru.wikipedia.org/wiki/TLS">TLS</a>.</p><h2>NTP — Network Time Protocol</h2><p>Не все протоколы передачи нужны для обмена классического вида информацией. NTP — протокол для синхронизации локальных часов устройства со временем в сети. Он использует <a href="https://ru.wikipedia.org/wiki/%D0%90%D0%BB%D0%B3%D0%BE%D1%80%D0%B8%D1%82%D0%BC_%D0%9C%D0%B0%D1%80%D0%B7%D1%83%D0%BB%D0%BB%D0%BE">алгоритм Марзулло</a>. Благодаря нему протокол выбирает более точный источник времени. NTP работает поверх UDP — поэтому ему удаётся достигать большой скорости передачи данных. Протокол достаточно устойчив к изменениям задержек в сети.</p><p>Последняя версия NTPv4 способна достигать точности 10мс в интернете и до 0,2мс в локальных сетях.</p><h2>SSH — Secure SHell</h2><p>Протокол для удалённого управления операционной системой с использованием TCP. В SSH шифруется весь трафик, причём с возможностью выбора алгоритма шифрования. В основном это нужно для передачи паролей и другой важной информации.</p><p>Также SSH позволяет обрабатывать любые другие протоколы передачи. Это значит, что кроме удалённого управления компьютером, через протокол можно пропускать любые файлы или даже аудио/видео поток.</p><p>SSH часто применяется при работе с хостингами, когда клиент может удалённо подключиться к серверу и работать уже оттуда.</p>]]></content:encoded>
    </item>
    <item>
      <title>Cloudflare организовала поддержку HTTP/3 в nginx</title>
      <link>https://tproger.ru/news/http-3-for-nginx</link>
      <comments>https://tproger.ru/news/http-3-for-nginx?scrollTo=tproger-comments</comments>
      <dc:creator><![CDATA[karpov]]></dc:creator>
      <guid isPermaLink="true">https://tproger.ru/news/http-3-for-nginx</guid>
      <description><![CDATA[<p>Cloudflare выпустила модуль HTTP/3 для nginx на базе quiche. Модуль написан на Си, требует патча. Поддержка в nginx 1.17 ожидается через 6-12 месяцев.</p><p>— Читать дальше «<a rel="follow" href="https://tproger.ru/news/http-3-for-nginx">Cloudflare организовала поддержку HTTP/3 в nginx</a>»</p>]]></description>
      <category><![CDATA[Cloudflare]]></category>
      <category><![CDATA[Сетевые протоколы]]></category>
      <category><![CDATA[Новости]]></category>
      <slash:comments>0</slash:comments>
      <pubDate>Fri, 18 Oct 2019 14:32:53 GMT</pubDate>
      <content:encoded><![CDATA[<p>Cloudflare создала модуль для поддержки HTTP/3 в nginx — это должно упростить развёртывание серверов с использованием протокола нового поколения. Он сделан в форме надстройки над библиотекой quiche. Написан на языке Си.</p><p>Штатную поддержку протокола в ветке 1.17 обещают обеспечить через 6−12 месяцев. Для сборки на основе версии nginx 1.16 нужен патч (есть на GitHub) и код библиотеки quiche — после этого nginx нужно пересобрать с опциями -- with-http_v3_module, --with-quiche=../quiche. Поддержка TLS должна стоять на BoringSSL, OpenSSL пока не работает.</p><p>Про сам HTTP/3 можно почитать <a href="https://tproger.ru/news/quic-standardize-http3/">у нас на сайте</a>.</p>]]></content:encoded>
    </item>
    <item>
      <title>Что такое TLS-рукопожатие и как оно устроено</title>
      <link>https://tproger.ru/articles/tls-handshake-explained</link>
      <comments>https://tproger.ru/articles/tls-handshake-explained?scrollTo=tproger-comments</comments>
      <dc:creator><![CDATA[Варвара Николаева]]></dc:creator>
      <guid isPermaLink="true">https://tproger.ru/articles/tls-handshake-explained</guid>
      <description><![CDATA[<p>Этап установки HTTPS-соединения, на котором выполняется основная работа протокола SSL/TLS. Два вида рукопожатия и обновления из версии TLS 1.3.</p><p>— Читать дальше «<a rel="follow" href="https://tproger.ru/articles/tls-handshake-explained">Что такое TLS-рукопожатие и как оно устроено</a>»</p>]]></description>
      <category><![CDATA[Сетевые протоколы]]></category>
      <category><![CDATA[Безопасность]]></category>
      <category><![CDATA[Статьи]]></category>
      <slash:comments>0</slash:comments>
      <pubDate>Tue, 02 Jul 2019 18:06:03 GMT</pubDate>
      <content:encoded><![CDATA[<p>TLS — это один из наиболее часто встречающихся инструментов безопасности, используемых в интернете. Протокол активно работает со многими процессами сетевого взаимодействия: передачей файлов, <a href="https://vpnpro.com/vpn-basics/what-is-a-vpn/">VPN-подключением</a> (в некоторых реализациях для обмена ключами), службами обмена мгновенными сообщениями или IP-телефонией.</p><p>Один из ключевых аспектов протокола — это рукопожатие. Именно о нём мы поговорим в этой статье.</p><p>«Рукопожатие SSL/TLS» — это название этапа установки HTTPS-соединения. Большая часть работы, связанной с протоколом SSL/TLS, выполняется именно на этом этапе. В прошлом году <a href="https://www.thesslstore.com/blog/tls-1-3-approved/">IETF доработал TLS 1.3</a>, полностью обновив процесс рукопожатия.<br />В статье будут освещены два вида рукопожатия — для протоколов TLS 1.2 и TLS 1.3, которые мы рассмотрим, начиная с абстрактного уровня и постепенно углубляясь в особенности:</p><ul><li>согласование криптографических протоколов;</li><li>аутентификация с помощью SSL-сертификата;</li><li>генерация сеансового ключа.</li></ul><h2>Как происходит TLS-рукопожатие</h2><p>В HTTPS-соединении участвуют две стороны: клиент (инициатор соединения, обычно веб-браузер) и сервер. Цель рукопожатия SSL/TLS — выполнить всю криптографическую работу для установки безопасного соединения, в том числе проверить подлинность используемого SSL-сертификата и сгенерировать ключ шифрования.</p><h2>Согласование шифронабора</h2><p>Каждое программное обеспечение уникально. Поэтому даже самые популярные веб-браузеры имеют различную функциональность. Аналогично и на стороне сервера — Windows Server, Apache и NGINX также отличаются друг от друга. Всё становится ещё сложнее, когда вы добавляете пользовательские конфигурации.</p><p>Именно поэтому первый шаг TLS-рукопожатия — обмен информацией о своих возможностях между клиентом и сервером для дальнейшего выбора поддерживаемых криптографических функций.</p><p>Как только клиент и сервер согласовывают используемый шифронабор, сервер отправляет клиенту свой SSL-сертификат.</p><h2>Аутентификация</h2><p>Получив сертификат, клиент проверяет его на подлинность. Это чрезвычайно важный шаг. Чтобы соединение было безопасным, нужно не только зашифровать данные, нужно ещё убедиться, что они отправляются на правильный веб-сайт. Сертификаты SSL/TLS обеспечивают эту аутентификацию, а то, как они это делают, зависит от используемого шифронабора.</p><figure><img src="https://media.tproger.ru/uploads/2019/07/image16.png" alt="" /></figure><p><br />Все доверенные SSL-сертификаты выпускаются центром сертификации (ЦС). ЦС должен следовать строгим правилам выдачи и проверки сертификатов, чтобы ему доверяли. Вы можете считать ЦС кем-то вроде нотариуса — его подпись значит, что данные в сертификате реальны.</p><p>Во время аутентификационной части TLS-рукопожатия клиент выполняет несколько криптографически безопасных проверок с целью убедиться, что выданный сервером сертификат подлинный. Процесс включает в себя проверку цифровой подписи и того, выдан ли сертификат доверенным ЦС.</p><p>На этом этапе клиент косвенно проверяет, принадлежит ли серверу закрытый ключ, связанный с сертификатом.</p><p>В RSA, самой распространённой криптосистеме с открытым ключом, клиент с помощью открытого ключа шифрует случайные данные, которые будут использоваться для генерации сеансового ключа. Сервер сможет расшифровать и использовать эти данные, только если у него есть закрытый ключ, наличие которого обеспечивает подлинность стороны.</p><p>Если используется другая криптосистема, алгоритм может измениться, но проверка другой стороны на подлинность всё равно останется.</p><h2>Обмен ключами</h2><p>Последняя часть TLS-рукопожатия включает создание «сеансового ключа», который фактически будет использоваться для защищённой связи.</p><p>Сеансовые ключи являются «симметричными», то есть один и тот же ключ используется для шифрования и дешифрования.</p><p>Симметричное шифрование производительнее, чем асимметричное, что делает его более подходящим для отправки данных по HTTPS-соединению. Точный метод генерации ключа зависит от выбранного шифронабора, два самых распространённых из них — RSA и Диффи-Хеллман.</p><figure><img src="https://media.tproger.ru/uploads/2019/07/image23.jpg" alt="" /></figure><p>Чтобы завершить рукопожатие, каждая сторона сообщает другой, что она выполнила всю необходимую работу, а затем проверяет контрольные суммы, чтобы убедиться, что рукопожатие произошло без какого-либо вмешательства или повреждения.</p><p>Всё SSL-рукопожатие происходит за несколько сотен миллисекунд. Это первое, что произойдёт при HTTPS-соединении, даже до загрузки веб-страницы. После SSL-рукопожатия начинается зашифрованное и аутентифицированное HTTPS-соединение, и все данные, отправляемые и получаемые клиентом и сервером, защищены.</p><p>Вплоть до TLS 1.3 каждый раз, когда вы посещали сайт, рукопожатие происходило заново. Рукопожатие TLS 1.3 поддерживает 0-RTT или нулевое время возобновления приёма-передачи, что значительно увеличивает скорость для вернувшегося посетителя.</p><h2>Пошаговый процесс рукопожатия в TLS 1.2</h2><p>Рассмотрим TLS-рукопожатие с использованием RSA подробнее. Использование алгоритма Диффи-Хеллмана будет описано ниже.</p><figure><img src="https://media.tproger.ru/uploads/2019/07/image2-1.jpg" alt="" /></figure><ol><li>Первое сообщение называется «Client Hello». В этом сообщении перечислены возможности клиента, чтобы сервер мог выбрать шифронабор, который будет использовать для связи. Также сообщение включает в себя большое случайно выбранное простое число, называемое «случайным числом клиента».</li><li>Сервер вежливо отвечает сообщением «Server Hello». Там он сообщает клиенту, какие параметры соединения были выбраны, и возвращает своё случайно выбранное простое число, называемое «случайным числом сервера». Если клиент и сервер не имеют общих шифронаборов, то соединение завершается неудачно.</li><li>В сообщении «Certificate» сервер отправляет клиенту свою цепочку SSL-сертификатов, включающую в себя листовой и промежуточные сертификаты. Получив их, клиент выполняет несколько проверок для верификации сертификата. Клиент также должен убедиться, что сервер обладает закрытым ключом сертификата, что происходит в процессе обмена/генерации ключей.</li><li>Это необязательное сообщение, необходимое только для определённых методов обмена ключами (например для алгоритма Диффи-Хеллмана), которые требуют от сервера дополнительные данные.</li><li>Сообщение «Server Hello Done» уведомляет клиента, что сервер закончил передачу данных.</li><li>Затем клиент участвует в создании сеансового ключа. Особенности этого шага зависят от метода обмена ключами, который был выбран в исходных сообщениях «Hello». Так как мы рассматриваем RSA, клиент сгенерирует случайную строку байтов, называемую секретом (pre-master secret), зашифрует её с помощью открытого ключа сервера и передаст обратно.</li><li>Сообщение «Change Cipher Spec» позволяет другой стороне узнать, что сеансовый ключ сгенерирован и можно переключиться на зашифрованное соединение.</li><li>Затем отправляется сообщение «Finished», означающее, что на стороне клиента рукопожатие завершено. С этого момента соединение защищено сессионным ключом. Сообщение содержит данные (MAC), с помощью которых можно убедиться, что рукопожатие не было подделано.</li><li>Теперь сервер расшифровывает pre-master secret и вычисляет сеансовый ключ. Затем отправляет сообщение «Change Cipher Spec», чтобы уведомить, что он переключается на зашифрованное соединение.</li><li>Сервер также отправляет сообщение «Finished», используя только что сгенерированный симметричный сеансовый ключ, и проверяет контрольную сумму для проверки целостности всего рукопожатия.</li></ol><p>После этих шагов SSL-рукопожатие завершено. У обеих сторон теперь есть сеансовый ключ, и они могут взаимодействовать через зашифрованное и аутентифицированное соединение.</p><p>На этом этапе могут быть отправлены первые байты веб-приложения (данные, относящиеся к фактическому сервису, — HTML, Javascript и т. д.).</p><h2>Пошаговый процесс рукопожатия в TLS 1.3</h2><p>Рукопожатие TLS 1.3 значительно короче, чем его предшественник.</p><figure><img src="https://media.tproger.ru/uploads/2019/07/image4-1.jpg" alt="" /></figure><ol><li>Как и в случае TLS 1.2, сообщение «Client Hello» запускает рукопожатие, но на этот раз оно содержит гораздо больше информации. TLS 1.3 сократил число поддерживаемых шифров с 37 до 5. Это значит, что клиент может угадать, какое соглашение о ключах или протокол обмена будет использоваться, поэтому в дополнение к сообщению отправляет свою часть общего ключа из предполагаемого протокола.</li><li>Сервер ответит сообщением «Server Hello». Как и в рукопожатии 1.2, на этом этапе отправляется сертификат. Если клиент правильно угадал протокол шифрования с присоединёнными данными и сервер на него согласился, последний отправляет свою часть общего ключа, вычисляет сеансовый ключ и завершает передачу сообщением «Server Finished».</li><li>Теперь, когда у клиента есть вся необходимая информация, он верифицирует SSL-сертификат и использует два общих ключа для вычисления своей копии сеансового ключа. Когда это сделано, он отправляет сообщение «Client Finished».</li></ol><h2>Издержки TLS-рукопожатия</h2><p>Исторически одна из претензий к SSL/TLS заключалась в том, что он перегружал серверы дополнительными издержками. Это повлияло на ныне несуществующее представление, что HTTPS медленнее, чем HTTP.</p><figure><img src="https://media.tproger.ru/uploads/2019/07/image22.jpg" alt="" /></figure><p>Рукопожатия до TLS 1.2 требовали много ресурсов и в больших масштабах могли серьёзно нагрузить сервер. Даже рукопожатия TLS 1.2 могут замедлить работу, если их происходит много в один момент времени. Аутентификация, шифрование и дешифрование — дорогие процессы.</p><p>На небольших веб-сайтах это скорее всего не приведёт к заметному замедлению работы, но для корпоративных систем, куда ежедневно приходят сотни тысяч посетителей, это может стать большой проблемой. Каждая новая версия рукопожатия существенно облегчает процесс: TLS 1.2 совершает две фазы, а TLS 1.3 укладывается всего в одну и поддерживает 0-RTT.</p><h2>Улучшения рукопожатия TLS 1.3 по сравнению с TLS 1.2</h2><p>В приведённом выше объяснении рукопожатие разделено на десять отдельных этапов. В действительности же многие из этих вещей происходят одновременно, поэтому их часто объединяют в группы и называют фазами.</p><p>У рукопожатия TLS 1.2 можно выделить две фазы. Иногда могут потребоваться дополнительные, но когда речь идёт о количестве, по умолчанию подразумевается оптимальный сценарий.</p><figure><img src="https://media.tproger.ru/uploads/2019/07/diagram.jpg" alt="" /></figure><p>В отличие от 1.2, рукопожатие TLS 1.3 укладывается в одну фазу, хотя вернее будет сказать в полторы, но это всё равно значительно быстрее, чем TLS 1.2.</p><h2>Сокращение шифронаборов</h2><p>Никто никогда не собирался использовать 37 наборов для шифрования данных, так эволюционировал протокол. Каждый раз, когда добавлялся новый алгоритм, добавлялись новые комбинации, и вскоре IANA администрировала 37 различных шифронаборов.</p><figure><img src="https://media.tproger.ru/uploads/2019/07/image21.jpg" alt="" /></figure><p>Это плохо по двум причинам:</p><ol><li>Такая варьируемость приводит к ошибочным конфигурациям, которые делают интернет-пользователей уязвимыми для известных эксплойтов.</li><li>Это сделало настройку SSL более запутанной.</li></ol><p>IETF исключил в TLS 1.3 поддержку всех алгоритмов, кроме самых безопасных, убирая путаницу за счёт ограничения выбора. В частности, был убран выбор метода обмена ключами. Эфемерная схема Диффи-Хеллмана стала единственным способом, позволяющим клиенту отправить информацию о своём ключе вместе с «Client Hello» в первой части рукопожатия. Шифрование RSA было полностью удалено вместе со всеми другими схемами обмена статическими ключами.</p><p>При этом есть одна потенциальная ахиллесова пята в TLS 1.3.</p><h2>Нулевое время возобновления приёма-передачи — 0-RTT</h2><figure><img src="https://media.tproger.ru/uploads/2019/07/image5-1.jpg" alt="" /></figure><p>0-RTT — это то, к чему стремился весь технологический мир, и вот оно здесь с TLS 1.3. Как уже было упомянуто, рукопожатие TLS исторически было не быстрым, так что было важно ускорить его. 0-RTT делает это путём сохранения некоторой секретной информации о клиенте, обычно идентификатора сеанса или сеансовых тикетов, чтобы использовать их при следующем соединении.</p><p>Несмотря на все преимущества 0-RTT, он содержит пару потенциальных подводных камней. Режим делает клиентов восприимчивыми к атакам воспроизведения, когда злоумышленник, которому каким-то образом удаётся получить доступ к зашифрованному сеансу, может получить данные 0-RTT, включая первый запрос клиента, и снова отправить их на сервер.</p><p>Тем не менее, использовать эксплойт непросто. Вероятно, такой риск — небольшая цена за чрезвычайно полезную функцию.</p><h2>Безопасность</h2><p>С самого начала вызывало опасение количество информации, отправляемой в виде открытого текста во время рукопожатия. Очевидно, что это небезопасно, поэтому чем больше шагов рукопожатия происходит в зашифрованном виде, тем лучше.</p><p>В рукопожатии TLS 1.2 этапы согласования не были защищены, вместо этого использовалась простая MAC-функция, чтобы никто не вмешался в передачу. В этап согласования входят сообщения «Client Hello» и «Server Hello».</p><figure><img src="https://media.tproger.ru/uploads/2019/07/image10-1.jpg" alt="" /></figure><p>MAC-функция действует как индикатор, но не даёт никаких гарантий безопасности. Возможно, вы слышали об атаке, которая вынуждает стороны использовать менее безопасные протоколы и функции (downgrade attack). Если и сервер, и клиент поддерживают устаревшие шифронаборы — информацию об этом легко получить, прослушивая соединение, — злоумышленник может изменить шифрование, выбранное сервером, на более слабое. Такие атаки не опасны сами по себе, но открывают дверь для использования других известных эксплойтов тех шифронаборов, на которые был изменён выбранный изначально.</p><p>Рукопожатие TLS 1.3 использует цифровую подпись на ранних стадиях соединения, что делает его более безопасным и защищает от атак, меняющих шифронабор. Подпись также позволяет быстрее и эффективнее аутентифицировать сервер.</p><p>Теперь посмотрим, как эти обновления для рукопожатия TLS 1.3 будут реализованы во всех трёх основных функциях самого рукопожатия SSL/TLS.</p><h2>Шифронаборы TLS-рукопожатия</h2><p>Шифронабор — это набор алгоритмов, определяющих параметры безопасного соединения.</p><p>В начале любого соединения самое первое взаимодействие, «Client Hello», представляет собой список поддерживаемых шифронаборов. Сервер выбирает лучший, наиболее безопасный вариант, который поддерживается им и отвечает его требованиям. Вы можете посмотреть на шифронабор и выяснить все параметры рукопожатия и соединения.</p><h3>Шифронаборы TLS 1.2</h3><figure><img src="https://media.tproger.ru/uploads/2019/07/image13.png" alt="" /></figure><ul><li>TLS — протокол.</li><li>ECDHE — алгоритм обмена ключами.</li><li>ECDSA — алгоритм аутентификации.</li><li>AES 128 GCM — алгоритм симметричного шифрования.</li><li>SHA256 — алгоритм хеширования.</li></ul><p>В приведённом выше примере используется эфемерная система Диффи-Хеллмана (DH) с эллиптической кривой для обмена ключами и алгоритм цифровой подписи эллиптической кривой для аутентификации. DH также может быть соединен с RSA (функционирующим как алгоритм цифровой подписи) для выполнения аутентификации.</p><p>Вот список наиболее широко поддерживаемых шифронаборов TLS 1.2:</p><h2>Шифронаборы TLS 1.3</h2><figure><img src="https://media.tproger.ru/uploads/2019/07/image7.png" alt="" /></figure><ul><li>TLS — протокол.</li><li>AES 256 GCM — алгоритм аутентифицированного шифрования с присоединёнными данными (AEAD).</li><li>SHA384 — алгоритм функции формирования хешированного ключа (HKFD).</li></ul><p>Мы уже знаем, что будем использовать какую-то версию обмена эфемерными ключами Диффи-Хеллмана, но не знаем параметров, так что первые два алгоритма в шифронаборе TLS 1.2 больше не нужны. Эти функции всё ещё выполняются, их просто больше не нужно согласовывать во время рукопожатия.</p><p>Из приведённого выше примера видно, что используется AES (Advanced Encryption Standard) для шифрования большого объёма данных. Он работает в режиме счётчика Галуа с использованием 256-битных ключей.</p><p>Вот пять шифронаборов, которые поддерживаются в TLS 1.3:</p><ul><li>TLS_AES_256_GCM_SHA384;</li><li>TLS_CHACHA20_POLY1305_SHA256;</li><li>TLS_AES_128_GCM_SHA256;</li><li>TLS_AES_128_CCM_8_SHA256;</li><li>TLS_AES_128_CCM_SHA256.</li></ul><h2>Что изменилось в TLS 1.3 по сравнению с TLS 1.2?</h2><p>Важно помнить, что при создании версии 1.3 главным было повышение безопасности и производительности. Для этого в TLS 1.3 был переработан алгоритм генерация ключей и исправлены известные уязвимости.</p><p>В рукопожатии TLS 1.3 также стали лучше некоторые процессы, например аутентификация сообщений и цифровые подписи.</p><figure><img src="https://media.tproger.ru/uploads/2019/07/image12.png" alt="" /></figure><p><br />Наконец, в дополнение к постепенному отказу от старых алгоритмов генерации ключей или обмена ими, TLS 1.3 устраняет старые симметричные шифры. В TLS 1.3 полностью исключили блочные шифры. Единственный разрешённый в TLS 1.3 тип симметричных шифров называется шифрованием с проверкой подлинности с использованием дополнительных данных (AEAD). Он объединяет шифрование и проверку подлинности сообщений (MAC) в одну функцию.</p><h2>Аутентификация в TLS-рукопожатии</h2><p>Исторически двумя основными вариантами обмена ключами являются RSA и Диффи-Хеллман (DH), в наши дни DH часто ассоциируется с эллиптическими кривыми (ECDH). Несмотря на некоторые основные сходства, между этими двумя подходами к обмену ключами есть фундаментальные различия.</p><p>Иными словами, TLS-рукопожатие RSA отличается от TLS-рукопожатия ECDH.</p><h2>Аутентификация в рукопожатии TLS 1.2</h2><p>Как было только что сказано, дополнительная функциональность RSA для аутентификации с помощью цифровых подписей требует больших ключей, устойчивых к атакам перебором. Размер этих ключей сильно увеличивает затраты на их вычисление, шифрование и дешифрование во время рукопожатия.</p><p>С другой стороны, если Диффи-Хеллман не выполняет аутентификацию, то что он делает? Как было сказано выше, DH часто используют совместно с криптографией на основе эллиптических кривых, чтобы обеспечить аутентификацию и обмен ключами.</p><figure><img src="https://media.tproger.ru/uploads/2019/07/image3-1.jpg" alt="" /></figure><p>Эллиптическая криптография (ECC) имеет гораздо меньшие размеры ключей, которые соответствуют эллиптической кривой, на которой они основаны. Для этого контекста есть пять подходящих кривых:</p><ul><li>192 бит;</li><li>224 бита;</li><li>256 бит;</li><li>384 бит;</li><li>521 бит.</li></ul><p>Но это не единственное различие между открытыми/закрытыми ключами ECC и ключами RSA. Они используются для двух совершенно разных целей во время рукопожатия TLS.</p><p>В RSA пара открытый/закрытый ключ используется как для проверки подлинности сервера, так и для обмена симметричным ключом сеанса. Фактически, именно успешное использование секретного ключа для расшифровки секрета (pre-master secret) аутентифицирует сервер.</p><p>С Диффи-Хеллманом пара открытый/закрытый ключ НЕ используется для обмена симметричным сеансовым ключом. Когда задействован Диффи-Хеллман, закрытый ключ фактически связан с прилагаемым алгоритмом подписи (ECDSA или RSA).</p><h3>RSA-аутентификация</h3><p>Процесс RSA-аутентификации связан с процессом обмена ключами. Точнее обмен ключами является частью процесса аутентификации.</p><p>Когда клиенту предоставляется SSL-сертификат сервера, он проверяет несколько показателей:</p><ul><li>цифровую подпись с использованием открытого ключа;</li><li>цепочку сертификатов, чтобы убедиться, что сертификат происходит от одного из корневых сертификатов в хранилище доверенных сертификатов;</li><li>срок действия, чтобы убедиться, что он не истёк;</li><li>статус отзыва сертификата.</li></ul><figure><img src="https://media.tproger.ru/uploads/2019/07/image19.png" alt="" /></figure><p>Если все эти проверки прошли, то проводится последний тест — клиент шифрует pre-master secret с помощью открытого ключа сервера и отправляет его. Любой сервер может попытаться выдать любой SSL/TLS-сертификат за свой. В конце концов, это общедоступные сертификаты. А так клиент может провести аутентификацию сервера, увидев закрытый ключ «в действии».</p><p>Таким образом, если сервер может расшифровать pre-master secret и использовать его для вычисления сессионного ключа, он получает доступ. Это подтверждает, что сервер является владельцем используемой пары из открытого и закрытого ключа.</p><h3>DH-аутентификация</h3><p>Когда используются Диффи-Хеллман и ECDSA/RSA, аутентификация и обмен ключами разворачиваются бок о бок. И это возвращает нас к ключам и вариантам их использования. Открытый/закрытый ключ RSA используется как для обмена ключами, так и для аутентификации. В DH + ECDSA/RSA асимметричная пара ключей используется только для этапа цифровой подписи или аутентификации.</p><figure><img src="https://media.tproger.ru/uploads/2019/07/image9.jpg" alt="" /></figure><p>Когда клиент получает сертификат, он всё ещё проводит стандартные проверки:</p><ul><li>проверяет подпись на сертификате,</li><li>цепочку сертификатов,</li><li>срок действия,</li><li>статус отзыва.</li></ul><p>Но владение закрытым ключом подтверждается по-другому. Во время обмена ключами TLS-рукопожатия (шаг 4) сервер использует свой закрытый ключ для шифрования случайного числа клиента и сервера, а также свой DH-параметр. Он действует как цифровая подпись сервера, и клиент может использовать связанный открытый ключ для проверки, что сервер является законным владельцем пары ключей.</p><h2>Аутентификация в рукопожатии TLS 1.3</h2><p>В TLS 1.3 аутентификация и цифровые подписи всё ещё играют важную роль, но они были исключены из шифронаборов для упрощения согласования. Они реализованы на стороне сервера и используют несколько алгоритмов, поддерживаемых сервером, из-за их безопасности и повсеместного распространения. В TLS 1.3 разрешены три основных алгоритма подписи:</p><ul><li>RSA (только подпись),</li><li>алгоритм цифровой подписи эллиптической кривой (ECDSA),</li><li>алгоритм цифровой подписи Эдвардса (EdDSA).</li></ul><p>В отличие от рукопожатия TLS 1.2, аутентификационная часть рукопожатия TLS 1.3 не связана с самим обменом ключами. Скорее она обрабатывается параллельно с обменом ключами и аутентификацией сообщений.</p><p>Вместо запуска симметричной схемы MAC для проверки целостности рукопожатия, сервер подписывает весь хеш расшифровки, когда возвращает «Server Hello» со своей частью общего ключа.</p><figure><img src="https://media.tproger.ru/uploads/2019/07/image14.jpg" alt="" /></figure><p>Клиент получает всю информацию, передающуюся с «Server Hello», и выполняет стандартную серию проверок подлинности сертификата SSL/TLS. Она включает в себя проверку подписи на сертификате, а затем проверку на соответствие подписи, которая была добавлена в хеш расшифровки.</p><p>Совпадение подтверждает, что сервер владеет секретным ключом.</p><h2>Обмен ключами в TLS-рукопожатии</h2><p>Если выделить главную мысль этого раздела, она будет звучать так:</p><p>RSA облегчает обмен ключами, позволяя клиенту шифровать общий секрет и отправлять его на сервер, где он используется для вычисления соответствующего сеансового ключа. Обмен ключами DH на самом деле вообще не требует обмена открытым ключом, скорее обе стороны создают ключ вместе.</p><p>Если сейчас это звучит немного абстрактно, к концу этого раздела всё должно проясниться.</p><h2>Обмен ключами RSA</h2><p>Называть это обменом ключами RSA на самом деле неправильно. На самом деле это RSA-шифрование. RSA использует асимметричное шифрование для создания ключа сеанса. В отличие от DH, пара открытого/закрытого ключей играет большую роль.</p><p>Вот как это происходит:</p><ol><li>Клиент и сервер обмениваются двумя простыми числами (x и y), которые называют случайными числами.</li><li>Клиент генерирует pre-master secret (a), а затем использует открытый ключ сервера для его шифрования и отправки на сервер.</li><li>Сервер расшифровывает pre-master secret с помощью соответствующего закрытого ключа. Теперь обе стороны имеют все три входных переменных и смешивают их с некоторыми псевдослучайными функциями (PRF) для создания мастер-ключа.</li><li>Обе стороны смешивают мастер-ключ с ещё большим количеством PRF и получают совпадающие сеансовые ключи.</li></ol><figure><img src="https://media.tproger.ru/uploads/2019/07/image1-1.jpg" alt="" /></figure><h3>Обмен ключами DH</h3><p>Вот как работает ECDH:</p><ol><li>Клиент и сервер обмениваются двумя простыми числами (x и y), которые называют случайными числами.</li><li>Одна сторона выбирает секретный номер, называемый pre-master secret (a), и вычисляет: xa mod y. Затем отправляет результат (A) другому участнику.</li><li>Другая сторона делает то же самое, выбирая свой собственный pre-master secret (b) и вычисляет xb mod y, а затем отправляет обратно своё значение (B).</li><li>Обе стороны заканчивают эту часть, принимая заданные значения и повторяя операцию. Один вычисляет ba mod y, другой вычисляет ab mod y.</li></ol><figure><img src="https://media.tproger.ru/uploads/2019/07/image20.jpg" alt="" /></figure><p>Существует свойство показателей по модулю, которое говорит, что каждая сторона получит одно и то же значение, которое будет ключом, используемым для симметричного шифрования во время соединения.</p><h3>Рукопожатие TLS 1.2 для DH</h3><p>Теперь, когда мы узнали, чем DH отличается от RSA, посмотрим, как выглядит рукопожатие TLS 1.2 на основе DH.</p><figure><img src="https://media.tproger.ru/uploads/2019/07/image2-1.jpg" alt="" /></figure><p>Опять же, между этими двумя подходами существует множество сходств. Мы будем использовать ECDHE для обмена ключами и ECDSA для аутентификации.<br /></p><ol><li>Как и в случае с RSA, клиент начинает с сообщения «Client Hello», которое включает в себя список шифронаборов, а также случайное число клиента.</li><li>Сервер отвечает своим сообщением «Server Hello», которое включает в себя выбранный шифронабор и случайное число сервера.</li><li>Сервер отправляет свой SSL-сертификат. Как и при TLS-рукопожатии RSA клиент выполнит серию проверок подлинности сертификата, но, поскольку сам DH не может аутентифицировать сервер, необходим дополнительный механизм.</li><li>Чтобы провести аутентификацию, сервер берёт случайные числа клиента и сервера, а также параметр DH, который будет использоваться для вычисления сеансового ключа, и шифрует их с помощью своего закрытого ключа. Результат будет выполнять роль цифровой подписи: клиент использует открытый ключ для проверки подписи и того, что сервер является законным владельцем пары ключей, и ответит своим собственным параметром DH.</li><li>Сервер завершает эту фазу сообщением «Server Hello Done».</li><li>В отличие от RSA, клиенту не нужно отправлять pre-master secret на сервер с использованием асимметричного шифрования, вместо этого клиент и сервер используют параметры DH, которыми они обменялись ранее, чтобы получить pre-master secret. Затем каждый использует pre-master secret, который он только что рассчитал, для получения одинакового сеансового ключа.</li><li>Клиент отправляет сообщение «Change Cipher Spec», чтобы сообщить другой стороне о своём переходе на шифрование.</li><li>Клиент отправляет финальное сообщение «Finished», чтобы сообщить, что он завершил свою часть рукопожатия.</li><li>Аналогично, сервер отправляет сообщение «Change Cipher Spec».</li><li>Рукопожатие завершается сообщением «Finished» от сервера.</li></ol><h2>Преимущества DHE перед RSA</h2><p>Существует две основные причины, по которым сообщество криптографов предпочитает использовать DHE, а не RSA: совершенная прямая секретность и известные уязвимости.</p><h3>Совершенная прямая секретность</h3><figure><img src="https://media.tproger.ru/uploads/2019/07/image8-1-1.jpg" alt="" /></figure><p>Ранее вы, возможно, задавались вопросом, что означает слово «эфемерный» в конце DHE и ECDHE. Эфемерный буквально означает «недолговечный». И это может помочь понять совершенную прямую секретность (Perfect Forward Secrecy, PFS), которая является особенностью некоторых протоколов обмена ключами. PFS гарантирует, что сессионные ключи, которыми обмениваются стороны, не могут быть скомпрометированы, даже если скомпрометирован закрытый ключ сертификата. Другими словами, он защищает предыдущие сессии от извлечения и дешифрования. PFS получила высший приоритет после обнаружения ошибки Heartbleed. Это основной компонент TLS 1.3.<br /></p><h3>Уязвимость обмена ключами RSA</h3><p>Существуют уязвимости, которые могут использовать заполнение (padding), используемое во время обмена ключами в старых версиях RSA (PKCS #1 1.5). Это один из аспектов шифрования. С RSA pre-master secret должен быть зашифрован открытым ключом и расшифрован закрытым ключом. Но когда этот меньший по длине pre-master secret помещается в больший открытый ключ, он должен быть дополнен. В большинстве случаев попытавшись угадать заполнение и отправив поддельный запрос на сервер, вы ошибётесь, и он распознает несоответствие и отфильтрует его. Но есть немалая вероятность, что вы сможете отправить на сервер достаточное количество запросов, чтобы угадать правильное заполнение. Тогда сервер отправит ошибочное законченное сообщение, что, в свою очередь, сузит возможное значение pre-master secret. Это позволит злоумышленнику рассчитать и скомпрометировать ключ.</p><p>Вот почему RSA был удалён в пользу DHE в TLS 1.3.</p><h2>Обмен ключами в рукопожатии TLS 1.3</h2><p>В рукопожатии TLS 1.3 из-за ограниченного выбора схем обмена ключами клиент может успешно угадать схему и отправить свою часть общего ключа во время начального этапа (Client Hello) рукопожатия.</p><p>RSA была не единственной схемой обмена ключами, которая была удалена в TLS 1.3. Неэфемерные схемы Диффи-Хеллмана тоже были ликвидированы, как и перечень недостаточно безопасных параметров Диффи-Хеллмана.</p><p>Что имеется в виду под недостаточно безопасными параметрами? Не углубляясь в математику, сложность Диффи-Хеллмана и большинства криптосистем с открытым ключом — это сложность решения задач дискретного логарифма. Криптосистема должна быть достаточно сложной для вычисления, если неизвестны входные параметры (случайные числа клиента и сервера), иначе вся схема окажется бесполезной. Схемы Диффи-Хеллмана, которые не могли обеспечить достаточно большие параметры, были исключены в TLS 1.3.</p><ol><li>В начале рукопожатия TLS 1.3, зная, что будет использоваться DHE-схема соглашения о ключах, клиент включает свою часть общего ключа на основе предполагаемой схемы обмена ключами в своё сообщение «Client Hello».</li><li>Сервер получает эту информацию и, если клиент угадал, возвращает свою часть общего ключа в «Server Hello».</li><li>Клиент и сервер вычисляют сеансовый ключ.</li></ol><figure><img src="https://media.tproger.ru/uploads/2019/07/image24.jpg" alt="" /></figure><p>Это очень похоже на то, что происходит с DH в рукопожатии TLS 1.2, кроме того, что в TLS 1.3 обмен ключами происходит раньше.</p><h2>Вместо заключения</h2><p>SSL/TLS-рукопожатие — это увлекательный процесс, который имеет ключевое значение для безопасного интернета, и всё же он происходит так быстро и незаметно, что большинство людей даже никогда не задумывается об этом.</p><p>По крайней мере, пока что-то не пойдёт не так, как нужно.</p><figure><img src="https://media.tproger.ru/uploads/2019/07/image15.jpg" alt="" /></figure>]]></content:encoded>
    </item>
    <item>
      <title>Основные принципы работы протокола SSH</title>
      <link>https://tproger.ru/explain/a-top-down-introduction-to-ssh</link>
      <comments>https://tproger.ru/explain/a-top-down-introduction-to-ssh?scrollTo=tproger-comments</comments>
      <dc:creator><![CDATA[Евгений Туренко]]></dc:creator>
      <guid isPermaLink="true">https://tproger.ru/explain/a-top-down-introduction-to-ssh</guid>
      <description><![CDATA[<p>SSH — протокол для управления удалёнными компьютерами по сети. Разбор шагов, из которых складывается сеанс, и проверки прав клиента на доступ к хосту.</p><p>— Читать дальше «<a rel="follow" href="https://tproger.ru/explain/a-top-down-introduction-to-ssh">Основные принципы работы протокола SSH</a>»</p>]]></description>
      <category><![CDATA[Для начинающих]]></category>
      <category><![CDATA[Сетевые протоколы]]></category>
      <category><![CDATA[Коротко о главном]]></category>
      <slash:comments>0</slash:comments>
      <pubDate>Tue, 23 Apr 2019 08:14:20 GMT</pubDate>
      <content:encoded><![CDATA[<p>В этой статье мы рассмотрим, как работает SSH, как он используется для безопасной связи с удалёнными компьютерами и как компьютеры устанавливают и настраивают сеанс.</p><h2>Что такое SSH?</h2><p><a href="https://ru.wikipedia.org/wiki/SSH">SSH</a> — сокращение от «secure shell» (безопасная оболочка). Это протокол, который чаще всего используют для управления удалёнными компьютерами по сети.</p><h2>Как устанавливается сессия SSH?</h2><p>Есть несколько шагов, которые нужно пройти, чтобы начать SSH-сеанс между компьютерами.</p><ol><li>Сначала нужно обеспечить безопасный способ обмена сообщениями между компьютерами, то есть настроить зашифрованный канал.</li><li>Далее нужно проверить целостность данных, отправляемых клиентом.</li><li>После этого проверяется подлинность клиента.</li></ol><p>После этих трёх шагов мы можем безопасно общаться с удалённым компьютером, делиться секретными данными, а также проверить, есть ли у клиента разрешение на доступ к хосту. Каждый из разделов ниже будет более подробно описывать эти действия.</p><h2>Настройка зашифрованного канала</h2><p>Вся информация, отправляемая с использованием SSH, зашифрована. Обе стороны должны знать и понимать способ шифрования.</p><p>Для шифрования передаваемых данных используется <a href="https://ru.wikipedia.org/wiki/%D0%A1%D0%B8%D0%BC%D0%BC%D0%B5%D1%82%D1%80%D0%B8%D1%87%D0%BD%D0%BE%D0%B5_%D1%88%D0%B8%D1%84%D1%80%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D0%B5">симметричное шифрование</a>. Суть данного подхода заключается в том, что оба компьютера имеют одинаковый ключ шифрования, который называется «симметричный ключ». Симметричное шифрование работает очень хорошо, но только до тех пор, пока сторонние не имеют доступа к ключу.</p><p>Один компьютер может создать ключ и отправить в виде сообщения через интернет. Но сообщение ещё не будет зашифровано, поэтому любой, кто перехватит его, сразу же сможет расшифровать все следующие сообщения.</p><p>Решение этой проблемы состоит в использовании протокола обмена ключами <a href="https://ru.wikipedia.org/wiki/Протокол_Диффи_—_Хеллмана">Диффи-Хеллмана</a>. Оба компьютера создают свой закрытый и открытый ключ. Вместе они образуют пару ключей. Компьютеры делятся своими открытыми ключами друг с другом через интернет. Используя свой закрытый и чужой открытый ключ, стороны могут независимо сгенерировать одинаковый симметричный ключ.</p><h2>Верификация</h2><p>Следующий этап процесса установки сеанса SSH заключается в проверке того, что данные не были подделаны во время их передачи и что другой компьютер действительно является тем, за кого себя выдаёт.</p><p>Для верификации используют хеш-функцию. Это математическая функция, которая принимает входные данные и создаёт строку фиксированного размера.</p><p>Важной особенностью этой функции является то, что практически невозможно определить входные данные, зная лишь результат её работы.</p><p>После того как клиент и хост сгенерировали свои симметричные ключи, клиент использует хеш-функцию для генерации HMAC, что означает «код аутентификации сообщений, использующий хеширование». Клиент отправит этот HMAC на сервер для верификации.</p><p>Функция хеширования использует:</p><ul><li>симметричный ключ клиента,</li><li>порядковый номер пакета,</li><li>содержимое сообщения (зашифрованное).</li></ul><p>Когда хост получает HMAC, он может использовать ту же самую хеш-функцию с этими тремя компонентами:</p><ul><li>собственный (идентичный клиентскому) симметричный ключ;</li><li>порядковый номер пакета;</li><li>зашифрованное сообщение.</li></ul><p>Если сформированный хеш совпадает с HMAC, полученным от клиента, то мы можем быть уверены, что подключаемый компьютер — это компьютер с симметричным ключом, потому что только хост и клиент знают симметричный ключ, а другие компьютеры — нет.</p><p>Прелесть этого подхода в том, что мы не просто проверили личность клиента и убедились, что данные не были подделаны, но мы сделали это без передачи какой-либо секретной информации.</p><h2>Аутентификация</h2><p>Даже если мы используем симметричные ключи для безопасного общения, мы не знаем, имеет ли подключающийся компьютер разрешение на доступ к содержимому хоста. Для того чтобы проверить это, необходимо произвести аутентификацию.</p><p>Многие используют аутентификацию по паролю. Клиент отправляет хосту зашифрованное сообщение, содержащее пароль. Хост его расшифровывает и ищет пароль в базе данных, чтобы удостовериться, есть ли у клиента разрешение на доступ. Использование пароля для аутентификации допустимо, но имеет свои недостатки, так как необходимо хранить все пароли на сервере.</p><p>Более безопасной является аутентификация по сертификату. Сформировав сертификат, клиент единожды вводит пароль для доступа к серверу и отправляет ему открытую часть сертификата. В дальнейшем ввод пароля не требуется. Этот подход считается более безопасным, чем просто использование пароля, поскольку не подразумевает хранение секрета пользователя на хосте.</p><h2>Заключение</h2><p>SSH — это важный инструмент, используемый для удалённого управления другими компьютерами. Он безопасен, поскольку оба компьютера могут шифровать и дешифровать сообщения с использованием симметричных ключей.</p>]]></content:encoded>
    </item>
    <item>
      <title>Обход платного Wi-Fi с помощью ping и другие возможности ICMP-туннелирования</title>
      <link>https://tproger.ru/translations/icmp-tunneling</link>
      <comments>https://tproger.ru/translations/icmp-tunneling?scrollTo=tproger-comments</comments>
      <dc:creator><![CDATA[Никита Прияцелюк]]></dc:creator>
      <guid isPermaLink="true">https://tproger.ru/translations/icmp-tunneling</guid>
      <description><![CDATA[<p>Инкапсуляция одного сетевого протокола внутрь другого помогает обойти ограничения доступа к сети и установить скрытое соединение с помощью обычной команды ping.</p><p>— Читать дальше «<a rel="follow" href="https://tproger.ru/translations/icmp-tunneling">Обход платного Wi-Fi с помощью ping и другие возможности ICMP-туннелирования</a>»</p>]]></description>
      <category><![CDATA[Сетевые протоколы]]></category>
      <category><![CDATA[Безопасность]]></category>
      <category><![CDATA[Wi-Fi]]></category>
      <category><![CDATA[Переводы]]></category>
      <slash:comments>0</slash:comments>
      <pubDate>Thu, 31 Jan 2019 09:59:36 GMT</pubDate>
      <content:encoded><![CDATA[<p>Рассказывает Нир Чако, исследователь в области информационной безопасности</p><p>На пути исследователя информационной безопасности часто встречаются различные сложности. В их число входят ограничения доступа к сети и необходимость оставаться незамеченным. Один из способов преодоления этих сложностей — использование ICMP-туннеля при попытке установить скрытое соединение.</p><p>В компьютерных сетях под туннелированием обычно понимается инкапсуляция одного сетевого протокола в качестве полезной нагрузки другого. <a href="https://en.wikipedia.org/wiki/Tunneling_protocol">Здесь</a> можно узнать об этом больше.</p><p>ICMP (Internet Control Message Protocol) является вспомогательным протоколом стека TCP/IP и используется сетевыми устройствами для отправки сообщений об ошибках и информации о работе. Самое известное и, наверное, часто используемое ICMP-сообщение — это ping.</p><p>Смотрите также: <a href="https://tproger.ru/books/computer-networks-books/">Подборка книг по компьютерным сетям</a></p><p>Ping отправляется от одного узла в сети к другому. Он состоит из заголовков 2 и 3 уровней (MAC и IP-заголовки, определённые OSI-моделью) и специального ICMP-пакета. Отправляющий узел устанавливает параметры адресата, и если сообщение дойдёт до него, то он отправит его обратно:</p><figure><img src="https://media.tproger.ru/uploads/2019/01/ping_1.png" alt="" /></figure><p>Так выглядит IP-датаграмма ping-пакета:</p><figure><img src="https://media.tproger.ru/uploads/2019/01/diagram1-1.png" alt="" /></figure><p>ICMP-туннелирование можно выполнить, поместив в данные полезной нагрузки только то, что мы хотим отправить.</p><p>Обычно полезная нагрузка по умолчанию содержит что-нибудь вроде этой ASCII-строки  — «abcdefghijklmnopqrstuvwabcdefghi»:</p><figure><img src="https://media.tproger.ru/uploads/2019/01/ping_2.png" alt="" /></figure><p>Инкапсуляция HTTP-пакета в полезную нагрузку часто используется для обхода платного Wi-Fi.</p><p>Это возможно с помощью прокси-сервера, который ждёт ping-сообщения и отсылает их по мере необходимости (например, в форме HTTP):</p><figure><img src="https://media.tproger.ru/uploads/2019/01/diagram2-1.jpg" alt="" /></figure><ol><li>ПримечаниеС помощью нужных инструментов (вроде ptunnel) инкапсулируем HTTP-пакет, который хотим отправить в Google в составе ping-пакета (внутри полезной нагрузки). Затем отправляем его по IP прокси-сервера. Этот IP не является адресом получателя HTTP-пакета; адресом получателя будет www.google.com.Так как роутеры в аэропорту обычно позволяют отправлять ICMP-трафик за пределы сети, роутер доставит ping-сообщение на прокси-сервер.Прокси-сервер получает ping-пакет и разбивает его на две части:заголовки ICMP;полезную нагрузку с исходным HTTP-сообщением.  IP-адрес отправителя HTTP-пакета, который прокси отправляет Google, должен быть IP-адресом самого прокси-сервера, а не вашего ноутбука или роутера аэропорта, поскольку Google должен ответить именно прокси, а не вам.</li></ol><p>Это, возможно, самое частое применение ICMP-туннеля, но мне, как пентестеру, больше интересно его использование для обхода брандмауэров и прочих сетевых политик.</p><p>Всё это возможно благодаря тому, что ping-сообщения могут свободно выходить из локальной сети Wi-Fi в Интернет.</p><p>Почему кто-то может допустить такую ситуацию? Как бывший сетевой инженер, могу сказать, что ping помогает в понимании и решении даже самых сложных проблем.</p><p>Устранение многих проблем начинается с проверки того, проходит ли информация из одной точки в другую. Задаются вопросы вроде «доступен ли вообще этот информационный маршрут?» и «активны ли сетевые компоненты и способны ли они отвечать?». Ping-сообщения могут легко ответить на эти и многие другие вопросы.</p><p>Подобный анализ носит регулярный характер. Это означает, что конфигурация сети должна допускать передачу ping-сообщений в сети от одного узла к другому. Все политики брандмауэров, роутеров, а также список управления доступом коммутаторов должны разрешать поток ICMP-сообщений от практически любого сетевого компонента к другому. Вот почему сетевая сегментация и политики скорее всего не повлияют на ping-сообщения.</p><p>Принимая это во внимание, мне кажется, что хорошей идеей будет создать сетевое соединение с помощью агентов, подключающихся к управляющему серверу, используя ICMP-туннелирование, если вам нужно преодолеть такие препятствия, как сегментация и сетевые политики.</p><p>Я написал простой POC (Proof Of Concept) на Python, чтобы показать, как это работает.</p><p>Учтите, что:</p><ul><li>Для работы POC требуется <a href="https://scapy.readthedocs.io/en/latest/index.html">Scapy</a>;</li><li>В данном POC не рассматривается обработка фрагментации. Фрагментация может произойти, например, если ответ от агента будет больше, чем позволяет размер полезной нагрузки.</li></ul><p>POC включает в себя управляющий сервер и агент. Сервер будет посылать агенту команды через ICMP-туннель, а агент через него будет возвращать результат:</p><p>Использование выглядит как-то так:</p><figure><img src="https://media.tproger.ru/uploads/2019/01/ping_3.jpg" alt="" /></figure><p>И никогда не будет лишним посмотреть, что на самом деле происходит, с помощью Wireshark:</p><figure><img src="https://media.tproger.ru/uploads/2019/01/ping_4.jpg" alt="" /></figure><figure><img src="https://media.tproger.ru/uploads/2019/01/ping_5.jpg" alt="" /></figure><p>Как вы видите, в итоге мы имеем 2 ICMP-сообщения: одно с командой и другое с результатом.</p><h2>Смотрим на ситуацию с точки зрения защиты</h2><p>При написании подобных инструментов важно посмотреть на всё с точки зрения защиты и подумать, что нужно принять во внимание.</p><p>Наиболее важно помнить, что инструменты кибербезопасности не ограничиваются политиками белого списка брандмауэра. Большинство современных инструментов для защиты включают в себя различную функциональность по обнаружению аномалий. Но прежде чем заводить речь об аномалиях, нужно узнать больше о нормальном поведении субъекта.</p><p>Если говорить о ping-сообщениях в обычной сети, то их свойства примерно такие:</p><ol><li>Большинство ping-сообщений отсылаются одинаковым образом — по 4 сообщения за раз.</li><li>Ping-сообщение имеет тип 8 (echo ping request), ping-ответ — тип 0 (echo ping reply).</li><li>С каждым ping-пакетом отсылаются несколько полей (при использовании Windows 8.1):id = 0x0001;seq ответа будет равно seq запроса;У полезной нагрузки останется размер (32 байта) и содержимое («abcdefghijklmnopqrstuvwabcdefghi») по умолчанию.</li></ol><figure><img src="https://media.tproger.ru/uploads/2019/01/ping_6.png" alt="" /></figure><p>Учитывая всё вышеперечисленное, вам следует:</p><ol><li>Написать управляющий сервер и агент таким образом, чтобы каждую минуту (например) отправлялось не больше 4 ping-сообщений. Если на отправку ваших данных требуется 15 сообщений, то весь процесс займёт 4 минуты. Да, возможно это медленно, но стоит того, чтобы остаться незамеченным.</li><li>Убедиться, что ping-запрос и ответ логически правильны. Если все сообщения, которые вы отправляете, будут типа 0, то будет странно увидеть много ответов, когда нет никаких запросов.</li><li>Обратить внимание, что размер полезной нагрузки повлияет на первый пункт (количество ping-сообщений на размер данных) и что это метаданные.</li><li>Подумать о содержимом полезной нагрузки  в контексте возможного наличия DPI.</li></ol><h2>DPI — глубокий анализ пакетов ( Deep Packet Inspection)</h2><p>Во время обычного анализа пакетов считываются метаданные пакета (в основном заголовки). DPI же просматривает содержимое пакета. По сути, DPI анализирует полезную нагрузку и пытается понять, всё ли с ней нормально.</p><p>В нашем случае DPI с помощью отслеживания аномалий может обнаружить ICMP-туннель, просмотрев полезную нагрузку и увидев, что она отличается от ожидаемой. Таким образом, мы не сможем скрыть все параметры.</p><p>Так а зачем тогда вообще возиться с ICMP-туннелированием?</p><p>Потому что:</p><ol><li>DPI встречается далеко не везде.</li><li>Большинство DPI-инструментов полагаются на базу с сигнатурами — если для ICMP-сообщений сигнатур нет, то и туннель обнаружить не получится.</li><li>Даже если в базе найдётся подходящая сигнатура, оператор сначала должен настроить её на работу в активном режиме.</li></ol><p>Почему он может её не активировать?</p><ul><li>На проверку каждой сигнатуры требуются ресурсы (преимущественно процессор и время), что может замедлить сеть.</li><li>Проверка сети может проводиться с помощью разных ping-сообщений с разным размером полезной нагрузки (например, ping -s 1234 8.8.8.8 отправит ping-сообщение с полезной нагрузкой в размере 1234 байт) для диагностики проблем, связанных с MTU. Активация подобной сигнатуры приведёт к множеству ложных срабатываний, что будет раздражать команду мониторинга и, как следствие, снизит надёжность сигнатуры.</li></ul><h2>Заключение</h2><p>ICMP-туннелирование — отличный способ для незаметной отправки/получения данных. Хотя порой оно будет не так эффективно из-за различных защитных мер, зачастую вы обнаружите, что это простой и удобный способ обойти некоторые ограничения.</p><p>Если вы поняли суть ICMP-туннелирования, то вы сможете создать множество других решений вроде DNS-туннелирования, SSH-туннелирования и так далее.</p>]]></content:encoded>
    </item>
    <item>
      <title>Подборка книг по компьютерным сетям</title>
      <link>https://tproger.ru/books/computer-networks-books</link>
      <comments>https://tproger.ru/books/computer-networks-books?scrollTo=tproger-comments</comments>
      <dc:creator><![CDATA[Алексей Грачев]]></dc:creator>
      <guid isPermaLink="true">https://tproger.ru/books/computer-networks-books</guid>
      <description><![CDATA[<p>Книги об устройстве Интернета, стеке протоколов TCP/IP и маршрутизации, включая классику Эндрю Таненбаума и Дэвида Уэзеролла «Компьютерные сети».</p><p>— Читать дальше «<a rel="follow" href="https://tproger.ru/books/computer-networks-books">Подборка книг по компьютерным сетям</a>»</p>]]></description>
      <category><![CDATA[Сетевые протоколы]]></category>
      <category><![CDATA[Интернет]]></category>
      <category><![CDATA[Книги]]></category>
      <slash:comments>0</slash:comments>
      <pubDate>Thu, 17 Jan 2019 10:56:07 GMT</pubDate>
      <content:encoded><![CDATA[<p>Компьютерные сети — основа Интернета и неотъемлемая часть технологического прогресса. Мы собрали в одной подборке книги, которые помогут как новичкам, так и более опытным специалистам узнать об устройстве Интернета, стеке протоколов TCP/IP, маршрутизации и многом другом.</p><p>Книга «Компьютерные сети» Эндрю Таненбаума и Дэвида Уэзеролла уже стала классикой в сфере сетевых технологий. В ней авторы изложили основные концепции компьютерных сетей. Темы идут последовательно, начиная от физического уровня модели сети и заканчивая прикладным уровнем и безопасностью в сетях.</p><p>В пятом издании книги рассматриваются, в частности, беспроводные сети стандарта 802.12 и 802.16, сети 3G, технология RFID, CDN (инфраструктура доставки контента), пиринговые сети, потоковое вещание, интернет-телефония и многое другое.</p><p>По учебнику «Компьютерные сети: Принципы, технологии, протоколы» во множестве российских вузов преподают дисциплину по компьютерным сетям. В книге подробно, без «воды» и доступным языком изложены многие аспекты сетей. Поэтому её можно использовать не только как пособие, но и как справочник.</p><p>В отличие от «Компьютерных сетей» Таненбаума, в книге «Компьютерные сети. Нисходящий подход» Джеймса Куроуза и Кита Росса тема рассматривается сверху вниз в модели сетевой архитектуры, начиная от прикладного уровня и заканчивая канальным. Также в книге авторы уделили внимание сетевой безопасности, администрированию вычислительных сетей, беспроводным и мультимедийным сетевым технологиям. Отлично подойдёт новичкам.</p><p>Андрей Робачевский в своей книге рассказал о внутреннем строении Интернета, в частности, о глобальной адресации и IP, системе доменных имен (DNS) и глобальной межсетевой маршрутизации. Также в книге рассматриваются архитектурная эволюция Интернета и его будущее, основные организации, регулирующие глобальную Сеть, а также вопросы стандартизации, развития и безопасности основных систем Интернета.</p><p>Автор часто переходит с одной темы на другую и использует малоизвестные термины, поэтому книга больше подойдёт опытным специалистам по компьютерным сетям.</p><p>Опытный преподаватель Уэнделл Одом написал множество книг по компьютерным сетям от издательства Cisco Press, включая книги для подготовки к экзаменам CCNA и по технологиям Cisco QOS, а также принимал участие в написании руководства по подготовке к экзамену CCIE. С 1981 года он работал сетевым инженером, консультантом, системным инженером, инструктором и создателем курсов по компьютерным сетям. Сейчас же он занимается проектированием и разработкой средств сертификации. Его богатый опыт лёг в основу руководства для подготовки к экзамену CCNA ICND2 200-105.</p><p>Вы ознакомитесь с подробностями настройки, поиска и устранения неисправностей сети. Книга поможет правильно выстроить свой процесс обучения, устранить пробелы в знаниях компьютерных сетей и проверить себя благодаря множеству экзаменационных вопросов и практических задач.</p><p>Книга поможет разобраться с настройкой и сопровождением стека TCP/IP. Сначала рассказывается о том, зачем нужны протоколы, как они работают, как адресация и маршрутизация позволяют передавать данные по сети и как настроить интерфейс, маршрутизацию и DNS. Затем вы ознакомитесь с NFS, NIS и DHCP, научитесь настраивать Samba для работы в гетерогенной сети Unix/Windows и изучите настройку сервера Apache. Две последние главы книги посвящены безопасности сети и устранению различных проблем. В конце книги вы найдёте справочник по sendmail, gated, демону named, свободной реализации DHCP-сервера dhcpd.</p><p>Книга в двух томах «Routing TCP/IP» Дойла Кэррола — библия для всех желающих изучить протокол TCP/IP. Она больше ориентирована на практическую составляющую, поэтому хорошо подойдёт инженерам, стремящимся поскорее использовать в работе TCP/IP. С помощью книги вы узнаете «изнанку» TCP/IP, освоите настройку и устранение ошибок протокола маршрутизации BGP-4, работу с протоколами IPv4 и IPv6 и научитесь настройке и развёртыванию NAT.</p><p>Хоть книга и является официальным пособием от Cisco, материал в ней, по большей части, независим от платформы. Книга также станет хорошим помощником при подготовке к сертификационному экзамену CCIE проектировщикам сетей, системным администраторам и инженерам.</p><p>IP-маршрутизация является основой межсетевого взаимодействия, и книга «IP Routing Fundamentals» поможет начинающим инженерам с ней разобраться. В справочнике вы найдёте информацию по современным протоколам маршрутизации RIP, IGRP, EIGRP и OSPF, узнаете подробнее о классовой и бесклассовой (CIDR) IP-адресации, а также о маске подсети переменной длины (VLSM), являющейся основой бесклассовой адресации.</p><p>Книга достойна места на полке любого сетевого инженера, которому необходимо настраивать маршрутизацию. В первой части руководства рассматриваются маршрутизаторы и их роли в сетях. Вторая часть посвящена их внутренней работе. В третьей части уделено внимание эксплуатации протоколов маршрутизации, а в четвёртой — вопросам реализации протоколов и будущему маршрутизации.</p><p>«Internetworking with TCP/IP» — это классическое пособие от Дугласа Комера по протоколам TCP/IP и межсетевому взаимодействию, пережившее уже шестое издание. Книга охватывает множество элементов, включая TCP, IPv4, IPv6, DHCP и DNS. Кроме того, в книге описаны современные тенденции развития компьютерных сетей и Интернета, включая классификацию пакетов, программно-определяемые сети (Software Defined Networking, SDN) и сетевые протоколы, используемые в Интернете вещей (Internet of Things, IoT).</p><p>В книге достаточно много теории, объяснённой академическим языком, поэтому руководство не подойдёт для введения в тему. Однако для тех, кто хочет углубиться в межсетевое взаимодействие и работу протоколов TCP/IP, эта книга-бестселлер станет хорошим подспорьем.</p><p>Официальное руководство по стеку протоколов TCP/IP от IBM «TCP/IP Tutorial and Technical Overview» подойдёт как новичкам, стремящимся изучить TCP/IP, так и уже опытным специалистам, которые хотят привести свои навыки работы с TCP/IP в соответствие с действующими стандартами.</p><p>В первой части книги рассказываются основные концепции и история стека TCP/IP и рассматриваются протоколы, входящие в TCP/IP, а также их применение. Во второй части уделено внимание базовым концепциям сетевых приложений, прикладным протоколам в рамках концепций (например FTP), а также приложениям, ставшими по факту стандартом в профессиональном сообществе. Третья часть книги посвящена новым концепциям и расширенным реализациям в архитектуре TCP/IP. В частности, в ней рассматривается постепенное объединение многих ранее разрозненных сетей и служб, использующих технологию IP, его потенциальные опасности и стандарты, используемые для обеспечения безопасности и контроля доступа к сетям и сетевым ресурсам.</p><p>Свободно распространяемая книга «Computer Networking: Principles, Protocols and Practice» Оливьера Бонавентуры (Olivier Bonaventure) служит введением в тему компьютерных сетей. Первая часть книги содержит материал по основным концепциям, включая создание и настройку сети, адресацию, общий доступ к ресурсам и безопасность. Во второй части книги отдельно рассматриваются многие основные протоколы стека TCP/IP: HTTP, TLS, RPC, TCP, UDP, SCTP, IPv6, система доменных имён (DNS) и другое. В конце книги вы найдёте справочник по различным аббревиатурам, встречающимся в стандартах.</p><p>А какими книгами по компьютерным сетям пользовались вы? Или какие книги вам рекомендовали ваши знакомые и преподаватели? Делитесь в комментариях.</p>]]></content:encoded>
    </item>
    <item>
      <title>Разработчики Chrome задумались о прекращении поддержки FTP</title>
      <link>https://tproger.ru/news/chrome-devs-deprecates-ftp</link>
      <comments>https://tproger.ru/news/chrome-devs-deprecates-ftp?scrollTo=tproger-comments</comments>
      <dc:creator><![CDATA[Сергей Штукатуров]]></dc:creator>
      <guid isPermaLink="true">https://tproger.ru/news/chrome-devs-deprecates-ftp</guid>
      <description><![CDATA[<p>Протокол FTP в Chrome считают устаревшим и небезопасным: вместо открытия файлов браузер станет предлагать их скачивание и подталкивать к HTTPS.</p><p>— Читать дальше «<a rel="follow" href="https://tproger.ru/news/chrome-devs-deprecates-ftp">Разработчики Chrome задумались о прекращении поддержки FTP</a>»</p>]]></description>
      <category><![CDATA[Инструменты]]></category>
      <category><![CDATA[Сетевые протоколы]]></category>
      <category><![CDATA[Google Chrome]]></category>
      <category><![CDATA[Новости]]></category>
      <slash:comments>0</slash:comments>
      <pubDate>Tue, 27 Nov 2018 10:25:20 GMT</pubDate>
      <content:encoded><![CDATA[<p>В середине ноября 2018 года в рассылке разработчиков Chrome был <a href="https://groups.google.com/a/chromium.org/forum/#!topic/blink-dev/eopgOoY1QLs">опубликован</a> пост с предложением внести изменения в порядок обработки протокола FTP. Этот шаг рассматривается как часть долгосрочной стратегии по прекращению поддержки браузером устаревшего протокола передачи данных.</p><h3>Планируемые изменения</h3><p>Сейчас браузер, получив файлы по FTP, открывает их, если есть такая возможность. Автор поста Майк Вест (Mike West) предлагает изменить это. Если пользователь обратится к ресурсу по FTP, браузер будет предлагать скачивание информации. При обращении к папке Chrome будет по-прежнему индексировать её, показывая содержимое.</p><p>Вест считает FTP устаревшим и небезопасным и предлагает веб-разработчикам перейти на HTTPS. В iOS удалось полностью отказаться от использования FTP, но некоторые пользователи других ОС ещё используют этот инструмент.</p><p>Среди разработчиков Chrome обсуждение отказа от FTP <a href="https://bugs.chromium.org/p/chromium/issues/detail?id=333943">ведётся</a> с 2014 года. Однако статистика показывает малое, но стабильное количество пользователей, работающих с FTP, что делает полный отказ от поддержки протокола нежелательным. Предложенные Вестом изменения могут повлиять на это число, спровоцировав нисходящий тренд. Для оставшихся верными привычке и традиции разработчики предлагают выпустить модуль к браузеру.</p><h3>Поддержка FTP в других браузерах</h3><p>Среди специалистов нет единого мнения о том, как работать с FTP. Вест указывает, что Safari отображает полученные по этому протоколу ресурсы, но не обрабатывает папки, а платформа Browserstack не поддерживает FTP.</p><p>Firefox в настоящее время работает с протоколом так же, как и Chrome, однако в июне 2018 года один из разработчиков, Том Шустер (Tom Schuster), заявил, что в ближайшем будущем команда планирует убрать из браузера поддержку этого инструмента.</p><p>Разработчики Chrome уже некоторое время мягко, но настойчиво подталкивают пользователей к использованию протокола HTTPS. Начиная с семидесятой версии браузера при попытке ввода личных данных на сайте, работающем не по HTTPS, в адресной строке <a href="https://tproger.ru/news/chrome-70-released/">высвечивается</a> красная предупреждающая плашка Not secure. Впрочем, за применение HTTPS ратует не только Google. Facebook с лета 2018 года <a href="https://tproger.ru/news/facebook-login-https/">принимает</a> переходы и вызовы функции аутентификации из Facebook JavaScript SDK только с сайтов, использующих HTTPS.</p>]]></content:encoded>
    </item>
    <item>
      <title>Популярные браузеры прекратят поддерживать протокол TLS 1.0 и 1.1 в 2020 году</title>
      <link>https://tproger.ru/news/unsupport-tls</link>
      <comments>https://tproger.ru/news/unsupport-tls?scrollTo=tproger-comments</comments>
      <dc:creator><![CDATA[Никита Нельсон]]></dc:creator>
      <guid isPermaLink="true">https://tproger.ru/news/unsupport-tls</guid>
      <description><![CDATA[<p>Google, Microsoft, Mozilla и Apple откажутся от устаревших версий протокола, опирающихся на MD5 и SHA-1; владельцам сайтов советуют перейти на TLS 1.2.</p><p>— Читать дальше «<a rel="follow" href="https://tproger.ru/news/unsupport-tls">Популярные браузеры прекратят поддерживать протокол TLS 1.0 и 1.1 в 2020 году</a>»</p>]]></description>
      <category><![CDATA[Apple]]></category>
      <category><![CDATA[Сетевые протоколы]]></category>
      <category><![CDATA[Безопасность]]></category>
      <category><![CDATA[Microsoft]]></category>
      <category><![CDATA[Google Chrome]]></category>
      <category><![CDATA[Mozilla]]></category>
      <category><![CDATA[Новости]]></category>
      <slash:comments>0</slash:comments>
      <pubDate>Tue, 16 Oct 2018 07:18:08 GMT</pubDate>
      <content:encoded><![CDATA[<p>Google, Microsoft, Mozilla и Apple готовятся прекратить поддержку протокол TLS версий 1.0 и 1.1 к началу 2020 года. <a href="https://ru.wikipedia.org/wiki/TLS">TLS</a> — криптографический протокол, обеспечивающий безопасную связь между узлами в Сети. Сайты используют его для защиты обмена данными между сервером и клиентом.</p><p>TLS 1.0 и 1.1 опирается на <a href="https://security.googleblog.com/2017/02/announcing-first-sha1-collision.html">ненадёжные</a> MD5 и SHA-1. На долю этих версий приходится только около 0,5 % всех HTTPS-соединений.</p><h3>Когда прекратится поддержка TLS 1.0 и 1.1?</h3><p>Google планирует начать отключение TLS 1.0 и 1.1 с Chrome 72, а полностью прекратить поддержку в начале 2020 года с выходом Chrome 81. Владельцы сайтов будут получать уведомления в консоли DevTools о необходимости обновления компонента. Edge и Internet Explorer 11 прекратят поддерживать устаревший протокол в первой половине 2020 года. Firefox и Safari обещают сделать это в марте того же года.</p><h3>Какие меры предпринять?</h3><p>Специалисты рекомендуют администраторам сайтов как можно скорее переходить на новые версии протокола. Команда разработчиков Chrome рекомендует использовать:</p><ul><li>TLS 1.2 и новее;</li><li>наборы шифрования ECDHE и AEAD;</li><li>SHA-2 в подписи сервера.</li></ul><p>Эти меры не требуют обновления сертификата. В случае необходимости сервер может использовать как современные, так и устаревшие компоненты.</p><p>IETF <a href="https://tproger.ru/news/tls-1-3/">утвердила</a> версию TLS 1.3 в марте 2018 года, а в августе того же года Facebook <a href="https://tproger.ru/news/facebook-open-library/">представила</a> для этой версии протокола open source библиотеку Fizz, которая позволяет повысить скорость и безопасность приложений.</p>]]></content:encoded>
    </item>
    <item>
      <title>Сети, Интернет вещей, хранение и обработка данных — тест на базовые знания IT и телекоммуникаций</title>
      <link>https://tproger.ru/quiz/honor-cup-2018</link>
      <comments>https://tproger.ru/quiz/honor-cup-2018?scrollTo=tproger-comments</comments>
      <dc:creator><![CDATA[Типичный программист]]></dc:creator>
      <guid isPermaLink="true">https://tproger.ru/quiz/honor-cup-2018</guid>
      <description><![CDATA[<p>Небольшой тест из трёх конкурсных номинаций Honor Cup 2018: протоколы и сети IP, интернет вещей, а также хранение и обработка данных.</p><p>— Читать дальше «<a rel="follow" href="https://tproger.ru/quiz/honor-cup-2018">Сети, Интернет вещей, хранение и обработка данных — тест на базовые знания IT и телекоммуникаций</a>»</p>]]></description>
      <category><![CDATA[Сетевые протоколы]]></category>
      <category><![CDATA[Интернет вещей]]></category>
      <category><![CDATA[Партнёрский материал]]></category>
      <category><![CDATA[Викторины]]></category>
      <slash:comments>0</slash:comments>
      <pubDate>Tue, 07 Aug 2018 08:50:14 GMT</pubDate>
      <content:encoded><![CDATA[<p>Совместно с <a href="http://bit.ly/2MpFAO1">Honor Cup 2018</a> сделали для вас небольшой тест на проверку знаний в областях протоколов и сетей IP, Интернета вещей и хранения и обработки данных. В конце подскажем, где можно лучше изучить эти темы и продолжить соревнования с другими участниками в онлайн-формате.</p><p>Выбрали три конкурсные номинации и для каждой из них подготовили по три вопроса. Поехали?</p>]]></content:encoded>
    </item>
    <item>
      <title>IPv6: что это и зачем</title>
      <link>https://tproger.ru/translations/ipv4-vs-ipv6</link>
      <comments>https://tproger.ru/translations/ipv4-vs-ipv6?scrollTo=tproger-comments</comments>
      <dc:creator><![CDATA[Никита Прияцелюк]]></dc:creator>
      <guid isPermaLink="true">https://tproger.ru/translations/ipv4-vs-ipv6</guid>
      <description><![CDATA[<p>IPv6 заменяет IPv4 из-за нехватки адресов. Он имеет преимущества в масштабируемости и возможностях. Отличия IPv4 и IPv6 существенны.</p><p>— Читать дальше «<a rel="follow" href="https://tproger.ru/translations/ipv4-vs-ipv6">IPv6: что это и зачем</a>»</p>]]></description>
      <category><![CDATA[Сетевые протоколы]]></category>
      <category><![CDATA[Интернет]]></category>
      <category><![CDATA[TCP/IP]]></category>
      <category><![CDATA[Переводы]]></category>
      <slash:comments>0</slash:comments>
      <pubDate>Fri, 20 Jul 2018 06:55:35 GMT</pubDate>
      <content:encoded><![CDATA[<p>Многие слышали про последнюю версию протокола IP — IPv6, которая должна заменить IPv4. Однако зачем нужна эта замена? Разбираемся в вопросе, попутно рассматривая разницу между обеими версиями и преимущества новой.</p><h2>Зачем менять IPv4 на что-то другое?</h2><p>Потому что адресов IPv4 уже не хватает.</p><p>IP-уровень стека протоколов TCP/IP — наиболее важная часть всей архитектуры Интернета. Тем не менее вскоре после запуска IPv4 стали очевидны его ограничения в плане масштабируемости и возможностей. IPv4 для работы необходимо несколько надстроек вроде ICMP и ARP. К середине 1990-х разработали замену IPv4 — IPv6. Требований к Интернету становилось всё больше, а IPv6 отвечал им лучше, чем предыдущая версия.</p><h2>Каковы самые очевидные отличия IPv4 и IPv6?</h2><ul><li>128 бит в IPv6-адресе представляют собой восемь 16-битных шестнадцатеричных блоков, разделённых двоеточиями. Например, 2dfc:0:0:0:0217:cbff:fe8c:0. Традиционной формой записи IPv4 адреса является запись в виде четырёх десятичных чисел (от 0 до 255), разделённых точками. Через дробь указывается длина маски подсети. Например, 192.168.0.0/16.</li><li>В IPv4 для мультивещания зарезервирована подсеть 224.0.0.0/4. IPv6 для этой цели использует встроенное адресное пространство FF00::/8;</li><li>IPv4 использует широковещательные адреса для передачи широковещательных пакетов, IPv6 — многоадресные группы;</li><li>IPv4 использует 0.0.0.0 в качестве неопределённого адреса, а 127.0.0.1 для создания адреса обратной связи (loopback). В IPv6 используются :: и ::1 соответственно;</li><li>IPv4 использует глобально уникальные публичные адреса для трафика и «частные» адреса, IPv6 — глобально уникальные юникаст-адреса и локальные адреса (FD00::/8).</li></ul><h2>Чем IPv6 лучше?</h2><p>Преимущества IPv6 перед IPv4:</p><ul><li>Более эффективная маршрутизация без фрагментации пакетов;</li><li>Встроенная технология Quality of Service (QoS), которая определяет чувствительные к задержке пакеты;</li><li>Устранение NAT для расширения адресного пространства с 32 до 128 бит;</li><li>Встроенная поддержка IPsec (использование IPsec опционально);</li><li>Автоконфигурация адресов для упрощения администрирования сети;</li><li>Улучшенная структура заголовка с меньшими затратами на обработку.</li></ul><h2>IPv6 более безопасен, чем IPv4?</h2><p>Нет, в теории они одинаково безопасны.</p><p>После запуска IPv6 появилась встроенная возможность шифровать интернет-трафик с помощью распространённого (но не настолько, как SSL) стандарта шифрования IPSec, который не даёт прочитать содержимое трафика при его перехвате. Однако шифрование и расшифровка данных требует оборудования, которое стоит денег. К тому же IPSec можно реализовать и на IPv4, что в теории означает, что IPv4 и IPv6 одинаково безопасны.</p><p>Некоторые эксперты <a href="http://www.fastlaneus.com/blog/2011/08/28/people-say-that-ipv6-is-safer-and-faster-than-ipv4-the-reality-can-be-very-different-why/">утверждают</a>, что пока переход не завершён, пользователи шестой версии находятся в большей опасности, чем пользователи четвёртой. Провайдеры могут использовать IPv6-туннели для предоставления пользователям IPv4 доступа к IPv6-контенту. Злоумышленники могут использовать эти туннели для проведения своих атак.</p><p>Ещё одна потенциальная проблема связана с автоконфигурацией — новой функцией IPv6. Она позволяет устройствам самостоятельно назначать себе IP-адрес на основе MAC-адреса, что может быть использовано сторонними лицами для отслеживания определённых пользователей. Тем не менее на устройствах под управлением популярных операционных систем уже установлены расширения конфиденциальности, поэтому для большинства людей это не будет проблемой.</p><h2>IPv6 быстрее IPv4?</h2><p>Скорость интернета с IPv6 не будет сильно отличаться от скорости с IPv4. С одной стороны, работа IPv6 должна быть быстрее из-за более простого формата. Однако во время перехода некоторые методы вроде IPv6-туннелей будут создавать дополнительную задержку при преобразовании запросов в IPv4 и наоборот.</p><h2>Так почему бы просто не перейти на IPv6?</h2><p>Основная причина — стоимость. Для обновления всех серверов, маршрутизаторов и коммутаторов, которые всё это время зависели только от IPv4, требуется уйма денег и времени.</p><p>Кроме того, чтобы справиться с нехваткой адресов, провайдеры назначают пользователям динамический адрес, который может меняться при подключении к другой сети. После отключения от сети устройства освобождают свой адрес, делая его доступным для других устройств. По сути вы арендуете, но не владеете адресом. Это сильно замедляет переход с IPv4 на IPv6.</p><p>Но это не значит, что IPv6 не распространяется. Напротив, он используется параллельно с IPv4. Как сообщает Google, около 14% его пользователей используют IPv6. А по заявлениям провайдера Comcast, в Соединённых Штатах уже половина пользователей используют IPv6.</p><h2>Резюмируем</h2><p>Нельзя сказать, что IPv6 быстрее и безопаснее, но у него есть ряд преимуществ вроде более эффективной маршрутизации без фрагментации пакетов, встроенной поддержки IPsec и автоконфигурации адресов. А из-за ограниченности адресного пространства IPv4 переход на него неизбежен.</p>]]></content:encoded>
    </item>
    <item>
      <title>Разработчики создали расширение протокола TLS для шифрования имени хоста</title>
      <link>https://tproger.ru/news/esni-extension-release</link>
      <comments>https://tproger.ru/news/esni-extension-release?scrollTo=tproger-comments</comments>
      <dc:creator><![CDATA[Артем Гаврилов]]></dc:creator>
      <guid isPermaLink="true">https://tproger.ru/news/esni-extension-release</guid>
      <description><![CDATA[<p>Расширение ESNI шифрует имя хоста в TLS, не позволяя провайдерам фильтровать трафик. Оно было представлено на хакатоне IETF 102.</p><p>— Читать дальше «<a rel="follow" href="https://tproger.ru/news/esni-extension-release">Разработчики создали расширение протокола TLS для шифрования имени хоста</a>»</p>]]></description>
      <category><![CDATA[Apple]]></category>
      <category><![CDATA[Сетевые протоколы]]></category>
      <category><![CDATA[Безопасность]]></category>
      <category><![CDATA[Mozilla]]></category>
      <category><![CDATA[Cloudflare]]></category>
      <category><![CDATA[Новости]]></category>
      <slash:comments>0</slash:comments>
      <pubDate>Thu, 19 Jul 2018 12:48:24 GMT</pubDate>
      <content:encoded><![CDATA[<p>Разработчики из Apple, Mozilla, CloudFlare и Fastly на хакатоне IETF 102 создали расширение ESNI протокола TLS, которое позволит передавать идентификатор хоста в зашифрованном виде.</p><h3>SNI и ESNI</h3><p>Расширение протокола TLS носит название SNI и используется для размещения на одном IP-адресе нескольких HTTPS-сайтов с их сертификатами. Имя хоста открыто передаётся до процесса шифрования в сообщении ClientHello. Однако при использовании ESNI имя хоста зашифровывается в поле с помощью секрета. Клиент и сервер получат к нему доступ только в случае успешного обмена ключами. Расшифровка поля требует знания открытых и закрытых ключей обеих сторон либо согласованного в процессе установки TLS-соединения секрета.</p><h3>Польза ESNI</h3><p>Новое расширение не позволит сторонним лицам получить информацию о сайтах, к которым обращался пользователь. К примеру, провайдеры не смогут выборочно фильтровать трафик. Библиотеки браузеров Chromium и Firefox, а также HTTP-сервера h20 уже поддерживают начальную спецификацию расширения.</p><p>Amazon и Google уже реализовали возможность сокрытия имени хоста от лишних глаз. Однако с 27 апреля 2018 года Amazon <a href="https://tproger.ru/news/amazon-domain-fronting/">оставила</a> доступ к доменному фронтированию для ограниченного количества пользователей. Ранее, 13 апреля 2018 года, Google полностью <a href="https://tproger.ru/news/google-no-proxy/">отключила</a> ту же функцию, поскольку она использовалась в устаревшем программном обеспечении.</p>]]></content:encoded>
    </item>
    <item>
      <title>BBC раскрыла способ обработки сетевых пакетов в обход ядра Linux</title>
      <link>https://tproger.ru/news/ip-studio-bbc</link>
      <comments>https://tproger.ru/news/ip-studio-bbc?scrollTo=tproger-comments</comments>
      <dc:creator><![CDATA[Наташа Маркова]]></dc:creator>
      <guid isPermaLink="true">https://tproger.ru/news/ip-studio-bbc</guid>
      <description><![CDATA[<p>Корпорация открыла код проекта IP Studio: техники kernel bypass исключают сетевой стек Linux из обработки пакетов и повышают пропускную способность.</p><p>— Читать дальше «<a rel="follow" href="https://tproger.ru/news/ip-studio-bbc">BBC раскрыла способ обработки сетевых пакетов в обход ядра Linux</a>»</p>]]></description>
      <category><![CDATA[Linux]]></category>
      <category><![CDATA[Open Source]]></category>
      <category><![CDATA[Сетевые протоколы]]></category>
      <category><![CDATA[Новости]]></category>
      <slash:comments>0</slash:comments>
      <pubDate>Sat, 05 May 2018 09:49:22 GMT</pubDate>
      <content:encoded><![CDATA[<p>BBC <a href="https://www.bbc.co.uk/rd/blog/2018-04-high-speed-networking-open-source-kernel-bypass">открыла</a> код проекта <a href="https://www.bbc.co.uk/rd/projects/ip-studio">IP Studio</a>, созданного для повышения пропускной способности систем потокового вещания. В нем используются техники обхода kernel bypass, полностью исключающие сетевой стек Linux из процесса обработки пакетов. Они же обеспечивают прямое взаимодействие приложений в пользовательском пространстве с сетевым устройством.</p><h3>Метод обхода</h3><p>При обработке большого числа пакетов через стандартную систему сокетов операции их копирования в память проходят несколько раз. Разработчики BBC обнаружили, что фреймворк <a href="http://info.iet.unipi.it/~luigi/netmap/">Netmap</a> помогает передавать сразу несколько пакетов сетевой карте, сокращая число операций. В качестве сетевого адаптера в корпорации использовали <a href="https://www.mellanox.com/page/products_dyn?product_family=201&amp;mtag=connectx_4_vpi_card">Mellanox ConnectX-4</a> с открытым драйвером для ядра Linux, но без поддержки в Netmap.</p><h3>Реализация</h3><p>В BBC подготовили код для поддержки сетевых адапетров Mellanox в Netmap и добились производительности на уровне 80 Гб/с при однопоточном тестировании. Они также предложили новый драйвер mlx5 с поддержкой прямого взаимодействия c 10/25/40/50/100-гигабитными Mellanox ConnectX-4 и ConnectX-5 для включения в основной состав проекта <a href="https://github.com/luigirizzo/netmap">Netmap</a>.</p><p>Напомним, что в апреле 2018 года <a href="https://tproger.ru/news/linux-4-16/">анонсирована</a> стабильная версия Linux 4.16. Основные изменения коснулись драйверов, общего взаимодействия с аппаратной частью, файловой системы и работы с сетью.</p>]]></content:encoded>
    </item>
    <item>
      <title>Неправильно настроенные протоколы стали причиной утечки 1,5 миллиардов приватных файлов</title>
      <link>https://tproger.ru/news/billions-sensitive-files-exposed</link>
      <comments>https://tproger.ru/news/billions-sensitive-files-exposed?scrollTo=tproger-comments</comments>
      <dc:creator><![CDATA[Светлана Хачатурян]]></dc:creator>
      <guid isPermaLink="true">https://tproger.ru/news/billions-sensitive-files-exposed</guid>
      <description><![CDATA[<p>Около 1,5 миллиарда приватных файлов оказались в открытом доступе из-за облачных хранилищ и протоколов с неверной конфигурацией; объём достиг 12 000 терабайт.</p><p>— Читать дальше «<a rel="follow" href="https://tproger.ru/news/billions-sensitive-files-exposed">Неправильно настроенные протоколы стали причиной утечки 1,5 миллиардов приватных файлов</a>»</p>]]></description>
      <category><![CDATA[Сетевые протоколы]]></category>
      <category><![CDATA[Безопасность]]></category>
      <category><![CDATA[Новости]]></category>
      <slash:comments>0</slash:comments>
      <pubDate>Wed, 11 Apr 2018 17:25:43 GMT</pubDate>
      <content:encoded><![CDATA[<p>Согласно недавнему <a href="https://info.digitalshadows.com/FileSharingDataExposureResearch-Press.html">исследованию</a> агентства Digital Shadows, в Интернете в свободном доступе находятся около полутора миллиардов приватных файлов. Утечка вызвана не действиями киберпреступников — документы попали в Сеть из-за неправильно сконфигурированных облачных хранилищ, протоколов и сервисов для обмена файлами.</p><h3>Распределение утечки</h3><p>Под угрозой находится такая частная информация, как патентные заявки, расчётные ведомости, налоговые декларации, списки пациентов, заявки на авторское право, результаты аудитов безопасности и исходные коды программ. Общий объём открытых данных близок к 12 000 терабайт. Главные источники утечки — файловый хостинг Amazon S3, программа для оптимальной синхронизации файлов rsync и протоколы передачи SMB и FTP.</p><figure><img src="https://media.tproger.ru/uploads/2018/04/Snimok-jekrana-2018-04-11-v-19.04.29.jpg" alt="" /></figure><p>Самое большое число открытых приватных данных обнаружилось на территории стран Евросоюза и США.</p><figure><img src="https://media.tproger.ru/uploads/2018/04/Snimok-jekrana-2018-04-11-v-19.12.30.png" alt="распределение утечек на карте мира" /></figure><figure><img src="https://media.tproger.ru/uploads/2018/04/Snimok-jekrana-2018-04-11-v-19.12.23.png" alt="распределение утечек на карте Европы" /></figure><p>Иногда пользователи систем страдают не от собственной невнимательности. Напомним, что в конце марта 2018 года персональные данные 87 миллионов пользователей Facebook <a href="https://tproger.ru/news/facebook-87-million-leak/">попали</a> в третьи руки и были использованы для таргетированной политической рекламы в США.</p>]]></content:encoded>
    </item>
    <item>
      <title>IETF утвердила последнюю версию протокола TLS</title>
      <link>https://tproger.ru/news/tls-1-3</link>
      <comments>https://tproger.ru/news/tls-1-3?scrollTo=tproger-comments</comments>
      <dc:creator><![CDATA[Макс Голосов]]></dc:creator>
      <guid isPermaLink="true">https://tproger.ru/news/tls-1-3</guid>
      <description><![CDATA[<p>TLS 1.3 ускоряет загрузку веб-страниц на мобильных устройствах, убирает уязвимые функции и добавляет более сложные алгоритмы шифрования.</p><p>— Читать дальше «<a rel="follow" href="https://tproger.ru/news/tls-1-3">IETF утвердила последнюю версию протокола TLS</a>»</p>]]></description>
      <category><![CDATA[Сетевые протоколы]]></category>
      <category><![CDATA[Безопасность]]></category>
      <category><![CDATA[Новости]]></category>
      <slash:comments>0</slash:comments>
      <pubDate>Mon, 26 Mar 2018 18:18:20 GMT</pubDate>
      <content:encoded><![CDATA[<p>Целевая группа Internet Engineering Task Force (IETF) <a href="https://tools.ietf.org/html/draft-ietf-tls-tls13-28">одобрила</a> TLS 1.3. Данное обновление является 28-ой версией протокола защиты транспортного уровня за последние 4 года.</p><h3>Основные изменения</h3><p>TLS 1.3 значительно увеличивает скорость загрузки веб-страниц для мобильных устройств. Это достигается путем «удаления» соединения установления сеанса.</p><figure><img src="https://media.tproger.ru/uploads/2018/03/Bezymjannyj-2.jpg" alt="" /></figure><p>Среди добавленных функций числятся также защита от использования старого аппаратного или программного обеспечения, удаление всех примитивов и функций, позволяющих использовать общие уязвимости, и реализация более сложных алгоритмов шифрования.</p><p>Хотя Chrome, Firefox, Opera и Edge уже поддерживают TLS 1.3, по умолчанию они не работают. Исследователи Cloudflare утверждают, что только 0,6 % трафика проходит с помощью новой версии протокола.</p>]]></content:encoded>
    </item>
    <item>
      <title>Let's Encrypt добавила поддержку wildcard-сертификатов</title>
      <link>https://tproger.ru/news/acmev2-wildcard-certificate</link>
      <comments>https://tproger.ru/news/acmev2-wildcard-certificate?scrollTo=tproger-comments</comments>
      <dc:creator><![CDATA[Светлана Хачатурян]]></dc:creator>
      <guid isPermaLink="true">https://tproger.ru/news/acmev2-wildcard-certificate</guid>
      <description><![CDATA[<p>Обновлённый протокол ACMEv2 позволяет получить один wildcard-сертификат для всех поддоменов группы; подтверждение таких доменов выполняется через DNS.</p><p>— Читать дальше «<a rel="follow" href="https://tproger.ru/news/acmev2-wildcard-certificate">Let's Encrypt добавила поддержку wildcard-сертификатов</a>»</p>]]></description>
      <category><![CDATA[Интернет]]></category>
      <category><![CDATA[Веб-разработка]]></category>
      <category><![CDATA[Сетевые протоколы]]></category>
      <category><![CDATA[Безопасность]]></category>
      <category><![CDATA[Новости]]></category>
      <slash:comments>0</slash:comments>
      <pubDate>Fri, 16 Mar 2018 14:15:24 GMT</pubDate>
      <content:encoded><![CDATA[<p>Центр Let’s Encrypt, предоставляющий веб-сайтам криптографические сертификаты на безвозмездной основе, <a href="https://community.letsencrypt.org/t/acme-v2-and-wildcard-certificate-support-is-live/55579">объявил</a> о вводе в действие обновлённого протокола ACME, прошедшего проверку «Инженерного совета Интернета» (IETF). Стандарт описывает взаимодействие клиента и REST-сервера и используется для перевода веба на HTTPS.</p><h3>Особенности</h3><p>Новый протокол позволяет администраторам сайтов получить групповой сертификат (wildcard), с помощью которого можно разом защитить всю группу поддоменов. Это особенно актуально в условиях массового перевода стандартов безопасности в область HTTPS. Например, в браузере Firefox с декабря 2017 года все сайты на протоколе HTTP <a href="https://tproger.ru/news/firefox-will-warn-about-http-connection/">помечаются</a> как небезопасные, а в Chrome эта функция <a href="https://tproger.ru/news/google-chrome-http-insecure/">активирована</a> уже более года.</p><p>Для активации wildcard-сертификата необходимо установить клиентское программное обеспечение с поддержкой протокола ACMEv2. Чтобы пользоваться новыми возможностями, владельцам сертификатов, полученных с помощью ACMEv1, потребуется повторная авторизация. Подтверждение доменов, для которых запрашиваются «вайлдкарды», пока возможно только через DNS.</p><p>Несмотря на отсутствие точной даты истечения срока жизни ACMEv1, Let’s Encrypt намерен как можно скорее перевести всех пользователей на обновлённый стандарт. Это позволит приблизить воплощение главной цели организации — перевод всех веб-ресурсов на HTTPS. На момент написания новости общая доля сайтов с поддержкой шифрования <a href="https://letsencrypt.org/stats/">составляет</a> примерно 69 %. Чуть менее половины из них пользуются бесплатными сертификатами Let’s Encrypt.</p>]]></content:encoded>
    </item>
    <item>
      <title>Стартап Nuco представил прототип блокчейн-интернета Aion</title>
      <link>https://tproger.ru/news/aion-blockchain-network</link>
      <comments>https://tproger.ru/news/aion-blockchain-network?scrollTo=tproger-comments</comments>
      <dc:creator><![CDATA[Иван Бирюков]]></dc:creator>
      <guid isPermaLink="true">https://tproger.ru/news/aion-blockchain-network</guid>
      <description><![CDATA[<p>Сеть Aion от стартапа Nuco должна связать разные блокчейн-платформы и дать им общий способ обмениваться информацией с внешними организациями.</p><p>— Читать дальше «<a rel="follow" href="https://tproger.ru/news/aion-blockchain-network">Стартап Nuco представил прототип блокчейн-интернета Aion</a>»</p>]]></description>
      <category><![CDATA[Сетевые протоколы]]></category>
      <category><![CDATA[Блокчейн]]></category>
      <category><![CDATA[Новости]]></category>
      <slash:comments>0</slash:comments>
      <pubDate>Thu, 31 Aug 2017 17:53:38 GMT</pubDate>
      <content:encoded><![CDATA[<p>Американский стартап Nuco представил сеть под названием <a href="https://aion.network">Aion</a>, которая даст блокчейн-платформам способ обмениваться информацией. Фактически это — основанный на распределенном реестре Интернет.</p><p>Концепция блокчейна масштабируется и уже неотделима от экономической системы, и поэтому ей требуется общий способ передачи информации. Хотя каждая блокчейн-платформа отвечает только за внутреннюю безопасность, рано или поздно ей приходится работать с банками и другими внешними организациями. И именно для этого необходима общая инфраструктура. Например, такая, как Aion — первая сеть обмена информацией между разными блокчейн-платформами.</p><h3>И что же, скоро можно будет подключаться?</h3><p>К сожалению, не всё так гладко. Во-первых, необходимо убедить закрытые блокчейн-сообщества обмениваться информацией между собой, не говоря уже о передаче данных легальным коммерческим структурам или государственным органам. Во-вторых, сам принцип подразумевает использование единственного способа передачи информации, а следовательно, создание открытого для всех сетевого протокола. Блокчейн превратится в новый Интернет, активность в котором власти смогут контролировать.</p><h3>Какой тогда в этом смысл?</h3><p>Плюсов у глобальной блокчейн-сети больше. Например, компании смогут использовать криптовалюту для перемещения данных с целью монетизации. Генеральный директор Nuco Мэттью Споук видит Aion, как рыночную необходимость. Тот момент, когда блокчейн станет массовым и потребует наличия инфраструктуры, уже не за горами — и тогда рынку поможет Aion.</p>]]></content:encoded>
    </item>
    <item>
      <title>Курс «Администрирование Linux»</title>
      <link>https://tproger.ru/video/linux-administration</link>
      <comments>https://tproger.ru/video/linux-administration?scrollTo=tproger-comments</comments>
      <dc:creator><![CDATA[Дмитрий Баранчук]]></dc:creator>
      <guid isPermaLink="true">https://tproger.ru/video/linux-administration</guid>
      <description><![CDATA[<p>Видеокурс 2017 года от «Технотрек Mail.ru Group» и МФТИ посвящён Linux, интернет-сервисам, отказоустойчивости, производительности и безопасности.</p><p>— Читать дальше «<a rel="follow" href="https://tproger.ru/video/linux-administration">Курс «Администрирование Linux»</a>»</p>]]></description>
      <category><![CDATA[Linux]]></category>
      <category><![CDATA[Сетевые протоколы]]></category>
      <category><![CDATA[Обучающие курсы]]></category>
      <category><![CDATA[Системное администрирование]]></category>
      <category><![CDATA[Видео]]></category>
      <slash:comments>0</slash:comments>
      <pubDate>Mon, 05 Jun 2017 19:11:14 GMT</pubDate>
      <content:encoded><![CDATA[<p>Видеокурс, посвященный основам системного администрирования Linux от Сергея Клочкова. Курс записан в 2017 году в рамках образовательного проекта “Технотрек Mail.ru Group” при МФТИ.</p><p>В курсе рассматриваются основы системного администрирования интернет-сервисов, обеспечения их отказоустойчивости, производительности и безопасности, а также особенности устройства ОС Linux, наиболее широко применяемой в подобных проектах.</p><p>На момент публикации записи курс еще не завершен и дополняется.</p><p>Также смотрите наши статьи, новости и видео по Linux.</p>]]></content:encoded>
    </item>
    <item>
      <title>Курс лекций по администрированию Linux</title>
      <link>https://tproger.ru/video/basic-linux-administration</link>
      <comments>https://tproger.ru/video/basic-linux-administration?scrollTo=tproger-comments</comments>
      <dc:creator><![CDATA[Типичный программист]]></dc:creator>
      <guid isPermaLink="true">https://tproger.ru/video/basic-linux-administration</guid>
      <description><![CDATA[<p>Десять видеолекций Дмитрия Молчанова о серверах на Linux: практические кейсы и теория, которые подготовят к работе системного администратора.</p><p>— Читать дальше «<a rel="follow" href="https://tproger.ru/video/basic-linux-administration">Курс лекций по администрированию Linux</a>»</p>]]></description>
      <category><![CDATA[Linux]]></category>
      <category><![CDATA[Сетевые протоколы]]></category>
      <category><![CDATA[Обучающие курсы]]></category>
      <category><![CDATA[Системное администрирование]]></category>
      <category><![CDATA[Видео]]></category>
      <slash:comments>0</slash:comments>
      <pubDate>Mon, 24 Apr 2017 19:20:21 GMT</pubDate>
      <content:encoded><![CDATA[<p>Видеокурс из 10 лекций даёт базовые знания об администрировании серверов на операционных системах семейства Linux. Подойдет в том числе тем, кто ещё совсем не знаком с Linux. Курс не сделает из вас системного администратора, но подготовит вас к этому, и расскажет о том, как стать продвинутым пользователем.</p><p>В основном всё разбирается на примере практических кейсов, но для их понимания даются и необходимые теоретические знания.</p><p>Лектор — Дмитрий Молчанов. Курс записан осенью 2015 года в рамках Технопарка Mail.ru Group в МГТУ им. Н.Э. Баумана. Слайды курса доступны для скачивания.</p><p>Также смотрите наши статьи, новости и видео по Linux.</p>]]></content:encoded>
    </item>
    <item>
      <title>Создатель SSH рассказал, как протокол получил порт 22</title>
      <link>https://tproger.ru/news/ssh-port</link>
      <comments>https://tproger.ru/news/ssh-port?scrollTo=tproger-comments</comments>
      <dc:creator><![CDATA[Дарья Вандакурова]]></dc:creator>
      <guid isPermaLink="true">https://tproger.ru/news/ssh-port</guid>
      <description><![CDATA[<p>Тату Илонен написал первую версию протокола весной 1995 года и выбрал свободный номер рядом с портами telnet и FTP ради авторитетности разработки.</p><p>— Читать дальше «<a rel="follow" href="https://tproger.ru/news/ssh-port">Создатель SSH рассказал, как протокол получил порт 22</a>»</p>]]></description>
      <category><![CDATA[История IT]]></category>
      <category><![CDATA[Сетевые протоколы]]></category>
      <category><![CDATA[Новости]]></category>
      <slash:comments>0</slash:comments>
      <pubDate>Mon, 24 Apr 2017 18:34:12 GMT</pubDate>
      <content:encoded><![CDATA[<p>На днях создатель протокола <a href="https://www.ssh.com/ssh/">SSH</a> Тату Илонен поделился историей его создания. Дальше идёт повествование с его слов.</p><p>Первую версию SSH я написал весной 1995 года. В то время широко использовались протоколы <a href="https://www.ssh.com/ssh/telnet">telnet</a> и <a href="https://www.ssh.com/ssh/ftp/">FTP</a>. И я решил создать собственный протокол, который бы заменил используемые версии. У telnet был порт 23, у FTP — 21. Порт 22 как раз не был занят, и я подумал, что такой номер добавит авторитетности моему протоколу.</p><p>Процесс распределения портов в то время был достаточно прост. Интернет-пространство было намного меньше, интернет-бум ещё только начинался. Порты распределяла Администрация адресного пространства Интернет (IANA) в лице <a href="https://en.wikipedia.org/wiki/Jon_Postel">Джона Постела</a> и <a href="https://en.wikipedia.org/wiki/Joyce_K._Reynolds">Джойса К. Рейнольдса</a>. 10 июля 1995 года я отправил туда e-mail с описанием преимуществ своего протокола и просьбой выделить для него порт 22. И на следующий день мне пришёл ответ с официальным закреплением порта 22 за SSH. 12 июля я отправил финальную бета-версию на тестирование в Технологический университет Хельсинки, отправил уведомления в рассылку cypherpunks@toad.com и ещё нескольким людям и сообществам.</p><h3>Изменения порта SSH на сервере</h3><p>SSH-сервера всё ещё по умолчанию работают на порту 22. Но бывают и исключения, например, для тестирования или запуска нескольких конфигураций на одном хосте. Иногда сервер может быть запущен и без root-привилегий, тогда он запускается на непривилегированном порту (например, порт с номером от 1024). Изменить номер порта можно через команду /etc/ssh/sshd_config. Он также может быть указан в опции -p для <a href="https://www.ssh.com/ssh/sshd/">sshd</a>.</p>]]></content:encoded>
    </item>
    <item>
      <title>Одна команда в терминале делает ваш локальный сервер доступным всему интернету по специальному HTTPS адресу: обзор утилиты Ngrok</title>
      <link>https://tproger.ru/articles/ngrok-tutorial</link>
      <comments>https://tproger.ru/articles/ngrok-tutorial?scrollTo=tproger-comments</comments>
      <dc:creator><![CDATA[Тарас Сереванн]]></dc:creator>
      <guid isPermaLink="true">https://tproger.ru/articles/ngrok-tutorial</guid>
      <description><![CDATA[<p>Утилита создаёт туннель к localhost и выдаёт публичный адрес вида 5057493e.ngrok.io — достаточно указать порт, на котором запущен ваш веб-сервер.</p><p>— Читать дальше «<a rel="follow" href="https://tproger.ru/articles/ngrok-tutorial">Одна команда в терминале делает ваш локальный сервер доступным всему интернету по специальному HTTPS адресу: обзор утилиты Ngrok</a>»</p>]]></description>
      <category><![CDATA[Веб-разработка]]></category>
      <category><![CDATA[Сетевые протоколы]]></category>
      <category><![CDATA[Статьи]]></category>
      <slash:comments>0</slash:comments>
      <pubDate>Thu, 20 Oct 2016 20:51:21 GMT</pubDate>
      <content:encoded><![CDATA[<p>У вас есть локальный сервер, на котором вы ведете всю разработку, а её результаты показываете, загружая код на хостинг или скидывая заказчику скриншоты — забудьте об этом.</p><p>Вашу проблему решает ngrok — простейшая утилита для создания туннеля к localhost.</p><figure><img src="https://media.tproger.ru/uploads/2016/10/demo.png" alt="" /></figure><p>С её использованием справится даже новичок, для создания туннеля достаточно выполнить следующую команду:</p><p>… где 80 — это порт, на котором запущен ваш веб-сервер. 80 является портом по-умолчанию для многих серверов, так  что скорее всего всё заработает без изменений. В ответ получите на экран вывод следующего типа:</p><figure><img src="https://media.tproger.ru/uploads/2016/10/1432701507Image-2-Tunnel-status-online.png" alt="" /></figure><p>Где 5057493e.ngrok.io — это адрес, по которому ваш локальный сервер стал доступен в интернете.</p><p>Если ваш сервер открывается не по адресу http://localhost/, а на него через файл hosts назначен домен, например, mysite.dev, то запустить ngrok для него не сильно сложнее.</p><p>Вам поможет следующая команда:</p><p>…где 80 является портом вашего сервера, а mysite.dev доменом, по которому он отвечает.</p><p>Ngrok доступ для Linux, Mac, Windows и FreeBSD. Со всеми возможностями программы можно ознакомиться в <a href="https://ngrok.com/docs">документации</a>.</p>]]></content:encoded>
    </item>
  </channel>
</rss>