разница между составным и фрагментированным протоколом

Могут ли некоторые эксперты объяснить различия между ними? Правда ли, что chunked — это потоковый протокол, а multipart — нет? В чем преимущество использования multipart?


person user776635    schedule 02.12.2013    source источник
comment
Просто предположение, но я ожидаю, что multipart будет содержать несколько отдельных частей, для нескольких разных материалов и т. д., тогда как chunked дает несколько фрагментов для одного и того же объекта. Стоит изучить, пока вы ждете, пока кто-то более знающий ответит :)   -  person Jon Skeet    schedule 02.12.2013


Ответы (2)


Более интуитивно,

Фрагментация — это способ отправки одного сообщения с сервера клиенту, при котором серверу не нужно ждать, пока будет сгенерирован весь ответ, а можно отправлять фрагменты (фрагменты) по мере их доступности. Теперь это происходит на уровне передачи данных и незаметно для клиента. Соответственно, это тип 'Transfer-Encoding'.

В то время как Multi-part происходит на уровне приложения и интерпретируется на уровне логики приложения. Здесь сервер сообщает клиенту, что содержимое, даже если это одно тело ответа, имеет разные логические части и может быть соответствующим образом проанализировано. Опять же, это настройка «Content-Type», поскольку клиенты должны ее знать.

Учитывая, что передача может быть разделена на части независимо от типов контента, HTTP-сообщение, состоящее из нескольких частей, может быть передано сервером с использованием кодирования по частям, если это необходимо.

person jayadev    schedule 19.05.2014

Тоже не протокол. HTTP - это протокол. На самом деле, P в HTTP означает протокол.

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

Chunked — это кодирование передачи, описанное в разделе 3.6 Кодирование передачи.

Multipart — это тип носителя, описанный в разделе 3.7.2 Multipart Types, подразделе 3.7 Media Types.

Разделение на фрагменты также влияет на другие аспекты протокола, такие как длина содержимого, как указано в 4.4, поскольку фрагментирование должно использоваться, когда длина сообщения не может быть определена заранее (в основном при доставке динамического содержимого).

С 14.41 (поле заголовка Transfer-Encoding)

Поле общего заголовка Transfer-Encoding указывает, какой тип преобразования (если таковой имеется) был применен к телу сообщения для его безопасной передачи между отправителем и получателем. Это отличается от кодирования содержимого тем, что кодирование переноса является свойством сообщения, а не объекта.

Проще говоря, фрагментация — это то, как вы передаете блок данных, а составность — это форма данных.

person doog abides    schedule 02.12.2013
comment
спасибо Дуг! также похоже, что multiplart предназначен для POST, а chunked - для GET? могу ли я сделать такой вывод? - person user776635; 04.12.2013
comment
К сожалению нет. Главное, чтобы в GET-запросе не было отправлено тела, но в ответе есть одно или несколько тел. Таким образом, вы можете получать составные ответы даже из GET. Не все клиенты могут его поддерживать, но это часть спецификаций HTTP. И снова, разбивка по частям связана с передачей, а не с формой сообщения. Обычно вы публикуете составные части только при отправке файлов через форму (обычно). Независимо от того, выполняете ли вы POST или GET, ответ может состоять из нескольких частей и/или фрагментов. - person doog abides; 04.12.2013