GORAKH.NET+

Справочник

Архив за август. Факт дня и разбор документа на каждую дату.
1 августа
Факт дня

Пять полей crontab

Минуты, часы, дни месяца, месяцы и дни недели. Коварство в том, что день месяца и день недели объединяются по «или», а не по «и».

Разбор дня

Миссия IETF

A Mission Statement for the IETF

Формулировка цели: делать интернет лучше через документы, которые влияют на то, как его проектируют и эксплуатируют.

RFC 3935 на rfc-editor.org
2 августа
Факт дня

Nice влияет только на процессор

Приоритет меняет доступ к вычислениям, но не к диску и сети. Поэтому «тихая» фоновая задача с nice всё равно может задушить систему вводом-выводом.

Разбор дня

ESP: инкапсуляция шифрованных данных

IP Encapsulating Security Payload (ESP)

Рабочая лошадь IPsec: шифрование плюс целостность. Умеет прятаться в UDP на порту 4500, чтобы пройти через NAT.

RFC 4303 на rfc-editor.org
3 августа
Факт дня

Load average считает не только процессор

В Linux в среднюю нагрузку попадают и процессы, ждущие диск. Отсюда высокая нагрузка при почти простаивающем процессоре.

Разбор дня

Порядок изменения RSVP

Procedures for Modifying the Resource reSerVation Protocol (RSVP)

Правила расширения протокола резервирования ресурсов, чтобы правки не расходились по вендорам.

RFC 3936 на rfc-editor.org
4 августа
Факт дня

Сигнал SIGKILL нельзя перехватить

Программа не может подготовиться к завершению по девятому сигналу. Именно поэтому вежливый порядок - сначала SIGTERM, и только потом крайняя мера.

Разбор дня

IKEv2: обмен ключами

Internet Key Exchange Protocol Version 2 (IKEv2)

Согласование параметров и ключей для IPsec. Вторая версия сократила установку до четырёх сообщений и добавила встроенную проверку живости соседа.

RFC 7296 на rfc-editor.org
5 августа
Факт дня

Процесс-зомби уже мёртв

Запись в таблице остаётся, пока родитель не прочитает код завершения. Зомби не потребляет ресурсы, кроме строки в списке процессов.

Разбор дня

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

Clarifying when Standards Track Documents may Refer Normatively to Documents at a Lower Level

Когда стандарту разрешено обязательно ссылаться на менее зрелый документ. Формальность, тормозившая многие спецификации.

RFC 3967 на rfc-editor.org
6 августа
Факт дня

PID 1 особенный

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

Разбор дня

Требования к алгоритмам IPsec

Cryptographic Algorithm Implementation Requirements and Usage Guidance for Encapsulating Security Payload (ESP) and Authentication Header (AH)

Список того, что обязательно поддерживать, а что пора выключить. Документ прямо помечает 3DES и MD5 как устаревшие.

RFC 8221 на rfc-editor.org
7 августа
Факт дня

Файл удаляется не сразу

Пока открыт хоть один дескриптор, место не освобождается. Отсюда классика: диск заполнен, а du ничего не показывает.

Разбор дня

Реестр параметров заголовков SIP

The Internet Assigned Number Authority (IANA) Header Field Parameter Registry for the Session Initiation Protocol (SIP)

Единый список параметров, чтобы одноимённые поля не значили у разных реализаций разное.

RFC 3968 на rfc-editor.org
8 августа
Факт дня

Жёсткая ссылка - это тот же файл

Имя в каталоге лишь указывает на индексный узел, и таких имён может быть несколько. Файл исчезает, когда исчезает последнее имя.

Разбор дня

Teredo: IPv6 через UDP и NAT

Teredo: Tunneling IPv6 over UDP through Network Address Translations (NATs)

Туннель для машин за NAT, где пакеты IPv6 едут внутри UDP. Способ дал IPv6 миллионам домашних машин, но качество связи зависело от чужих серверов.

RFC 4380 на rfc-editor.org
9 августа
Факт дня

Символьная ссылка хранит текст

Внутри неё просто путь, который может быть неверным. Поэтому битые символические ссылки - нормальное состояние файловой системы.

Разбор дня

Реестр параметров URI в SIP

The Internet Assigned Number Authority (IANA) Uniform Resource Identifier (URI) Parameter Registry for the Session Initiation Protocol (SIP)

Регистрация параметров адреса SIP: transport, user, method и прочих.

RFC 3969 на rfc-editor.org
10 августа
Факт дня

Журнал файловой системы бережёт метаданные

Журналирование гарантирует целостность структуры после сбоя, но не содержимого файлов. Данные, не дошедшие до диска, всё равно теряются.

Разбор дня

STUN: определение своего адреса за NAT

Session Traversal Utilities for NAT (STUN)

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

RFC 8489 на rfc-editor.org
11 августа
Факт дня

fsync дороже, чем кажется

Вызов заставляет ждать физической записи и на обычном диске стоит миллисекунды. Базы данных ставят его в самое узкое место транзакции.

Разбор дня

Управление связями IETF с другими организациями

IAB Processes for Management of IETF Liaison Relationships

Как назначаются представители для работы с ITU, IEEE и подобными органами.

RFC 4052 на rfc-editor.org
12 августа
Факт дня

Копирование на запись экономит место

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

Разбор дня

ICE: установление соединения через NAT

Interactive Connectivity Establishment (ICE): A Protocol for Network Address Translator (NAT) Traversal

Стороны собирают все возможные адреса, проверяют пары на проходимость и выбирают лучшую. Если прямой путь не находится, трафик идёт через ретранслятор TURN.

RFC 8445 на rfc-editor.org
13 августа
Факт дня

inode кончаются раньше места

Миллионы крошечных файлов исчерпывают таблицу индексных узлов при свободных гигабайтах. Диагностировать это без df -i почти невозможно.

Разбор дня

Обработка заявлений о взаимодействии

Procedures for Handling Liaison Statements to and from the IETF

Регламент официальной переписки между IETF и другими организациями стандартизации.

RFC 4053 на rfc-editor.org
14 августа
Факт дня

Имена файлов в Linux - байты

Ядро не знает о кодировке, поэтому имя может быть некорректным UTF-8. Отсюда файлы, которые видны в терминале, но не открываются графическим менеджером.

Разбор дня

Процедуры SDP для ICE

Session Description Protocol (SDP) Offer/Answer Procedures for Interactive Connectivity Establishment (ICE)

Как кандидаты ICE передаются в описании сессии при обмене предложением и ответом.

RFC 8839 на rfc-editor.org
15 августа
Факт дня

Регистр в путях зависит от системы

Linux различает README и readme, macOS по умолчанию нет. Это регулярно ломает сборки, которые проходили локально.

Разбор дня

Терминология описания подключения к интернету

Terminology for Describing Internet Connectivity

Попытка договориться, что провайдер имеет в виду под доступом: фильтрация портов, приватные адреса, отсутствие входящих соединений.

RFC 4084 на rfc-editor.org
16 августа
Факт дня

Windows запрещает имена устройств

Файл с именем CON или NUL создать нельзя: имена зарезервированы со времён DOS. Это до сих пор ломает распаковку архивов, собранных на Unix.

Разбор дня

RTP: транспорт реального времени

RTP: A Transport Protocol for Real-Time Applications

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

RFC 3550 на rfc-editor.org
17 августа
Факт дня

Обратный слэш достался случайно

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

Разбор дня

Зашивать глобальные адреса в код вредно

Embedding Globally-Routable Internet Addresses Considered Harmful

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

RFC 4085 на rfc-editor.org
18 августа
Факт дня

Расширение файла - это соглашение

Unix определяет тип по содержимому, а не по имени. Именно поэтому команда file узнаёт формат, даже если расширение врёт.

Разбор дня

Профиль RTP для аудио и видео

RTP Profile for Audio and Video Conferences with Minimal Control

Таблица типов полезной нагрузки: какой номер какому кодеку соответствует. Отсюда знаменитый payload type 0 для G.711 mu-law.

RFC 3551 на rfc-editor.org
19 августа
Факт дня

Магические числа в начале файла

PNG начинается с байтов, которые ломаются при неправильной передаче текста, а ZIP - с букв PK по фамилии Фила Каца. Так формат опознают без имени.

Разбор дня

Требования к случайности

Randomness Requirements for Security

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

RFC 4086 на rfc-editor.org
20 августа
Факт дня

ZIP хранит оглавление в конце

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

Разбор дня

SIP: протокол установления сессий

SIP: Session Initiation Protocol

Сигнализация для звонков, похожая по виду на HTTP: методы INVITE, ACK, BYE и текстовые коды ответов. Сам разговор идёт отдельно, по RTP.

RFC 3261 на rfc-editor.org
21 августа
Факт дня

Base64 увеличивает объём на треть

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

Разбор дня

Руководство по управлению ключами

Guidelines for Cryptographic Key Management

Когда системе нужен полноценный обмен ключами, а когда достаточно заранее розданных секретов.

RFC 4107 на rfc-editor.org
22 августа
Факт дня

Сжатие сжатого бесполезно

Хорошо упакованные данные выглядят как шум, в котором нет повторов. Повторный архиватор чаще увеличивает размер, чем уменьшает.

Разбор дня

Надёжные предварительные ответы SIP

Reliability of Provisional Responses in Session Initiation Protocol (SIP)

Расширение PRACK: подтверждение промежуточных ответов вроде «идёт вызов», которые иначе могли потеряться.

RFC 3262 на rfc-editor.org
23 августа
Факт дня

Zip-бомба весит килобайты

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

Разбор дня

Отказ от зоны ip6.int

Deprecation of "ip6.int"

Обратные записи IPv6 окончательно переехали в ip6.arpa. Короткая заметка, закрывшая долгий спор.

RFC 4159 на rfc-editor.org
24 августа
Факт дня

Кодек и контейнер - разные вещи

MP4 или MKV лишь упаковывают потоки, сжатые кодеком H.264 или AV1. Отсюда файлы, которые открываются, но не проигрываются.

Разбор дня

Поиск серверов SIP через DNS

Session Initiation Protocol (SIP): Locating SIP Servers

Записи NAPTR и SRV указывают, куда и по какому транспорту слать вызов. Так один домен раздаёт звонки по нескольким серверам с приоритетами.

RFC 3263 на rfc-editor.org
25 августа
Факт дня

JPEG теряет при каждом сохранении

Повторное сохранение заново квантует данные, и артефакты накапливаются. Именно поэтому мем, прошедший десять пересохранений, выглядит характерно.

Разбор дня

TCRTP: мультиплексирование сжатого RTP

Tunneling Multiplexed Compressed RTP (TCRTP)

Упаковка множества голосовых потоков в один туннель со сжатыми заголовками ради экономии полосы.

RFC 4170 на rfc-editor.org
26 августа
Факт дня

PNG не подходит для фотографий

Формат без потерь хорошо жмёт графику с плоскими областями, но фотография в нём весит в разы больше JPEG при неотличимом качестве.

Разбор дня

Модель предложения и ответа в SDP

An Offer/Answer Model with Session Description Protocol (SDP)

Одна сторона перечисляет свои кодеки и адреса, вторая отвечает пересечением. На этой схеме держатся и SIP, и WebRTC.

RFC 3264 на rfc-editor.org
27 августа
Факт дня

GIF ограничен 256 цветами

Формат 1987 года хранит палитру, поэтому градиенты в нём выглядят полосами. Живучесть ему обеспечила анимация, а не качество.

Разбор дня

Руководство для авторов MIB

Guidelines for Authors and Reviewers of MIB Documents

Как писать и рецензировать MIB-модуль, чтобы он собирался и одинаково понимался инструментами.

RFC 4181 на rfc-editor.org
28 августа
Факт дня

Пиксель не квадратный

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

Разбор дня

SDP: описание сессии

SDP: Session Description Protocol

Текстовый формат из строк вида «одна буква равно значение». Не протокол, а именно формат: его переносят SIP, RTSP и WebRTC.

RFC 8866 на rfc-editor.org
29 августа
Факт дня

Разрешение и плотность - не одно и то же

Число пикселей не говорит о физическом размере точки. Один и тот же кадр на телефоне и на билборде выглядит по-разному именно из-за плотности.

Разбор дня

Приоритет пакетов OSPF при перегрузке

Prioritized Treatment of Specific OSPF Version 2 Packets and Congestion Avoidance

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

RFC 4222 на rfc-editor.org
30 августа
Факт дня

Цвет 8 бит на канал даёт 16 миллионов

Три канала по 256 градаций дают 16,7 миллиона оттенков. Глаз различает меньше, но переходы всё равно бывают заметны, отсюда десятибитные панели.

Разбор дня

RTSP 2.0: управление потоком

Real-Time Streaming Protocol Version 2.0

Пульт для медиапотока: PLAY, PAUSE, TEARDOWN. Сам поток при этом идёт отдельно, обычно по RTP.

RFC 7826 на rfc-editor.org
31 августа
Факт дня

Chroma subsampling обманывает зрение

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

Разбор дня

MIME: процедуры регистрации

Multipurpose Internet Mail Extensions (MIME) Part Four: Registration Procedures

Как получить новый тип содержимого вроде application/json. Именно здесь описано, что значит префикс vnd. в имени типа.

RFC 4289 на rfc-editor.org
GORAKH.NET+
Вход / Регистрация