TCP/IP Архитектура, протоколы, реализация (включая IP версии 6 и IP Security)
Шрифт:
16.13.4 Кодирование содержания
RFC 822 определил исходной формат для текстовых сообщений Интернета. Содержание почтового сообщения состоит из последовательности строк, завершающихся <CR><LF>. Максимальная длина каждой строки (включая <CR><LF>) определена в 1000 символов.
Как должны кодироваться для пересылки различные типы содержания сообщений MIME? Методы кодирования определены отдельно для каждого типа. Например, для SMTP можно использовать:
■ Неэффективный способ кодирования, который представляет двоичные данные как текст, если можно будет доставить сообщение на принимающий агент пересылки почты только таким способом.
■ Эффективный способ кодирования, когда получатель поддерживает такой способ.
Методы кодирования представлены в таблице 16.3. Если используется не обычный метод NVT USASCII, а другой, то он должен быть явным образом определен в заголовке Content-Transfer-Encoding. Например:
Таблица 16.3 Методы копирования
Метод | Описание |
---|---|
7bit | Обычные строки текста NVT USASCII. |
quoted-printable | Содержимое по большей части представляет собой обычный текст ASCII, но дополнительно имеется несколько особых символов. Каждый такой символ представлен специальной последовательностью обычных текстовых символов. |
base64 | Все содержание отображается к виду, представленному обычными символами. |
8bit | Сообщение организовано как последовательность строк, заканчивающихся на <CR><LF> и имеющих длину не более 1000 символов. Однако могут быть включены 8-разрядные коды. |
binary | Правильное представление двоичных данных. |
x-token-name | Любой экспериментальный метод кодирования должен иметь название, начинающееся с "х". |
16.13.5 Метод кодирования указанными печатными символами
Метод кодирования указанными печатными символами (quoted-printable encoding method) используется для сообщений, содержащих только небольшое число символов, не принадлежащих основному множеству ASCII. Эти символы отображаются в специальные последовательности, в то время как большая часть сообщения остается в своей естественной форме. Кодирование выполняется как:
= шестнадцатеричный код для символа
Например, символ перевода формата (X'0C) будет закодирован как =0C.
16.13.6 Метод кодирования Base64
Метод кодирования Base64 преобразует любой тип данных к большему в 3 раза количеству текстовых символов. Данные разделяются на части по три 8-разрядных, байта. Например:
Для преобразования эта последовательность сначала разделяется на четыре 6-разрядные группы:
Каждая группа интерпретируется как число:
Полученные числа заменяются соответствующими символами из таблицы 16.4.
Таблица 16.4 Кодирование Base64
Значение | Код | Значение | Код | Значение | Код | Значение | Код |
---|---|---|---|---|---|---|---|
0 | A | 16 | Q | 32 | g | 48 | w |
1 | В | 17 | R | 33 | h | 49 | X |
2 | С | 18 | S | 34 | i | 50 | y |
3 | D | 19 | T | 35 | j | 51 | z |
4 | E | 20 | U | 36 | k | 52 | 0 |
5 | F | 21 | V | 37 | I | 53 | 1 |
6 | G | 22 | W | 38 | m | 54 | 2 |
7 | H | 23 | X | 39 | n | 55 | 3 |
8 | I | 24 | Y | 40 | о | 56 | 4 |
9 | J | 25 | Z | 41 | p | 57 | 5 |
10 | К | 26 | a | 42 | q | 58 | 6 |
11 | L | 27 | b | 43 | r | 59 | 7 |
12 | M | 28 | с | 44 | s | 60 | 8 |
13 | N | 29 | d | 45 | t | 61 | 9 |
14 | О | 30 | e | 46 | u | 62 | + |
15 | P | 31 | f | 47 | V | 63 | / |