SMTP是否传输7位或8位字符(是否清除MSB?)
我的理解是,最初的SMTP协议被定义为仅使用7位来限制字符传输,以节省传输成本 该协议已有近40年的历史,从那时起,多个RFC扩展了标准 出于兼容性原因,许多(如果不是大多数现代的)8位干净的服务器都会将消息转换为“7位兼容”的格式,如quoted printable或base64 所以从技术上讲,所有字符都是7位ASCII码 然而,我的问题的关键是,即使数据以7位友好的方式编码,这是否意味着SMTP服务器之间的位物理传输以7位为单位,还是以8位为单位 我的假设是,即使数据是用ASCII编码的,也会以8位发生。这是正确的吗 以下是我找到的一些相关链接:SMTP是否传输7位或8位字符(是否清除MSB?),smtp,8-bit,7-bit,Smtp,8 Bit,7 Bit,我的理解是,最初的SMTP协议被定义为仅使用7位来限制字符传输,以节省传输成本 该协议已有近40年的历史,从那时起,多个RFC扩展了标准 出于兼容性原因,许多(如果不是大多数现代的)8位干净的服务器都会将消息转换为“7位兼容”的格式,如quoted printable或base64 所以从技术上讲,所有字符都是7位ASCII码 然而,我的问题的关键是,即使数据以7位友好的方式编码,这是否意味着SMTP服务器之间的位物理传输以7位为单位,还是以8位为单位 我的假设是,即使数据是用ASCII编码的,
我认为您要问的是:“SMTP客户端在向SMTP服务器发送邮件时是否会移动位,使每个字符仅使用7位,而第8位是下一个字符的开头?” 如果是这样的话,就不会了。情况从来没有这样过 从一开始,SMTP客户端/服务器就始终使用每个字符的所有8位 换句话说,SMTP客户端和服务器使用ASCII字符编码,该编码不包括8位字符编码(如ISO-8859-1)中的重音字符。ASCII编码中值大于127的字符被视为未定义字符 原因可能有很多:
谢谢@jstedfast。我已将你的答案标记为正确,因为它确实回答了我问题的主要部分。然而,我想我试图传达的是SMTP服务器是否仍然清除八位字节中的MSB?不是他们是否会传输7位单元,因为我同意这从未发生过。因此,我的问题应该细化为:今天的SMTP服务器是否清除高位,并仅使用7位对7位ASCII进行编码,或者它们实际上使用完整的八位字节,有时赋予MSB以意义?我认为它们从未清除MSB。我认为这只是一个问题,因为根据系统的区域设置字符集的不同,可能会对其进行不同的解释。不过,不要引用我的话。我只是不认为程序员会去努力清除MSB。RFC788一字不差地说:“每个7位字符在一个8位字节(或八位字节)中正确传输,高阶位清除为零。”对,但这只是描述了“7bit”的含义。这并不意味着SMTP协议的服务器实现在从客户端接收数据时清除MSB。在RFC1428:>中,这将表明在旧的7位实现中,SMTP网关确实会清除MSB事实?