Сообщество RSS DEV

Глубокое погружение - Как работает кодирование передачи в пакетах

Раздельное кодирование передачи данных - это функция HTTP/1.1, которая позволяет серверам передавать данные поэтапно, не зная общего размера ответа заранее. Это полезно для потоковых API, живых обновлений и больших или динамически сгенерированных ответов. В раздельном кодировании передачи данных HTTP-ответы модифицируются в серию фрагментов, каждый из которых имеет префикс с его размером в байтах. Клиент получает данные поэтапно и знает, что ответ закончился, когда появляется фрагмент нулевой длины. Практический пример с использованием FastAPI и curl демонстрирует, как работает раздельное кодирование передачи данных на практике. Пример показывает, как каждый фрагмент начинается с его длины в шестнадцатеричном формате, за которым следует данные, а следующий фрагмент начинается после новой строки. Ответ заканчивается фрагментом нулевой длины, указывающим на конец передачи данных. Под капотом фреймворк Starlette получает сегменты данных, выданные на основе, и передает каждый фрагмент в нижележащий сервер ASGI, который форматирует его в соответствии со спецификацией HTTP/1.1 раздельного кодирования передачи данных. HTTP/2 и HTTP/3 не используют раздельное кодирование, вместо этого используя более эффективный бинарный слой кадрирования, который позволяет мультиплексировать несколько потоков через одно соединение. Понимание раздельного кодирования передачи данных помогает создавать лучшие потоковые API и отлаживать сложные HTTP-взаимодействия эффективно.
favicon
dev.to
Deep Dive - How Chunked Transfer Encoding Works
Изображение к статье: Глубокое погружение - Как работает кодирование передачи в пакетах
Create attached notes ...