Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Сетевые протоколы в инфокоммуникациях (ПЗ).docx
Скачиваний:
0
Добавлен:
01.07.2025
Размер:
3.51 Mб
Скачать

Отрывок содержимого

Заголовок объекта ContentRange посылается с частью тела объекта и служит для определения того, где в теле объекта должен размещаться данный фрагмент. Он также указывает полный размер тела объекта. Когда сервер присылает клиенту частичный отклик, заголовок должен описать как длину фрагмента, так и полный размер тела объекта.

Content-Range = "Content-Range" ":" content-range-spec Content-range-spec = byte-content-range-spec byte-content-range-spec = bytesunit SP firstbytepos "" last-byte-pos "/" entitylength entitylength = 1*DIGIT -

В отличие от значений спецификаторов байтовых диапазонов ( byte-ranges-specifier ), bytecontentrangespec может специфицировать только один интервал и должен содержать абсолютные положения, как первого, так и последнего байтов.

Некорректной считается спецификация byte-content-range-spec, чье значение last-byte-pos меньше, чем его значение first-byte-pos, либо значение длины объекта меньше или равно last-byte-pos. Получатель некорректной спецификации byte-content-range-spec должен игнорировать ее и любой текст, переданный вместе с ней. Примеры спецификации byte-content-range-spec, предполагающей, что объект содержит 1234 байт, приведены ниже.

  • The first 500 bytes (первые 500 байт): bytes 0-499/1234

  • The second 500 bytes (следующие 500 байт): bytes 500-999/1234

  • All except for the first 500 bytes (все кроме первых 500 байт): bytes 5001233/1234

  • The last 500 bytes (последние 500 байт): bytes 734-1233/1234

Когда сообщение HTTP включает в себя содержимое одного фрагмента (например, отклик на запрос одного фрагмента или на запрос набора фрагментов, которые перекрываются без зазоров), это содержимое передается с заголовком Content-Range, а заголовок Content-Length несет в себе число действительно переданных байт. Например,

HTTP/1.1 206 Partial content Date: Wed, 15 Nov 1995 06:25:24 GMT Lastmodified: Wed, 15 Nov 1995 04:58:08 GMT ContentRange: bytes 2101047021/47022 ContentLength: 26012 Content-Type: image/gif

Когда сообщение HTTP заключает в себе содержимое нескольких фрагментов (например, отклик на запрос получения нескольких, не перекрывающихся фрагментов), они передаются как многофрагментное MIMEсообщение. Многофрагментный тип данных MIME, используемый для этой цели, определен в этой спецификации как multipart/byteranges.

Клиент, который не может декодировать сообщение MIME multipart/byteranges, не должен запрашивать несколько байтфрагментов в одном запросе.

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

Если сервер игнорирует спецификацию byte-range-spec, изза того, что она некорректна, сервер должен воспринимать запрос так, как если бы некорректного заголовка Range не существовало вовсе. В нормальной стуации это означает посылку отклика с кодом 200, содержащего весь объект. Причина в том, что клиент может прислать такой некорректный запрос, только когда объект меньше, чем объект, полученный по предыдущему запросу.