Как сказано в spec:
Управление потоком специфично для соединения. Оба типа управления потоком осуществляются между конечными точками одного прыжка, а не на всем сквозном пути.
Оба типа управления потоком являются пошаговыми, то есть только между двумя конечными точками. Посредники не пересылают кадры WINDOW_UPDATE между зависимыми соединениями. Однако ограничение передачи данных любым получателем может косвенно привести к распространению информации управления потоком к исходному отправителю.
Но как это вообще возможно? Кажется, это требует, чтобы все посредники понимали протокол h2
или h2c
, и у меня есть два вопроса:
HTTP/2 — относительно новый стандарт, и я видел, что он включен на многих веб-сайтах (включая мой блог). Хотя я могу посещать эти веб-сайты без каких-либо проблем, означает ли это, что каждое промежуточное устройство на этом пути, такое как маршрутизаторы, концентраторы и т. д., уже внедрило свой собственный стек HTTP/2 и алгоритмы управления потоком (поскольку RFC7540 не предусматривает алгоритм управления потоком)?
Большинство веб-сайтов используют
h2
, а неh2c
, который шифрует данные прикладного уровня. Управление потоком HTTP/2 осуществляется приемниками, отправляющими кадрWINDOW_UPDATE
, который также является данными прикладного уровня, тогда как промежуточные устройства узнают, что это за данные? Если они не могут расшифровать данные и увидеть частьWindow Size Increment
, как они могут управлять потоком, не пересылая кадрWINDOW_UPDATE
?