8-битная чистота является атрибутом компьютерных систем , каналов связи и других устройств и программного обеспечения, которые обрабатывают 8-битные кодировки символов , не рассматривая ни один байт как внутриполосный управляющий код.
До начала 1990-х годов многие программы и каналы передачи данных были ориентированы на символы и рассматривали некоторые символы, например, ETX , как управляющие символы . Другие предполагали поток семибитных символов со значениями от 0 до 127; например, стандарт ASCII использовал только семь бит на символ, избегая 8-битного представления, чтобы сэкономить на стоимости передачи данных. На компьютерах и каналах передачи данных, использующих 8-битные байты, это оставляло верхний бит каждого байта свободным для использования в качестве бита четности , флагового бита или бита управления метаданными. 7-битные системы и каналы передачи данных не могут напрямую обрабатывать более сложные коды символов, которые являются обычным явлением в неанглоязычных странах с более крупными алфавитами .
Двоичные файлы октетов не могут передаваться напрямую через 7-битные каналы данных. Чтобы обойти это, были разработаны двоично-текстовые кодировки , которые используют только 7-битные символы ASCII . Некоторые из этих кодировок — uuencoding , Ascii85 , SREC , BinHex , kermit и Base64 MIME . Системы на основе EBCDIC не могут обрабатывать все символы, используемые в UUencoded данных. Однако кодировка base64 не имеет этой проблемы.
Исторически для передачи сообщений использовались различные носители, некоторые из них поддерживали только 7-битные данные, поэтому 8-битное сообщение имело высокие шансы быть искаженным во время передачи в 20 веке. Но некоторые реализации действительно не заботились о формальном препятствовании 8-битным данным и позволяли пропускать байты с высоким набором бит. Такие реализации называются 8-битными чистыми. В общем, протокол связи называется 8-битными чистыми, если он правильно пропускает старший бит каждого байта в процессе связи.
Многие ранние стандарты протоколов связи , такие как RFC 780, 788, 821, 2821, 5321 (для SMTP ), RFC 977 (для NNTP ) и RFC 1056, были разработаны для работы по таким "7-битным" каналам связи. Они специально требуют использования набора символов ASCII, "передаваемого как 8-битный байт со старшим битом, очищенным до нуля", и некоторые из них [1] явно ограничивают все данные 7-битными символами.
В течение первых нескольких десятилетий существования сетей электронной почты (с 1971 по начало 1990-х годов) большинство сообщений электронной почты представляли собой обычный текст в 7-битном наборе символов US-ASCII. [2]
Определение SMTP в RFC 788 , как и его предшественник RFC 780, ограничивает интернет-почту строками (1000 символов или меньше) 7-битных символов US-ASCII. [3] [4] [5] [6]
Позднее формат сообщений электронной почты был переопределен для поддержки сообщений, которые не являются полностью текстом US-ASCII (текстовые сообщения в наборах символов, отличных от US-ASCII, и нетекстовые сообщения, такие как аудио и изображения). [6] Поле заголовка Content-Transfer-Encoding=binary [a] требует 8-битного чистого транспорта.
RFC 3977 [7] определяет, что «NNTP работает по любому надежному двунаправленному 8-битному каналу потока данных» и изменяет набор символов для команд на UTF-8. Однако RFC 5536 [8] по-прежнему ограничивает набор символов ASCII, включая кодировку MIME RFC 2047 [9] и RFC 2231 [10] для не-ASCII данных.
Интернет-сообщество обычно добавляет функции путем расширения , позволяя осуществлять связь в обоих направлениях между модернизированными и еще не модернизированными машинами, вместо того, чтобы объявлять ранее соответствующее стандартам устаревшее программное обеспечение «сломанным» и настаивать на том, чтобы все программное обеспечение во всем мире было обновлено до последнего стандарта. В середине 1990-х годов люди [ кто? ] возражали против «просто отправить 8 бит (на SMTP-серверы RFC 821)», возможно, из-за восприятия того, что «просто отправить 8 бит» — это неявное заявление о том, что ISO 8859-1 становится новой «стандартной кодировкой», заставляя всех в мире использовать один и тот же набор символов . [ оригинальное исследование? ] Вместо этого рекомендуемый способ воспользоваться преимуществами 8-битных чистых связей между машинами — использовать расширение ESMTP ( RFC 1869) 8BITMIME [11] [12] для тел сообщений и расширение SMTP SMTPUTF8 [13] для заголовков сообщений. Несмотря на это, некоторые агенты пересылки почты , в частности Exim и qmail , пересылают почту на серверы, которые не объявляют 8BITMIME, не выполняя преобразование в 7-битный MIME (обычно quote-printable , «QP conversion»), требуемое RFC 6152. Такое отношение «просто отправьте 8» на практике фактически не вызывает проблем, поскольку практически все современные почтовые серверы являются 8-битными чистыми. [14]
Максимальная общая длина текстовой строки, включая <CRLF>, составляет 1000 символов (но не считая начальной точки, дублированной для прозрачности).
SMTP, как определено в RFC 821, ограничивает отправку интернет-почты символами US-ASCII.
Многоцелевые расширения интернет-почты, или
MIME
, переопределяют формат сообщений