Рубрика «tcp»

В данной статье я хочу сделать попытку обоснования выбора реализуемой мною системы «Умный дом». Это уже третий вариант разработанного мной «Умного дома» (вообще эта тема меня заинтересовала с середины 90-х годов):

  • Первый проект был создан на базе ПК с подключением периферийных устройств через COM‑порт.

  • Второй проект был разработан лет 8 назад, основывался на сотовом телефоне в качестве главного узла и подчиненных устройств подключаемых к нему с помощью интерфейса RS485. Ссылка на источник [1].

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

Эта статья предназначена для тех, кто только начинает разбираться в IT и пока путается в терминах вроде IP, маски подсети, ISO, свичей, роутеров, TCP и UDP.

Мы разберём основы максимально простыми словами — без углубления в детали. После прочтения вы сможете увереннее общаться с коллегами и понимать, о чём идёт речь, когда говорят про сети.

Начнём с терминов, постепенно систематизируем знания и сведём всё к моделям OSI и TCP/IP.

⚠ Предупреждение для сениоров с чувствительной психикой: академические термины будут объяснены через простые аналогии.

Базовые термины

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

По материалам доклада на конференции.

В мобильной сети 4G (LTE) – основной сети мобильного доступа в интернет (сети 5G у нас пока нет) – максимальная скорость, определяемая стандартом и заявляемая операторами, составляет 300 Мбит/с. Однако получить такую скорость на телефоне (компьютере) практически невозможно. Средняя скорость по официальной статистике – 25 Мбит/с, но ее получают не все и не всегда. Сплошь и рядом скорость опускается до единиц мегабит и даже ниже 1 Мбит/с. Разберемся, почему это происходит.

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

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

Но сеть — это всего лишь один из уровней. Операционная система тоже играет по своим правилам: классификация, очереди, правила фаервола, NAT — все это влияет на то, что проходит, а что отбрасывается без следа. Каждый слой работает по-своему, и вместе они формируют ответ на вопрос: «А этот пакет вообще можно пропустить?»

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

Пишем стек TCP-IP с нуля: Ethernet, ARP, IPv4 и ICMPv4 - 1

Часть 1: Ethernet и ARP

Написание собственного стека TCP/IP поначалу может показаться пугающей задачей. И в самом деле, за свой тридцатилетний срок жизни TCP впитал в себя множество спецификаций. Однако базовая спецификация остаётся относительно компактной1Читать полностью »

Дело всегда в TCP_NODELAY - 1


Занимаясь отладкой проблем в легаси-системах, я первым делом проверяю, включён ли режим TCP_NODELAY. И так делаю не только я. Все знакомые мне разработчики распределённых систем потратили немало часов на решение проблем с задержкой, которые быстро исправлялись простым включением этой опции сокета, указывая на ошибочность базовых настроек или использование устаревшей концепции.

Но для начала давайте проясним, о чём вообще речь. Лучше всего нам в этом поможет документ RFC896, изданный Джоном Нейглом в 19841 году. Вот описание задачи:

Обработка малых пакетов сопряжена с одной специфичной проблемой. Когда для передачи односимвольных сообщений с клавиатуры используется TCP, обычно для отправки одного байта полезных данных задействуется пакет размером 41 байт (один байт данных и 40 байт заголовка). Такие издержки в 4 000%, конечно, раздражают, но в слабо нагруженных сетях ещё терпимы.

Если коротко, то Нейгл хотел сократить затраты на отправку TCP-заголовков, чтобы повысить пропускную способность сети — вплоть до 40х! Эти крохотные пакеты поступали из двух основных источников: интерактивных приложений вроде оболочек, где пользователь вводил по одному байту за раз, и плохо реализованных программ, которые передавали сообщения ядру через множество вызовов write(). Предложенное Нейглом исправление оказалось простым и продуманным.Читать полностью »

Всем привет, меня зовут Вадим Макеров, я работаю в iSpring бэкенд-разработчиком.

Мы разрабатываем систему управления обучением (LMS - learning management system) iSpring Learn. Внутри система представляет из себя модульный монолит на PHP с почти сотней микросервисов на Go. Мы используем Kubernetes, Service Mesh, gRPC и прочие модные технологии :) Сейчас я работаю во внутренней команде Core, которая занимается внутренними улучшениями нашей системы.

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

Меня зовут Александр Азимов, я руковожу группой сетевого R&D в Yandex Infrastructure — команде, которая в том числе создаёт системы управления трафиком всего Яндекса. Cегодня мы поговорим о том, как почти полностью избавиться от стейтов на L4-балансировщике.

В статье я покажу разработанный в Яндексе алгоритм двойного консистентного хеширования, который помогает минимизировать необходимость хранения таблицы соединений на L4-балансировщике. И поделюсь готовым патчем на GitHub, который позволит каждому перепроверить наши результаты.

Для тех, кому удобнее смотреть, — запись доклада на эту тему с прошлого Читать полностью »

Привет!

Если у вас уже есть некоторый опыт работы с веб-серверами, то вам наверняка доводилось попадать в классическую ситуацию «адрес уже используется»‬ (EADDRINUSE).

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

Если вам просто интересно, как именно работает системный вызов socket(2)Читать полностью »


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