Программирование {BookFlow}
Программирование {BookFlow}
2 902 подписчиков · @bookflow
К каналу →
🚀 Подборка полезных IT каналов в Max Системное администрирование, DevOps 📌 https://max.ru/i_odmin Все для системного администратора https://max.ru/bash_srv Bash Советы https://m…
Читать далее →
6 929
📌 7 распространённых асимптотических сложностей алгоритмов 1. O(1) — Константное время - Время выполнения не зависит от размера входных данных. - Пример: доступ к элементу массив…
Читать далее →
6 860

Пишем стек TCP/IP: Ethernet и ARP

Давай программировать стек TCP/IP. Part 1: Ethernet & ARP

Написание собственного стека TCP/IP может показаться сложной задачей. Действительно, за более чем тридцать лет существования TCP накопилось множество спецификаций. Однако основная спецификация на удивление компактна — важные части включают разбор заголовков TCP, автомат конечных состояний, контроль перегрузок и вычисление времени ожидания повторной передачи.

Наиболее распространенные протоколы второго и третьего уровней — Ethernet и IP, соответственно, — в сравнении с TCP гораздо проще. В этой серии статей мы реализуем минимальный стек TCP/IP в пространстве пользователя для Linux.

Цель этих публикаций и создаваемого ПО исключительно образовательная — углубленное изучение сетевого и системного программирования.

TUN/TAP устройства
Чтобы перехватывать сетевой трафик низкого уровня из ядра Linux, мы будем использовать TAP-устройство Linux. Если кратко, TUN/TAP устройства часто применяются приложениями в пространстве пользователя для работы с трафиком на уровне L3 и L2 соответственно. Популярным примером является туннелирование, когда пакет инкапсулируется внутри полезной нагрузки другого пакета.

Преимущество TUN/TAP устройств в том, что их легко настроить в программе в пространстве пользователя, и они уже используются во множестве программ, таких как OpenVPN.

Поскольку мы хотим строить стек сетевого взаимодействия, начиная со второго уровня, нам потребуется TAP-устройство. Мы создаем его следующим образом:

/*
* Taken from Kernel Documentation/networking/tuntap.txt
*/
int tun_alloc(char *dev)
{
struct ifreq ifr;
int fd, err;

if( (fd = open("/dev/net/tap", O_RDWR)) < 0 ) {
print_error("Cannot open TUN/TAP dev");
exit(1);
}

CLEAR(ifr);

/* Flags: IFF_TUN - TUN device (no Ethernet headers)
* IFF_TAP - TAP device
*
* IFF_NO_PI - Do not provide packet information
*/
ifr.ifr_flags = IFF_TAP | IFF_NO_PI;
if( *dev ) {
strncpy(ifr.ifr_name, dev, IFNAMSIZ);
}

if( (err = ioctl(fd, TUNSETIFF, (void *) &ifr)) < 0 ){
print_error("ERR: Could not ioctl tun: %s\n", strerror(errno));
close(fd);
return err;
}

strcpy(dev, ifr.ifr_name);
return fd;
}

https://www.saminiir.com/lets-code-tcp-ip-stack-1-ethernet-arp/

👉 @Bookflow
🔐 Путеводитель по аутентификации: от Cookies до OAuth 2.0 Разбираться в способах входа пользователя в систему можно бесконечно, но эта шпаргалка отлично раскладывает всё по полочк…
Читать далее →
6 887
🔥 СВЕЖИЙ АД, ПРЯМО В ТВОЙ МОНИТОР! 💀 Они думали, что ад остался на Марсе… Они ошибались. DOOM возвращается — теперь в виде лёгкого, как бензопила в руках Мародёра, и безжалостного…
Читать далее →
6 731
Другие главы канала «Программирование {BookFlow}»
Выберите главу, чтобы продолжить чтение
Все посты →
Глава от 28.05.2026
RAG против Агентов (RAGs vs Agents) Спросите LLM (большую языковую модель) о да…
👁 548 просмотров
Глава от 27.05.2026
🌦 Weathr - погода прямо в терминале Если ты живёшь в консоли, то это маст-хэв: …
👁 709 просмотров
Глава от 26.05.2026
ИИ уже помогает инженерам по тестированию анализировать логи, генерировать тест-…
👁 779 просмотров
Глава от 25.05.2026
Как избежать выгорания программисту 🔥👨‍💻 Выгорание – частая “болезнь” айтишнико…
👁 762 просмотров
Глава от 25.05.2026
Работа аналитика - уже не только про цифры! Это про умение принимать решения бы…
👁 778 просмотров
Глава от 25.05.2026
🔍 Мини-гайд: Индексы в PostgreSQL 1. Зачем нужны индексы? ▪️ Ускоряют SELECT, …
👁 857 просмотров
Глава от 24.05.2026
🚀 Подборка полезных IT каналов в Max Системное администрирование, DevOps 📌 ht…
👁 896 просмотров
Глава от 23.05.2026
↗️ 10 основных алгоритмов на графах, которые нужно знать! 1. Поиск в глубину (D…
👁 1 019 просмотров
Глава от 23.05.2026
Работа аналитика - уже не только про цифры! Это про умение принимать решения бы…
👁 1 078 просмотров

Популярные посты канала «Программирование {BookFlow}»

🚀 Подборка полезных IT каналов в Max Системное администрирование, DevOps 📌 https://max.ru/i_odmin Все для системного администратора https…
👁 7 902 просмотров
Большая O-нотация 101: Секрет написания эффективных алгоритмов 👉 @Bookflow
👁 7 843 просмотров
↗️ 10 основных алгоритмов на графах, которые нужно знать! 1. Поиск в глубину (DFS, Depth First Search) 2. Поиск в ширину (BFS, Breadth Firs…
👁 7 807 просмотров
🔍 Мини-гайд: Индексы в PostgreSQL 1. Зачем нужны индексы? ▪️ Ускоряют SELECT, JOIN, ORDER BY, GROUP BY. ▪️Снижают нагрузку при выборках бе…
👁 7 795 просмотров
Пишем собственную виртуальную машину В этом руководстве я научу вас, как написать собственную виртуальную машину (VM), которая сможет выпол…
👁 7 784 просмотров
Паттерн Saga автор: roadofbugs 👉 @Bookflow
👁 7 784 просмотров
🌦 Weathr - погода прямо в терминале Если ты живёшь в консоли, то это маст-хэв: weathr рисует живую погоду в виде ASCII-анимаций - дождь, сн…
👁 7 771 просмотров
🚀 Подборка полезных IT каналов в Max Системное администрирование, DevOps 📌 https://max.ru/i_odmin Все для системного администратора https…
👁 7 743 просмотров
⚡️ РКН фактически «положил» обновления Linux в России - разработчики массово жалуются прямо в чате Минцифры. После замедления Telegram и вв…
👁 7 731 просмотров
🧱 Пишем Тетрис на C++: Идеальный старт для новичка Написание Тетриса это своеобразный обряд посвящения для любого игрового разработчика. Эт…
👁 7 730 просмотров
5 малоизвестных Git-приёмов, которые спасут вашу жизнь 1️⃣ git reflog — история всех ваших шагов Не только коммиты, но и переключения ве…
👁 7 721 просмотров
Я дал 100 AI-агентам равный бюджет — они изобрели кредиты под 15% Дал 100 AI-агентам по 1000 токенов и одну цель — набрать максимум очков. …
👁 7 715 просмотров
📝 Гайд: Как научиться читать Assembly Не нужно быть инженером Intel, чтобы понимать ассемблер. Это навык, который резко прокачивает пониман…
👁 7 702 просмотров
Архитектура Docker состоит из трех основных компонентов 🔹 Клиент Docker Это интерфейс, через который осуществляется взаимодействие с пользо…
👁 7 696 просмотров
🚀 Регулярные выражения (RegEx) в Linux: Полная шпаргалка Сохраняйте в избранное, чтобы всегда было под рукой при работе с grep, sed, awk ил…
👁 7 681 просмотров
Как работает Git? Для начала важно понять, где хранится наш код. Обычно предполагается, что существует только два места: удалённый сервер (…
👁 7 670 просмотров
Сайт РКН мёртв уже третий день 👉 @Bookflow
👁 7 544 просмотров
В чём разница между аутентификацией на сессиях и JWT? Многие разработчики не знают об этом различии, хотя оно критически важно. Большинств…
👁 7 539 просмотров
Антипаттерн: "Сначала MVP — потом нормальная схема" Частая ошибка при старте проекта — отложить продумывание структуры базы «на потом»: «С…
👁 7 516 просмотров
Сборка C++ проектов. Оптимизации компилятора. Inline, constexpr, alignment. Game Engine серии 0:00:00 - Введение 0:02:26 - Дизассемблер 0:0…
👁 7 510 просмотров

Связанные темы в других каналах

Каналы из той же тематики, где часто появляются близкие сюжеты
Вся тема →
@matematik_andrei_channel
Математик Андрей
Основатель онлайн-школы «Точка Знаний» В канале: — короткие видео по темам 1-11 классов — разбор задач ВПР/ОГЭ/ЕГЭ — применение математики в жизни Получить консульта…
👥 218 376 · -299/7д
@obr_mo
Образование Подмосковья
Свежие новости об образовании в Московской области: школы, колледжи, детские сады, вузы. Узнавайте первыми о реформах, олимпиадах, ЕГЭ, строительстве новых учреждений и у…
👥 80 933 · +4 408/7д
@Moscow_school
Московское образование
Успех начинается здесь! Приложение «ЗОЖ с МЭШиком» https://max.ru/meshik_app_bot Для СМИ: press-donm@mos.ru Сайт: mosobr.shkolamoskva.ru ВК: vk.com/educationdep ТГ: htt…
👥 68 196 · +36/7д
@minprosrf
Минпросвещения России
Официальный канал Министерства просвещения России. Всё об образовании для родителей, педагогов и учащихся. Сайт edu.gov.ru ВКонтакте vk.com/minprosvet Однокл
👥 54 105 · +442/7д
@Lingvaa
Лингвист | Русский язык Образование
Канал №1 для тех, кто звонИт, а не звОнит! По рекламе: https://clck.ru/3R7DoR Биржа: https://telega.in/c/Lingvaa
👥 53 567 · -114/7д
@iqkot
Образование
Образовательное сообщество, где знания становятся доступными каждому. Мы собираем и структурируем материалы по саморазвитию, обучению и смежным темам. Здесь вы найдете ле…
👥 48 386 · -4 040/7д
🏷 Темы и теги
#книги по программированию #новости технологий #программирование #it-конференции #видеоуроки #лекции #Образование
📋 О канале Программирование {BookFlow}
Мы публикуем лекции и книги по программированию, видеоуроки, доклады с IT конференций, новости технологий.

Группа в https://vk.com/bookflow.

Реклама: https://t.me/evgenycarter
🔍 Архив всех постов Макс
Поиск по 7,251,616 постам из 199,569 каналов
Попробовать за 1 ₽ →
Удалить пост или канал с МАКСОТЕКИ
Заявка подтверждается через бота Макс: нужно быть администратором канала и добавить бота МАКСОТЕКИ в администраторы. После проверки канал или конкретный пост скрывается с сайта.
📊 Аналитика канала «Программирование {BookFlow}» ➡️ Перейти в канал Макс
Заявка в МАКСОТЕКА
Добавьте свой канал в каталог
Зарегистрируйтесь в личном кабинете и добавьте канал за пару кликов.
Перейти в личный кабинет →

Бесплатная регистрация, быстрая модерация.