giovedì 10 marzo 2011

MIME

Il mio notebook Evernote "Internet" contiene link a siti web che permettono di fare conversioni da/a base64 e quoted-printable. In particolare:
Non garantisco della loro correttezza. Possono essere interessanti per avere rapidamente un'idea di cosa accade nella realtà.

Uno di voi ha approfondito personalmente alcuni aspetti di MIME, riporto di seguito le sue riflessioni a beneficio di tutti.

ATTENZIONE: non garantisco della correttezza di queste riflessioni e non ho il tempo di renderle più chiare (secondo me se uno non ha già le idee chiare ci capisce poco). Le riporto per incoraggiarvi a "partecipare"...


Premetto che le lettere accentate (come ha detto Lei) non riguardano i primi 128 character codes del US-ASCII. Quindi ho cercato di sanare la mia curiosità e condivido quanto raccolto. 
 
Dato per assodato il vincolo imposto dal protocollo SMTP (bit 8 = 0).
Domanda perché non usare per l’EncodingType tutti i 128 caratteri del US-ASCII invece di 64 visto che:
-        in base64, 3 Byte vengono codificati in 4 Byte con dimensione finale ~= 133%;
-        in base128, 7 Byte vengono codificati in 8 Byte con dimensione finale ~= 114%, quindi più efficiente!

Risposta dando un’occhiata alle RFC 1421, 1521 e 2045, che grossomodo dicono le stesse cose.
Il perché in base64 e non base128 si spiega osservando che è necessario:
-        avere una rappresentazione stampabile del carattere per evitare gli “ASCII control characters” che vanno da 0-31 ed il 127 e che possono avere comportamenti diversi in sistemi diversi (, );
-        non utilizzare caratteri che possono avere un significato nella comunicazione o per il sistema ospitante (p.e.: ~ , . ).
-        ammesso che, in deroga a quanto sopra scritto, fosse stato possibile usare 7 bit per la transcodifica, non ci sarebbe stata la possibilità di trasmettere in SMTP il “padding character (=)” che richiede un bit in più per distinguersi dalle sequenze binarie già usate.

Riferito all’aspetto 1

RFC 1421: “ Although SMTP specifies a standard representation for line delimiters (ASCII ), numerous systems in the Internet use a different native representation to delimit lines.  For example, the sequences delimiting lines in mail inbound to UNIX systems are transformed to single s as mail is written into local mailbox files.  Lines in mail incoming to record-oriented systems (such as VAX VMS) may be converted to appropriate records by the destination SMTP server”

Riferito all’aspetto 2

RFC 2045: “These characters, identified in Table 1, below, are selected so as to be universally representable, and the set excludes characters with particular significance to SMTP (e.g., ".", CR, LF) and to the multipart boundary delimiters defined in RFC 2046 (e.g., "-").”
 
Posta un commento