eleday
4.86K subscribers
840 photos
36 videos
20 files
314 links
Канал про it, python и около того

Актуальные ссылки:
eleday.ru

лайв — @eleday_live
Автор — @eleday_me

Реклама — https://telega.in/c/eleday
Download Telegram
Протоколы передачи данных в сети: что такое TCP и UDP
Серия WEB с нуля

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

1️⃣ TCP (Transmission Control Protocol)
— это ориентированный на соединение, надёжный, потоковый протокол

Шаги работы TCP:

1. Установка соединения (Three-way handshake)
Перед передачей данных узлы договариваются о соединении:
1. SYN — клиент отправляет запрос на соединение
2. SYN-ACK — сервер подтверждает запрос и сообщает свои параметры
3. ACK — клиент подтверждает получение ответа сервера

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

3. Передача и подтверждение
Сегмент отправляется, а когда получатель его принимает, он отправляет ACK — подтверждение с номером следующего ожидаемого байта
Если подтверждение не пришло, сегмент отправляет снова

4. Контроль перегрузки
TCP регулирует скорость передачи, чтобы не перегружать сеть:
- Sliding Window — динамическое окно для передачи сегментов
- Slow Start и Congestion Avoidance — адаптация скорости при потере пакетов

5. Завершение соединения
Когда данные переданы, соединение разрывается с помощью последовательности FIN → ACK → FIN → ACK

Получается, TCP создает соединение, аккуратно передает данные, убеждается, что они были получены, причем в правильном порядке, контролирует перегрузки
Благодаря его надежности, его используют там, где важна целостность данных, стабильность и отсутствие потерь, например, в HTTPS или SSH

2️⃣ UDP (User Datagram Protocol)
— это протокол без установления соединения, минимальный и быстрый. Он не гарантирует доставку, но работает почти без задержек. Данные передаются отдельными сообщениями, а не потоком

Шаги работы UDP:

1. Отправка датаграммы
Каждое сообщение превращается в датаграмму (отдельный независимый пакет данных) и отправляется получателю

Ну и все. Никакого подтверждения получения нет, если данные потерялись, получатель их просто не получит. Порядок тоже не контролируется, датаграммы могут приходить не последовательно

Зато UDP работает гораздо быстрее и проще: он не отслеживает состояние соединения, не следит за перегрузками и тратит меньше ресурсов на передачу

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

Краткое резюме
Пакеты в Интернете передаются по особым правилам, которые устанавливают протоколы передачи: TCP или UDP
- TCP создает надежное соединение и гарантирует, что получатель получит все данные в правильном порядке. Его используют в вебе, почте и для передачи файлов
- UDP не волнует, получит ли получатель данные, придут ли они в правильном порядке, зато он простой и быстрый. Он используется в играх, стримингах и звонках

Читать далее:
[В разработке]

@eleday
👍76👨‍💻3
Forwarded from Константин
Я бы пошутил про udp, но боюсь до вас не дойдёт
34😁11🔥6
Forwarded from Константин
Если я пошучу про TCP и до вас не дойдёт, то я могу повторить
33🤣14❤‍🔥5
Какие-то блокировки происходят, сделал сайтик с актуальными ссылками. Если потеряете, знаете где меня искать — eleday.ru
7👍6
Сети и подсети — как это работает
Серия WEB с нуля

Мы с вами говорили об адресации с помощью IP. В комментариях меня попросили рассказать про сети и маски, рассказываю в статье

https://dzen.ru/a/aZr0QnvuQ0wnb6Bp

Это пробная статья в Дзене. Мне очень не хватает возможности добавлять картинки в тг, без них объяснение получается сухим и менее понятным. Хочу проверить, будет ли там лучше. В следующем сообщении опрос, можете оставить свое мнение

@eleday
5🔥3👎1
IPv4 vs IPv6
Серия WEB с нуля

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

1. Адресное пространство

IPv4 состоит из 32 бит и имеет формат 192.168.100.200
Нетрудно рассчитать доступное количество таких адресов: 2 ^ 32 ≈ 4.3 млрд

С одной стороны много, а с другой в мире даже людей больше. А у каждого человека может быть телефон, ноутбук, холодильник, чайник и телевизор. И каждому из этих устройств в теории нужен свой адрес

Длина IPv6: 128 бит
Формат: 2001:0db8:85a3:0000:0000:8a2e:0370:7334
Количество адресов: 2 ^ 128 ≈ 3,4 * 10 ^ 38

Такого количества уже должно хватить абсолютно всем

Получается, первое преимущество шестой версии — огромное адресное пространство, почти неограниченное

2. NAT

Что это за технология, мы еще поговорим подробнее, но вкратце ее суть в том, чтобы уменьшить количество используемых адресов, так как их у нас мало

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

Проблемы:
- Усложнение маршрутизации
- Нарушение end-to-end модели Интернета, в которой каждое устройство должно иметь возможность общаться с любым другим напрямую без посредников

3. Улучшенные заголовки

В шестой версии заголовки упростили и сделали фиксированной длины (40 байт вместо 20-60). Это позволило упростить и в некоторых случаях ускорить обработку пакетов маршрутизаторами

4. Автоконфигурация

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

Устройство получает у маршрутизатора адрес подсети, генерирует свой идентификатор и использует его как адрес устройства

5. Обратная совместимость

Так если в шестой версии все так хорошо, почему бы на нее не перейти? Потому что она не совместима с четвёртой. То есть переход Интернета на IPv6 требует изменения инфраструктуры, которая годами строилась для IPv4. Это трудозатратно, но процесс постепенно идет

Краткое резюме
IPv6 — протокол, который исправил в себе многие недостатки IPv4, но переход на него очень затратный

@eleday
120🔥5👨‍💻4
💐
Please open Telegram to view this post
VIEW IN TELEGRAM
36👍14👏10
Пост немного задерживается, готовлю кое-что для вас
😍197👎3
тг все?
напоминаю про актуальные ссылки на eleday.ru
может быть, скоро там появится альтернатива телеграму
👎166👏1
HTTP-запрос
Серия WEB с нуля

В новом формате разбираемся с тем, как устроены HTTP-запросы, из чего состоят и как работают. Собираем и отправляем свои запросы

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

https://eleday.ru/http
❤‍🔥63👨‍💻1
Как тебе такой формат статей? (на сайте)
Anonymous Poll
56%
Хорошо, классно
23%
Не очень хорошо, но лучше тг
21%
Плохо, в тг лучше
eleday
Как тебе такой формат статей? (на сайте)
А если нехорошо, то что именно? Буду рад в комментариях услышать, это очень поможет сделать так, как удобно вам
2
ой, чтош делается, ничего не работает
😁29😢7
Модели OSI и TCP/IP
Серия WEB с нуля

1⃣ OSI

Данные в интернете между двумя клиентами проходят длинный путь. Чтобы определить и упростить его понимание, придумали модель OSI

В ней данные проходят семь уровней:

Например, есть текстовое сообщение "Привет, мир"

7. Прикладной — то, что видит пользователь (HTTP, FTP и т. д.)
Сообщение становится HTTP-запросом со своими заголовками и форматом

6. Представления — кодировка, шифрование
HTTP-запрос кодируется (например, UTF-8) и шифруется (TLS)

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

4. Транспортныйдоставка (TCP/UDP)
Сообщение разбивается на сегменты, каждый из которых получает дополнительные заголовки

3. Сетевой — маршрутизация (IP)
Добавляется информация об IP-адресе отправителя и получателя

2. Канальный — передача внутри сети, например, Ethernet
IP-пакеты упаковываются в кадры, к ним добавляются MAC-адреса

1. Физический — провода, биты
Сообщение превращается в электрические или радиосигналы

Полученные физические сигналы передаются на следующее устройство (маршрутизатор или конечный клиент) и проходят обратный процесс "разборки" по схеме снизу вверх

2⃣ TCP/IP

На практике OSI оказывается сложной и излишне подробной, поэтому чаще используется более простая и удобная модель — TCP/IP

4. Прикладной — HTTP, DNS и др.
3. Транспортный — TCP/UDP
2. Интернет — IP и маршруты
1. Сетевой доступ — всё про физику и локальную сеть

А еще, если увидите L1, L2, ..., L7 — это про OSI. L — layer, то есть это сокращённое обозначение уровней

А что поделать, буду дублировать и так — MAX

@eleday
10👀5👨‍💻3
IP vs MAC — почему у устройств в сети есть сразу два адреса
Серия WEB с нуля 

1. IP — логический адрес, может меняться. Используется на уровне L3 для маршрутизации между сетями

2. MAC — уникальный физический адрес. Я бы скорее назвал его идентификатором, чем адресом. Используется на уровне L2 внутри локальных сетей

@eleday // MAX
👎72👍187
👎47👍53
Разбираемся с устройством баз данных

Эта статья на Хабре, если там удобнее читать

При разработке практически любого программного продукта очень скоро возникает потребность в хранении данных. Для этого используют специальные сервисы — СУБД (система управления базами данных)

Сегодня залезем внутрь и разберёмся, как они работают. Для начала немного вводных

Оговорка: обсуждаем стандартные SQL СУБД, не углубляемся в разновидности и их особенности

- Взаимодействие с БД

Программе, которой необходимо сохранить или получить какую-то информацию, абсолютно не нужно знать, как устроены базы данных, в каком формате и как там все хранится. Вместо этого она использует SQL (Structured Query Language) — специальный язык для общения с СУБД

Например, чтобы получить имя пользователя с id = 42:
SELECT name FROM users WHERE id = 42;

А чтобы добавить красную лампу
INSERT INTO devices (type, color) VALUES ('lamp', 'red');

- Схема

В SQL-базах данные сохраняются в таблицы. В каждой таблице есть колонки — поля с определённым типом и строки — записи об отдельных объектах, например:

Таблица users
id name age admin
1 Вася 45 false
2 Петя 67 true

- Лезем внутрь

Чтобы разобраться с тем, как работает СУБД, проследим путь от SQL-запроса до возвращенных данных

1. Прием запроса, парсинг
СУБД принимает SQL-запрос от пользователя, проверяет его на синтаксические ошибки и из набора букв преобразует в AST (Abstract Syntax Tree)
Когда-то подробно коснёмся этой темы

2. Семантический анализ
Запрос сопоставляется с реальной базой. Проверяется, существуют ли запрашиваемые таблицы, совпадают ли типы данных

3. Планирование
СУБД определяет оптимальный план выполнения задачи: генерирует различные варианты, оценивает их сложность и выбирает лучший

4. Исполнение
Каждый узел плана — оператор, который вызывает следующий. Например:
- Взять строку из таблицы
- Проверить, выполняется ли условие (id = 42)
- Добавить строку в результат, если выполняется
- Повторить для следующей строки

5. Хранение данных
Перед записью данные сериализуются в бинарный формат и сохраняются на диск блоками по 4–16 КБ — страницами

6. Индексы
Специальная структура — индекс — позволяет осуществлять более быстрый поиск. Он хранит отсортированные ключи и соответствующие указатели на реальные данные. Для поиска по проиндексированному полю не нужно перебирать всю таблицу, можно просто взять уже сохраненный указатель
Если индекса нет, СУБД выполняет полный перебор таблицы, проверяя каждую строку

7. Кэширование
Диск медленный, поэтому СУБД хранит часто используемые страницы в оперативной памяти, что позволяет реже читать диск и ускоряет работу

8. Транзакции
Транзакция — группа операций, которые должны выполниться вместе
Обычно СУБД следуют наборам требований ACID:
- Atomicity (атомарность) — транзакция рассматривается как единое целое: либо выполнится все, либо ничего
- Consistency (согласованность) — исполнение транзакции приводит систему в корректное состояние
- Isolation (изоляция) — транзакции, исполняющиеся в одно время не должны мешать друг другу
- Durability (устойчивость) — после успешного выполнения транзакции ее результат сохраняется даже при сбое системы

9. Журналирование
Перед тем, как выполнить действие, СУБД записывает его в журнал. Это позволяет восстанавливать данные в случае сбоя

10. Конкурентность
Может случится такое, что несколько транзакций одновременно обращаются к одним и тем же данным. Чтобы избежать конфликтов, используются блокировки и MVCC (версионность данных)

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

Итоговая схема от запроса до данных:
- SQL
- парсинг
- AST
- план выполнения
- исполнение
- индексы / диск
- результат

Что думаете про такой формат больших постов? На какие темы хотели бы видеть ещё?

@eleday
👍207👎5
Forwarded from еледей (Леонид)
Пропадаю, пропадаю

До ЕГЭ меньше месяца, готовлюсь, ребята, поэтому до канала руки не доходят, к сожалению

Вернуться в темп планирую, когда — не знаю
❤‍🔥286😁2