Кратко
MAX_DATAиMAX_STREAM_DATAсообщают абсолютные пределы смещений, а не новые байты и не объём свободной памяти.- Меньшее последующее значение не отзывает кредит; отсутствие
DATA_BLOCKEDне доказывает свободу отправителя. - Для вывода о ёмкости кредит надо связать со смещениями, конечными размерами, потреблением приложения, памятью и перегрузкой.
Панель видит, что получатель поднял MAX_DATA до 16 МиБ, и показывает 16 МиБ запаса. Расчёт принимает накопительный предел за приращение: ранее занятые смещения продолжают учитываться. Ошибочно и толкование. Число разрешает отправителю расширить байтовый реестр, но само по себе не измеряет свободную RAM и не подтверждает чтение приложением.
RFC 9000 §4.1 устанавливает сразу два предела. Управление на уровне соединения ограничивает все данные STREAM, а уровень потока не даёт одному потоку занять весь буфер. Доступное разрешение определяется максимальным пределом соединения и накопленным расходом, а также пределом конкретного потока и его наибольшим смещением.
Значения абсолютны. Более низкий MAX_DATA или MAX_STREAM_DATA, пришедший позже, не действует; отправитель обязан игнорировать кадр, который не повышает предел. Поэтому «последнее значение» — неверная метрика. Нужно хранить наибольшее принятое значение и подчинённую ему бухгалтерию.
RFC 9000 §19.9 учитывает все данные STREAM. Сумма конечных размеров, включая завершённые потоки, должна оставаться в пределах максимума. RFC 9000 §4.5 определяет конечный размер как израсходованный кредит. Закрытие или сброс фиксирует счёт, а не возвращает исторические смещения в бюджет соединения.
На уровне потока RFC 9000 §19.10 использует наибольшее смещение. Потеря и перестановка могут вынести его дальше объёма непрерывных данных, уже готовых к передаче приложению. Сырые байты пакетов и мгновенная занятость буфера не заменяют этот реестр.
RFC 9000 §4.2 оставляет реализации выбор времени и величины повышения. Частые малые обновления создают служебную нагрузку; редкие требуют больших шагов и ресурсных обязательств. Автонастройка может учитывать RTT и темп потребления приложением, но это не превращает объявленный предел в датчик свободной памяти.
Кредит не обещает пропускную способность. RFC 9000 §4.3 предупреждает: если доступный кредит не превышает произведение полосы на задержку, поток ограничит приёмную скорость. Это возможное необходимое, но не достаточное условие; окно перегрузки, потери, планирование и работа отправителя остаются отдельными ограничениями.
DATA_BLOCKED — неполное наблюдение. Согласно RFC 9000 §19.12, отправителю следует послать его, когда он хочет писать, но достиг предела соединения. Обязанности нет, а §4.2 запрещает получателю ждать этот кадр перед выдачей кредита. Отсутствие сигнала не доказывает наличие запаса.
Защищаемый операционный реестр включает максимальные пределы, накопленный расход, смещения, конечные размеры, замеченные блокировки, границу потребления приложением, занятость памяти, окно перегрузки, RTT, потери и время обновлений. MAX_DATA подтверждает только протокольное разрешение.
Обзор для участников
Подробный контекст профиля
Войдите с подходящим уровнем подписки, чтобы открыть полный обзор и примечания к источникам.
Только для Стратегического сообщества
Стратегическое сообщество
Открыто всем читателям. Вступите и войдите, чтобы открыть обзоры профилей.
Вступить в Стратегическое сообществоТолько для Альянса лидеров
Альянс лидеров
Для проверенных владельцев IP-активов и руководителей. Войдите, чтобы открыть обзоры Альянса.
Вступить в Альянс лидеров

