Двумя наиболее важными MIME-заголовками, предназначенными для поддержки мультимедиа, являются Content-Type: и Content-Transfer-Encoding:. Заголовок Content-Type: позволяет агенту получателя произвести соответствующую обработку данных сообщения. Так, например, если сообщение содержит изображение в формате JPEG, агент получателя вызовет процедуру декомпрессии файлов JPEG. Для того чтобы понять смысл второго заголовка, Content-Transfer-Encoding:, вспомните о том, что все данные в кодировке, отличной от ASCII, перед передачей по протоколу SMTP должны быть преобразованы в кодировку ASCII. Заголовок Content-Transfer-Encoding: указывает адресату на то, что было произведено преобразование (кодирование) исходной кодировки символов в кодировку ASCII, а также на тип этого кодирования. Таким образом, агент получателя, распознав заголовок Content-Transfer-Encoding:, сможет произвести декодирование сообщения для приведения данных в исходную кодировку, а затем, распознав заголовок Transfer-Encoding:, обработать декодированные данные.

Рассмотрим конкретный пример. Пусть Алия хочет переслать Вове электронное письмо, содержащее JPEG-изображение. Для этого она вызывает свой агент, вводит адрес почтового ящика Вовы, указывает тему сообщения и вставляет изображение в тело сообщения (в зависимости от используемого агента вставка файла может называться «присоединением»). После команды отправки агент генерирует MIME-сообщение, выглядящее приблизительно так:

From: *****@***ru

То: *****@***com

Subject: Picture of yummy crepe.

НЕ нашли? Не то? Что вы ищете?

MIME-Version: 1.0

Content-Transfer-Encoding: base64

Content-Type: image/jpeg

(base64 encoded data …..

….. base64 encodeddata)

Из приведенного сообщения можно узнать о том, что агент пользователя Алии кодировал JPEG-изображение методом base64. Этот метод стандартизирован документом RFC 2045 как способ преобразования в 7-разрядную кодировку ASCII.

Другим часто используемым методом кодирования является преобразование 8-разрядных данных в кодировке ASCII (обычно символов национальных алфавитов) в 7-разрядные.

Когда Боб станет читать письмо Алии, его агент сначала обнаружит строку Content-Transfer-Encoding: base64 заголовка и декодирует тело сообщения методом base64. Затем агент увидит строку Content-Type: image/jpeg и произведет JPEG-декомпрес-сию полученных данных. Строка MIME-Version: 1.0, как нетрудно догадаться, идентифицирует номер версии MIME. При отсутствии этой строки сообщение будет обработано как стандартное, соответствующее формату RFC 822/SMTP. Как правило, заголовок сообщения отделяется от тела пустой строкой.

Рассмотрим немного подробнее строку Content-Type: заголовка. Согласно спецификации MIME, указанной в RFC 2046, формат строки имеет следующий вид:

Content-Type: type/subtype; parameters

Здесь parameters — этонеобязательныепараметры. Согласно спецификации, строка Content-Type: используется для указания типа данных, передаваемых в сообщении, и состоит из имен типа и подтипа. Кроме того, в строке могут присутствовать параметры, предназначенные для уточненной информации о подтипе и не оказывающие значимого влияния на интерпретацию данных. Разумеется, для каждого подтипа определяется собственный набор параметров. Разработка MIME велась с расчетом на будущую расширяемость, и не исключено, что скоро число возможных пар типов и подтипов значительно возрастет. Для того чтобы как-то упорядочить разработку новых типов и подтипов, MIME предусматривает необходимость регистрации в IANA (Internet Assigned Numbers Authority — уполномоченная организация по назначению номеров Интернета). Регистрационный процесс описан в документе RFC 2048.

В настоящее время выделено семь основных типов данных. Для каждого типа данных существует ряд подтипов, число которых с каждым годом стремительно растет. Ниже приведены описания трех из семи типов.

□ text. Этот тип указывает агенту получателя на то, что тело сообщения содержит текстовую информацию. Очень часто встречающейся парой тип/подтип является text/plain. Подтип plain означает простой текст, то есть текст не содержит команд или директив форматирования. Такой текст должен быть отображен «как есть»; никакого специального программного обеспечения для этого не требуется. Единственным условием корректности отображения текста является поддержка используемой кодировки символов. Если вы взглянете на MIME-заголовки сообщений, хранящихся в вашем почтовом ящике, то почти наверняка найдете строки следующего содержания: text/plain; charset=”IS0-8859-l”. Параметры указывают на название таблицы символов, использовавшейся при создании текста. Другой часто встречающейся парой является text/html. Подтип html указывает на то, что программа чтения почты должна интерпретировать теги, включенные в сообщение. Это позволяет отобразить сообщение в виде web-страницы, содержащей различные шрифты, гиперссылки, апплеты и т. д.

□ image. Этот тип указывает на то, что информация, находящаяся в теле сообщения, является изображением. Двумя наиболее распространенными парами тип/ подтип для изображений являются image/gif и image/jpeg. Распознавая каждый из этих подтипов, агент пользователя применяет соответствующий метод декомпрессии изображения.

□ application. Это тип для всех данных, которые нельзя отнести к другим шести типам. Как правило, сюда попадают данные, предназначенные для обработки различными прикладными программами. Так, например, если включить в сообщение документ Microsoft Word, агент отправителя присвоит ему пару ар-plication/msword. При обработке сообщения агент получателя вызовет приложение Microsoft Word и передаст ему декодированные данные.

Существует еще один весьма важный MIME-тип, заслуживающий отдельного рассмотрения и называющийся multipart. Подобно тому как web-страница может включать в себя различные типы данных (текст, изображения, апплеты и т. д.), тело сообщения также может состоять из разнородной информации. Вспомните о том, что протокол HTTP посылает каждый объект в отдельном ответном сообщении; последовательность ответных сообщений может передаваться через одно или несколько TCP-соединений в зависимости от типа соединения (постоянного или непостоянного). Протокол SMTP, напротив, помещает все объекты (составные части) в тело одного сообщения. В случаях, когда сообщение содержит более одного объекта (например, несколько изображений, текст и изображения и т. п.), ему присваивается пара тип/подтип multipart/mixed. Для обработки тела такого сообщения агенту пользователя необходима информация о том, где находится начало и окончание каждого из объектов, какими способами закодированы объекты и каковы типы и подтипы данных, содержащихся в объектах. Структура составного сообщения включает специальные разделительные символы, вставляемые между объектами, и заголовки Content-Type: и Content-Transfer-Encoding: перед началом данных каждого из объектов.

Для того чтобы лучше понять принцип организации составного сообщения, рассмотрим следующий пример. Пусть Алия намеревается послать Вове письмо, содержащее два фрагмента ASCII-текста, а также JPEG-изображение, находящееся между этими фрагментами. При помощи своего агента Алия вводит первый текстовый фрагмент, затем присоединяет изображение и вводит второй текстовый фрагмент. После команды отправки агент генерирует сообщение приблизительно следующего содержания:

From: *****@***ru

То: *****@***com

Subject: Picture of yummy crepe with commentary

MIME-Version: 1.0

Content-Type: multipart/mixed; Boundary=StartOfNextPart

–StartOfNextPart

Dear Bob.

Please find a picture of an absolutely scrumptious crepe.

–StartOfNextPart

Content-Transfer-Encoding: base64

Content-Type: image/jpeg

base64 encoded data …..

….. base64 encoded data

–StartOfNextPart

Let me know if you would like the recipe.

Как можно видеть, первая строка Content-Type: заголовка указывает на последовательность символов, применяющуюся для разделения разнородных частей сообщения. Разделяющая последовательность всегда начинается с символов –.

2.3 Принимаемые сообщения

Ниже мы расскажем еще об одном классе строк заголовка, которые вставляются в сообщение почтовым сервером получателя. После получения сообщения с заголовками стандартов RFC 822 и MIME сервер добавляет в начало заголовка строку Received:, содержащую адреса отправителя (From), получателя (То) и время получения сообщения сервером. Для рассматриваемого примера сообщение, полученное Вовой, будет выглядеть следующим образом:

Received: from crepes. fr by hamburger. edu: 12 Oct 98

15:27:39 GMT

From: *****@***ru

To: *****@***com

Subject: Picture of yummy crepe.

MIME-Version: 1.0

Content-Transfer-Encoding: base64

Content-Type: image/jpeg

base64 encoded data …..

….. base64 encodeddata

Практически каждый человек, хотя бы однажды использовавший электронную почту, видел строку Received: в начале сообщений (как правило, содержимое этой строки выводится при отображении сообщения на экране и при получении его печатной копии). Возможно, вы также видели сообщения, содержащие в заголовке несколько строк Received:, а иногда и более замысловатую строку Return-Path:. Это объясняется тем, что в некоторых случаях сообщение проходит через несколько SMTP-серверов. К примеру, если бы Боб отослал полученное от Алии сообщение со своего почтового сервера hamburger. edu серверу sushi. jp, начало заголовка такого сообщения выглядело бы так:

Received: from hamburger. edu by sushi. jp: 3 Jul 01

15:30:01 GMT

Received: from crepes. fr by hamburger. edu; 3 Jul 01

15:17:39 GMT

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

2.4 Протоколы доступа к электронной почте

После того как письмо Алии попадает на почтовый сервер Вовы, оно помещается в почтовый ящик Боба. Во всех предыдущих примерах мы неявно предполагали, что Вова читает письма, входя на свой почтовый сервер и запуская программу чтения почты непосредственно на сервере. Действительно, до середины 1990-х годов такая схема доступа к электронным сообщениям была самой распространенной. В последние годы более типична ситуация, когда пользователь просматривает сообщения с помощью агента, выполняющегося на его вычислительной машине (офисном персональном компьютере, компьютере семейства Macintosh или цифровом органайзере). Это открывает пользователю доступ к набору удобных средств для работы с электронной почтой, в частности к средствам просмотра мультимедиа-сообщений и разнообразных вложений.

Из за большого объема этот материал размещен на нескольких страницах:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76