tanenbaum_seti_all.pages (525408), страница 182
Текст из файла (страница 182)
Если стили «жирный» и «курсив» доступны, они будут применены. Если нет, для выделения можно использовать подчеркивание, »1игание, инверсную печать, выделение другим цветом и т. д. Разные системы могут применять и применяют свои стили, Когда веб-технологии стали популярны, был добавлен (в КРС 2854) новый тип гехт,лпп1, который позволил пересылать веб-страницы в теле письма КРС 822.
В КРС 3023 определен подтип для расширяемого языка разметки страниц, тех(/хтб Далее в этой главе мы рассмотрим НТМ1. и ХМ1., Следующим типом М1МЕ является 1та8е. Он используется для передачи неподвижных изображений. На сегодняшний день существует множество различных форматов хранения и передачи изображений, как с использованием сжатия, так и без него. Два формата — С1Р и )РЕС вЂ” встроены практически во все браузеры, однако существует еще множество других, которые, надо полагать, вскоре дополнят этот список, Типы аийо и опгео предназначены, соответственно, для передачи звука и двигающегося изображения. Обратите внимание на то, что подтип оЫео включает только визуальную информацию, а не звуковую дорожку.
Если необходимо передать по электронной почте видеофильм со звуком, то, возможно, придется посылать видеоряд и звуковую дорожку отдельно друг от друга. Это зависит от системы кодирования. Первым видсоформатом, который был определен стандартом М1МЕ, стал формат со скромным названием МРЕС (Мог(оп Р1сгцгез Ехрегсз Сгоцр — экспертная группа по вопросам движушегося изображения). Тип аррйсапоп (приложение) предназначен для всех форматов, требующих внешней обработки, не обеспечиваемой ни одним из других типов.
Тип осгегзйеат (байтовый поток) представляет собой просто последоватслыюсть никак не обрабатываемых байтов. Получив такой поток, пользовательский агент должен, вероятно, предложить пользователю сохранить его в виде файла и запросить для этого файла имя. Последующая обработка файла целиком зависит от пользователя. Подтип розаспрг означает язык РозгЗспрц созданный компанией Ас1оЬе БузГеша и широко используемый для описания страниц, предназначенных для печати.
Многие принтеры имеют встроенные интерпретаторы языка Роз18сг1рп Хотя пользовательский агент может для отображения полученных Роз18сг1рг-файлов просто вызвать внешний интерпретатор языка Роз18сйрц подобные действия, вообще говоря, небезопасны. Роз18сйрг является полноценным языком программирования. При достаточном количестве свободного времени и некоторой склонности к самоистязанию на языке Роз»8сг1рг можно написать компилятор языка С или систему управления базами данных.
Отображение документа на языке РозгБсг!рг осуществляется программой на языке РозБсг)рц содержащейся в этом сообщении. Помимо отображения текста, эта программа способна читать, изменять или удалять файлы пользователя, а также может обладать сше целым рядом неприятных побочных эффектов. Тип теззайе позволяет помешать одно сообщение в другое. Это может быть полезно для переадресации письма. Если внутри одного сообщения заключено полное сообщение стандарта КРС 822, следует использовать подтин г/с822.
632 Глава 7. 71рикладной уровень Подтип ратти1 позволяет разбивать сообщение на отдельные части и передавать их отдельно (например, в случае, когда инкапсулированное сообщение является слишком длинным). Параметры обеспечивают восстановление сообщения получателем из отдельных фрагментов в правильном порядке. Подтип ехтегпа1-Ьог(у (внешнее тело) может применяться для очень длинных сообщений (таких как видеофильмы).
Вместо того чтобы помещать МРЕС-файл в тело письма, в нем сообщается РТР-адрес, по которому пользовательский агент может получить этот файл тогда, когда нужно. Это особенно удобно в случае рассылки по списку рекламных роликов. При этом пользователям, не желающим просматривать ролик, не придется скачивать его по сети в свой почтовый ятцик. даже страшно подумать, что было бы, если бы по электронной почте стали рассылать спам в виде рекламных видеороликов. Наконец, тип ти1прагг позволяет составлять сообщение из нескольких частей, при этом начало и конец каждой части отчетливо указываются.
Подтип иихег1 позволяет создавать сообщение из частей различных форматов. В случае применения подтипа а1геглапЪе, напротив, каждая часть должна содержать одно и то же сообщение, но в другом виде или другой кодировке. Например, сообщение может быть послано в виде простого АБСП-текста, а также в форматах КТР и РовсБспрс. Грамотно созданный пользовательский агент, получив такое сообщение, сначала попытается отобразить его в формате РоасБсйрп Если это по какой-либо причине невозможно, тогда производится попытка отобразить часть в формате КТР.
Если и зто невозможно, отображается АБСП-текст. Части следует располагать в порядке увеличения сложности, чтобы даже старые (до М(МЕ) пользовательские агенты смогли отобразить сообщение хотя бы в виде простого АБСП- текста Подтип а1геглас(ое также может использоваться для сообщений, посылаемых одновременно на разных языках. В этом контексте знаменитый розеттский камень, найденный в Египте, может считаться одним из ранних вариантов сообщений типа ти1Г(уагв/а11еггтацое. Мультимедийный пример приведен в листинге 7.2. В данном случае поздравление с днем рождения посылается одновременно в виде текста и в виде песни. Если у получателя есть возможность воспроизвести звуковой файл Ь(ггЫау,зпг(, пользовательский агент скачает этот файл с указанного адреса и воспроизведет его, В противном случае на экране получателя в полной тишине отобразится текст сообщения.
Части письма разделены двойными дефисами, за которыми следует (определяемая пользователем) строка, указанная как значение параметра Ьоипт(атр (граница). Листинг 7.2. Сообщение, состоящее из йТГ-текста и альтернативы в виде звукового Файла ггоя: е1!погеаЬс.соя То: саго1упехуг,сов МгМс-Уегв!оп: 1 0 Меавайе-1О: <0704760941.ЛЛ00747еаЬс.сска> Сопоепб-Туре; ец1С!рагт/41гегпагтче: Ьоцппагу-ОиегтуцторавптоПЗХ1зксчопя 5цЬбесш Зеилв обошла вокруг Солнца целое кисло раз Это преаибула. Пользовательский агент игнорирует ее. Ку-ку. Электронная почта 683 --дччегтуи1оразбчдЬЗК1тхсчЬпв Сопьепй-Туре: Ьехс/епг1саеб Нарру Ь1гГЬбау Го уоч Нарру Ь1гтабау Го уоч Нарру Ь1гчлбау беаг <Ьо1б> Саго1уп </Ьо1б> Нарру ЬЦ гГЬбау Го уои --Ечегтуч1оразб/ВП1К1гхсчЬпе Соптепт-Туре: еезааяе/ехГегпа1-Ьобу; ассезз-Гуре-"апоп-чгр": з1те-"Ь1сус1е.аЬс.спа"; б1гестогу-"рчЬ": паве-"Ь|гтпбау.зпб" сопьепт-Гуре: авб1о/Ьаюс соптепь-Ггапз)ег-епсоб1пя: Ьазе64 --цччегьуюоразб/9пзК1тхсчЬпа-- Обратите внимание; заголовок Сопгепг-Туре трижды встречается в данном сообшении.
На верхнем уровне он указывает, что сообщение состоит из нескольких частей. Для каждой части он сообщает ее тнп и полтин. Наконец, в теле второй части сообщения он указывает пользовательскому агенту тип внешнего файла. Чтобы подчеркнуть это различие, мы использовали в последнем случае строчные символы, хотя для всех заголовков регистр символа не имеет значения. Для внешнего тела в формате, отличном от 7-разрядного А5СП, также требуется заголовок сопгеяг-гтап фет-епсо)!!лц.
Для сообшений, состоящих из отдельных частей, существует еше два подтипа. Нодтип ратаПе! используется в том случае, когда требуется одновременный «просмотр» всех частей сообшения. Например, часто бывает так, что в фильмах звуковой канал отделен от изображения, однако эти два канала удобнее воспроизводить одновременно, а не последовательно, Наконец, подтип а)!яезг используется, когда много сообщений упаковываются в одно сообщение. Например, какая-нибудь дискуссионная группа в Интернете может собирать сообшения от подписчиков, а затем высылать их в виде единого сообщения типа тиЫрат~/Йяезг.
Пересылка писем Система пересылки писем занимается доставкой электронных сообшений от отправителя получателю. Для этого проше всего установить транспортное соединение от машины-источника до машины-приемника, а затем просто передать по нему сообщение. Вначале мы познакомимся с тем, как это осуществляется в действительности, после чего рассмотрим несколько ситуаций, в которых подобный подход не работает, и обсудим способы разрешения возникаюших в связи с этим проблем.
ЗМТР— простой протокол электронной почты В Интернете для доставки электронной почты машина-источник устанавливает ТСР-соединение с портом 25 машины-приемника. Этот порт прослушивается почтовым демоном, и нх общение происходит с помошью протокола БМТР (51шр!е 6В4 Глава 7. Прикладной уровень Май Тгапзгег Ргососо! — простой протокол электронной почты).
Этот демон принимает входящие соединения и копирует сообщения из них в соответствующие почтовые ящики. Если письмо невозможно доставить, отправителю возвращается сообщение об ошибке, содержащее первую часть этого письма. Протокол БМТР представляет собой простой АоСП-протокол. Установив ТСР>соединение с портом 25, передающая машина, выступающая в роли клиента, ждет запроса принимающей машины, работающей в режиме сервера. Сервер начинает диалог с того, что посылает текстовую строку, содержащую его идентификатор и сообщающую о его готовности (или неготовности) к приему почты.
Если сервер не готов, клиент разрывает соединение и повторяет попытку позднее. Если сервер готов принимать почту, клиент объявляет, от кого поступила почта и кому она предназначается. Если получатель почты существует, сервер дает клиенту добро на пересылку сообгпения, Затслт клиент посылает сообшение, а сервер подтверждает его получение. Контрольные суммы ие проверяются, так как транспортный протокол ТСР обеспечивает надежный байтовый поток.
Если у отправителя есть егце почта, она также отправляется. После передачи всей почты в обоих направлениях соединение разрывается. Пример диалога клиента и сервера при передаче сообщения из листинга 7.2 показан в листинге 7.3. Строки, посланные клиентом, помечены буквой Сз а посланные сервером — 5з Листинг'7.3. Передача сообщения от е11погбаЬс.согп дпп саго!упс худ.сопт 5: 220 худ.сош служба 5МТР готова С; НЕСО аЬс.сою 5: 250 худ.соп приветствует аЬс.саш С: МА1Е РВОМ: <е!тпогдаос.сею> 5: 250 подтверждаю отправителя С: ДСРТ ТО: <саго1упйхуз.сою> 5: 250 подтверждаю получателя С: ОАТА 5: 354 Отправляйте письио: конец письна обозначается строкой. састояшей из символа С: Ргош: е11погдаЬс.сош С: То: саго1упдхуа.сош С; М!МЕ-уегз1оп 1.0 С; Мевваде-1б: <0704760941.АА007470аЬс.соя С: Сопьепг-Туре: юц11трагг/а11егпагтче; Ьоцпбагу-циеггуцторазбтдПЗк1гхсчопш С: 5цЬДес1: Зеиля обошла вокруг Солнца целое число раз С: Это преанбупа. Пользовательский агент игнорирует ее.