电子邮件的信封和内容在邮件的传送过程中起什么作用?和用户的关系如何?
答:
一个电子邮件分为信封和内容两大部分。电子邮件的传输程序根据邮件信封上的信息(收信人地址)来传送邮件。RFC-822 只规定了邮件内容中的首部格式,而对邮件的主体部分则让用户自由撰写。用户填写好首部后,邮件系统将自动地将所需的信息提取出来并写在信封上。
电子邮件的地址格式是怎样的?请说明各部分的意思。
答:
TCP/IP 体系的电子邮件系统规定电子邮件地址的格式如下:
收信人邮箱名@邮箱所在主机的域名
符号“@”读作“at”,表示“在”的意思。
收信人邮箱名又简称为用户名,是收件人自己定义的字符串标识符。但应当注意,标志收件人邮箱名的字符串在邮箱所在的邮件服务器的计算机中必须是唯一的。我们知道,邮箱所在的主机的域名在互联网中是唯一的,这样就保证了这个电子邮件地址在整个互联网范围内是唯一的。这对保证电子邮件能够在整个互联网范围内准确交付是十分重要的。电子邮件的用户一般采用容易记忆的字符串。
例如,电子邮件地址:[email protected]
试简述SMTP通信的三个阶段的过程。
答:
① 连接建立:连接是在发送主机的 SMTP 客户和接收主机的 SMTP 服务器之间建立的。SMTP 不使用中间的邮件服务器。
② 邮件传送。
③ 连接释放:邮件发送完毕后,SMTP 应释放 TCP 连接。
试述邮局协议POP的工作过程。在电子邮件中,为什么需要使用POP和SMTP这两个协议?IMAP与POP有何区别?
答:
POP 使用客户/服务器的工作方式。在接收邮件的用户的 PC 机中必须运行 POP 客户机程序,而在其 ISP 的邮件服务器中则运行 POP 服务器程序。POP 服务器只有在用户输入鉴别信息(用户名和口令)后才允许对邮箱进行读取。POP 是一个脱机协议,所有对邮件的处理都在用户的 PC 机上进行;IMAP 是一个联机协议,用户可以操纵 ISP 的邮件服务器的邮箱。
MIME 与 SMTP 的关系是什么的?什么是 quoted-printable 编码和 base64 编码?
答:
MIME 全称是通用互联网邮件扩充 MIME。它并没有改动或取代 SMTP。MIME 的意图是继续使用目前的 RFC- 822格式,但增加了邮件主体的结构,并定义了传送非 ASCII 码的编码规则。也就是说,MIME 邮件可以在现有的电子邮件程序和协议下传送。
下图表明了 MIME和 SMTP 的关系:
quoted-printable 编码:
对于所有可打印的 ASCII 码,除特殊字符等号外,都不改变。等号和不可打印的 ASCII 码以及非 ASCII 码的数据的编码方法是:先将每个字节的二进制代码用两个十六进制数字表示,然后在前面再加上一个等号。
base64 编码是先把二进制代码划分为一个 24 位长的单元,然后把每个 24 位单元划分为 4 个 6 位组。每一个 6 位组按以下方法替换成 ASCII 码。6 位的二进制代码共有 64 种不同的值,从 1 到 63。用 A 表示 0,用 B 表示 1,等等。26 个大写字母排列完毕后,接下去再排 26 个小写字母,再后面是 10 个数字,最后用 + 表示 62,而用 / 表示 63。再用两个连在一起的等号 == 和一个等号 = 分别表示最后一组的代码只有 8 位或 16 位。回车和换行都忽略,它们可在任何地方插入。
一个二进制文件共 3072 字节长,若使用 base64 编码,并且每发送完 80 字节就插入一个回车符 CR 和一个换行符 LF,问一共发送了多少个字节?
解:
在 base64 编码方案中,24 比特的组被分成 4 个 6 比特单位,每个单位都作为一个合法的 ASCII 字符发送。编码规则是 A 表示 0,B 表示 1 等等,接着是 26 个小写字母表示 26 到 51,10 个数字(0 到 9)表示 52 到 61,最后,+ 和 / 分别表示 62 和 63。= 和 == 分别用来指示最后一组仅包含 8 位或 16 位。回车和换行被忽略不计,因此可以任意插入它们来保持一行足够短。
① 在本题中,base64 编码将把报文划分成 1024 个单元,每个单元 3 字节长。每个单元被编码为 4 个字节,所以共有 4096 个字节。如果把这些字节每 80 字节划分为一行,将需要 52 行,所以需要加 52 个CR 和 52 个LF。4096+52×2=4200。所以一共需要发送4200个字节。
②3072/6=512,512个6字节单元,编码后变为8字节单元。512×8=4096字节。52行,所以有52个回车,52个换行。一共有4096+52×2=4200字节。
试将数据 11001100 10000001 00111000 进行 base64 编码,并得到最后传输的 ASCII 数据。
答:
先将 24 比特的二进制数字划分为 4 个 6 位组:
110011 001000 000100 111000,得出十进制的值 51,8,4,56。因为 6 位组的值在 0 到 63 之间,因此每一个值可以唯一地与一个 ASCII 代码相对应。
根据 base64 编码表,把上面的这些值转换为对应的 ASCII 代码:zIE4
试将数据 01001100 10011101 00111001 进行 quoted-printable 编码,并得出最后传送的 ASCII 数据。这样的数据用 quoted-printable 编码后其编码开销有多大?
答:
01001100 1001101 00111001 有 3 个字节,中间的一个高位为 1,因此它不是 ASCII 码,需要使用 quoted-printable 编码。第一个和第三个字节是 ASCII 码,不变化。
10011101 的十六进制表示是:9D,前面再加上等号 “=”,变成 “=9D”。
=,9,D 的 8 位 ASCII 码分别为
00111101 00111001 01000100,因此最后的结果是 5 个字节的数据:
01001100 00111101 00111001 01000100 00111001
编码开销 = 5 – 3 = 2 字节。原来只有 3 字节的数据。
用百分数表示的编码开销 = 2/3 = 66.7%
电子邮件系统需要将众的电子邮件地址编成目录以便于查找,要建立这种目录应将人名划分为标准部分(例如,姓/名)。若要形成一个国际标准,那么必须解决哪些问题?
答:
非常困难。
例如,人名的书写方法,很多国家(如英、美等西方国家)是先书写姓。但像中国或日本等国家则是先书写姓再写名。有些国家的一些人还有中间的名。称呼也有非常多种类。还有各式各样的头衔。很难有统一的格式。
电子邮件系统使用 TCP 传送邮件。为什么有时我们会遇到邮件发送失败的情况?为什么有时对方会收不到我们发送的邮件?
答:
有时对方的邮件服务器不工作,邮件就发送不出去。对方的邮件服务器出故障也会使邮件丢失。