计算机网络(六)——应用层

第6章 应用层

6.1 域名系统DNS

6.1.1 域名系统概述

  • 许多应用层软件经常直接使用域名系统DNS ,但计算机的用户只是间接而不是直接使用域名系统。
  • 互联网采用层次结构的命名树作为主机的名字,并使用分布式的域名系统 DNS。
  • 名字到 IP 地址的解析是由若干个域名服务器程序完成的。域名服务器程序在专设的结点上运行,运行该程序的机器称为域名服务器

6.1.2 互联网的域名结构

  • 互联网采用了层次树状结构的命名方法。
  • 任何一个连接在互联网上的主机或路由器,都有一个唯一的层次结构的名字,即域名
  • 域名的结构由标号序列组成,各标号之间用点隔开:
    image.png
  • 各标号分别代表不同级别的域名。
  • 域名只是个逻辑概念,并不代表计算机所在的物理地点。
  • 变长的域名和使用有助记忆的字符串,是为了便于人来使用。而 IP 地址是定长的 32 位二进制数字则非常便于机器进行处理。
  • 域名中的“点”和点分十进制 IP 地址中的“点”并无一一对应的关系。点分十进制 IP 地址中一定是包含三个“点”,但每一个域名中“点”的数目则不一定正好是三个。
  • 顶级域名 TLD
    • 国家顶级域名 nTLD:.cn 表示中国,.us 表示美国,.uk 表示英国,等等。
    • 通用顶级域名 gTLD:.com (公司和企业),.net (网络服务机构,.org (非赢利性组织),.edu (美国专用的教育机构),.gov (美国专用的政府部门),.mil (美国专用的军事部门),.int (国际组织)
    • 基础结构域名:只有一个,即 arpa,用于反向域名解析,因此又称为反向域名。
      • 反向域名解析:从IP地址到域名的映射。例如,一个IP地址为218.30.103.170,其逆向域名表达方式为:170.103.30.218.in-addr.arpa。
      • 邮件服务器启用此功能可拒绝接收所有没有注册域名的地址发来的信息。
  • 互联网的域名空间[图片上传中...(image.png-46f864-1592289941906-0)]

6.1.3 域名服务器

  • 一个服务器所负责管辖的(或有权限的)范围叫做区。

  • 各单位根据具体情况来划分自己管辖范围的区。但在一个区中的所有节点必须是能够连通的。

  • 每一个区设置相应的权限域名服务器,用来保存该区中的所有主机的域名到 IP 地址的映射。

  • DNS 服务器的管辖范围不是以“域”为单位,而是以“区”为单位。

  • 区的不同划分方法举例
    image.png
  • 树状结构的 DNS 域名服务器
    image.png
  • 域名服务器有以下四种类型

    • 根域名服务器

      • 根域名服务器是最高层次的域名服务器,也是最重要的域名服务器。所有的根域名服务器都知道所有的顶级域名服务器的域名和 IP 地址。
      • 不管是哪一个本地域名服务器,若要对互联网上任何一个域名进行解析,只要自己无法解析,就首先求助于根域名服务器。
      • 在互联网上共有 13 个不同 IP 地址的根域名服务器,它们的名字是用一个英文字母命名,从 a 一直到 m(前 13 个字母)。
      • 根域名服务器共有 13 套装置,不是 13 个机器。
        这些根域名服务器相应的域名分别是:
        a.rootservers.net
        b.rootservers.net

        m.rootservers.net
      • 到2016年2月,全世界已经在 588 个地点安装了根域名服务器,使世界上大部分 DNS 域名服务器都能就近找到一个根域名服务器。
    • 顶级域名服务器

      • 顶级域名服务器(即 TLD 服务器)负责管理在该顶级域名服务器注册的所有二级域名。
      • 当收到 DNS 查询请求时,就给出相应的回答(可能是最后的结果,也可能是下一步应当找的域名服务器的 IP 地址)。
    • 权限域名服务器

      • 负责一个区的域名服务器。
      • 当一个权限域名服务器还不能给出最后的查询回答时,就会告诉发出查询请求的 DNS 客户,下一步应当找哪一个权限域名服务器。
    • 本地域名服务器

      • 本地域名服务器对域名系统非常重要。
      • 当一个主机发出 DNS 查询请求时,这个查询请求报文就发送给本地域名服务器。
      • 每一个互联网服务提供者 ISP,或一个大学,甚至一个大学里的系,都可以拥有一个本地域名服务器,
      • 这种域名服务器有时也称为默认域名服务器
  • 提高域名服务器的可靠性

    • DNS 域名服务器都把数据复制到几个域名服务器来保存,其中的一个是主域名服务器,其他的是辅助域名服务器
    • 当主域名服务器出故障时,辅助域名服务器可以保证 DNS 的查询工作不会中断。
    • 主域名服务器定期把数据复制到辅助域名服务器中,而更改数据只能在主域名服务器中进行。这样就保证了数据的一致性。
  • 域名的解析过程

    • 主机向本地域名服务器的查询一般都是采用递归查询。如果主机所询问的本地域名服务器不知道被查询域名的 IP 地址,那么本地域名服务器就以 DNS 客户的身份,向其他根域名服务器继续发出查询请求报文。
    • 本地域名服务器向根域名服务器的查询通常是采用迭代查询。当根域名服务器收到本地域名服务器的迭代查询请求报文时,要么给出所要查询的 IP 地址,要么告诉本地域名服务器:“你下一步应当向哪一个域名服务器进行查询”。然后让本地域名服务器进行后续的查询。
    • 本地域名服务器采用递归查询(比较少用)
      image.png
  • 名字的高速缓存

    • 每个域名服务器都维护一个高速缓存,存放最近用过的名字以及从何处获得名字映射信息的记录。
    • 可大大减轻根域名服务器的负荷,使互联网上的 DNS 查询请求和回答报文的数量大为减少。
    • 为保持高速缓存中的内容正确,域名服务器应为每项内容设置计时器,并处理超过合理时间的项(例如,每个项目只存放两天)。
    • 当权限域名服务器回答一个查询请求时,在响应中都指明绑定有效存在的时间值。增加此时间值可减少网络开销,而减少此时间值可提高域名转换的准确性。

6.2 文件传送协议

6.2.1 FTP概述

  • 文件传送协议 FTP 是互联网上使用得最广泛的文件传送协议。
  • FTP 提供交互式的访问,允许客户指明文件的类型与格式,并允许文件具有存取权限。
  • FTP 屏蔽了各计算机系统的细节,因而适合于在异构网络中任意计算机之间传送文件。
  • RFC 959 很早就成为了互联网的正式标准。

6.2.2 FTP的基本工作原理

  • 在两个主机之间传送文件往往非常困难。原因是众多的计算机厂商研制出的文件系统多达数百种,且差别很大。 经常遇到的问题是:

    • (1) 计算机存储数据的格式不同。
    • (2) 文件的目录结构和文件命名的规定不同。
    • (3) 对于相同的文件存取功能,操作系统使用的命令不同。
    • (4) 访问控制方法不同。
  • FTP 特点

    • 文件传送协议 FTP 只提供文件传送的一些基本的服务,它使用 TCP 可靠的运输服务。
    • FTP 的主要功能是减少或消除在不同操作系统下处理文件的不兼容性。
    • FTP 使用客户服务器方式。一个 FTP 服务器进程可同时为多个客户进程提供服务。FTP 的服务器进程由两大部分组成:一个主进程,负责接受新的请求;另外有若干个从属进程,负责处理单个请求。
  • 主进程的工作步骤

    • 打开熟知端口(端口号为 21),使客户进程能够连接上。
    • 等待客户进程发出连接请求。
    • 启动从属进程来处理客户进程发来的请求。从属进程对客户进程的请求处理完毕后即终止,但从属进程在运行期间根据需要还可能创建其他一些子进程。
    • 回到等待状态,继续接受其他客户进程发来的请求。主进程与从属进程的处理是并发地进行。
  • 两个连接
    image.png
    • 控制连接在整个会话期间一直保持打开,FTP 客户发出的传送请求通过控制连接发送给服务器端的控制进程,但控制连接不用来传送文件。
    • 实际用于传输文件的是“数据连接”。服务器端的控制进程在接收到 FTP 客户发送来的文件传输请求后就创建“数据传送进程”和“数据连接”,用来连接客户端和服务器端的数据传送进程。
    • 数据传送进程实际完成文件的传送,在传送完毕后关闭“数据传送连接”并结束运行。
  • 两个不同的端口号

    • 当客户进程向服务器进程发出建立连接请求时,要寻找连接服务器进程的熟知端口(21),同时还要告诉服务器进程自己的另一个端口号码,用于建立数据传送连接。
    • 接着,服务器进程用自己传送数据的熟知端口(20) 与客户进程所提供的端口号码建立数据传送连接。
    • 由于 FTP 使用了两个不同的端口号,所以数据连接与控制连接不会发生混乱。
    • 使用两个不同端口号的好处:使协议更加简单和更容易实现。在传输文件时还可以利用控制连接(例如,客户发送请求终止传输)。

6.2.3 简单文件传送协议TFTP

6.3 远程终端协议TELNET

  • TELNET 是一个简单的远程终端协议,也是互联网的正式标准。
  • 用户用 TELNET 就可在其所在地通过 TCP 连接注册(即登录)到远地的另一个主机上(使用主机名或 IP 地址)。
  • TELNET 能将用户的击键传到远地主机,同时也能将远地主机的输出通过 TCP 连接返回到用户屏幕。这种服务是透明的,因为用户感觉到好像键盘和显示器是直接连在远地主机上。
  • 客户-服务器方式:TELNET 也使用客户-服务器方式。在本地系统运行 TELNET 客户进程,而在远地主机则运行 TELNET 服务器进程。和 FTP 的情况相似,服务器中的主进程等待新的请求,并产生从属进程来处理每一个连接。
  • TELNET 使用网络虚拟终端 NVT 格式
    • 客户软件把用户的击键和命令转换成 NVT 格式,并送交服务器。
    • 服务器软件把收到的数据和命令,从 NVT 格式转换成远地系统所需的格式。
    • 向用户返回数据时,服务器把远地系统的格式转换为 NVT 格式,本地客户再从 NVT 格式转换到本地系统所需的格式。

6.4 万维网WWW

6.4.1 万维网概述

image.png
  • 万维网 WWW 并非某种特殊的计算机网络。
  • 万维网是一个大规模的、联机式的信息储藏所
  • 万维网用链接的方法能非常方便地从互联网上的一个站点访问另一个站点,从而主动地按需获取丰富的信息。这种访问方式称为“链接”。
  • 超媒体与超文本
    • 万维网是分布式超媒体 系统,它是超文本系统的扩充。
    • 一个超文本由多个信息源链接成。利用一个链接可使用户找到另一个文档。这些文档可以位于世界上任何一个接在互联网上的超文本系统中。超文本是万维网的基础。
    • 超媒体与超文本的区别是文档内容不同。超文本文档仅包含文本信息,而超媒体文档还包含其他表示方式的信息,如图形、图像、声音、动画,甚至活动视频图像。
  • 万维网的工作方式
    • 万维网以客户-服务器方式工作。
    • 浏览器就是在用户计算机上的万维网客户程序。万维网文档所驻留的计算机则运行服务器程序,因此这个计算机也称为万维网服务器
    • 客户程序向服务器程序发出请求,服务器程序向客户程序送回客户所要的万维网文档。
    • 在一个客户程序主窗口上显示出的万维网文档称为页面
  • 万维网必须解决的问题
    • (1) 怎样标志分布在整个互联网上的万维网文档?
      • 使用统一资源定位符 URL来标志万维网上的各种文档。
      • 使每一个文档在整个互联网的范围内具有唯一的标识符 URL。
    • (2) 用何协议实现万维网上各种超链的链接?
      • 在万维网客户程序与万维网服务器程序之间进行交互所使用的协议,是超文本传送协议。
      • HTTP 是一个应用层协议,它使用 TCP 连接进行可靠的传送。
    • (3) 怎样使各种万维网文档都能在互联网上的各种计算机上显示出来,同时使用户清楚地知道在什么地方存在着超链?
      • 超文本标记语言 HTML 使得万维网页面的设计者可以很方便地用一个超链从本页面的某处链接到互联网上的任何一个万维网页面,并且能够在自己的计算机屏幕上将这些页面显示出来。
    • (4) 怎样使用户能够很方便地找到所需的信息? 为了在万维网上方便地查找信息,用户可使用各种的搜索工具(即搜索引擎)。

6.4.2 统一资源定位符URL

1. URL的格式

  • 资源定位符 URL 是对可以从互联网上得到的资源的位置和访问方法的一种简洁表示。

  • URL 相当于一个文件名在网络范围的扩展。因此 URL 是与互联网相连的机器上的任何可访问对象的一个指针。

  • URL 的一般形式

    • 由以冒号隔开的两大部分组成,并且在 URL 中的字符对大写或小写没有要求。
    • URL 的一般形式是:
      image.png

    <端口>和<路径>有时可省略。

6.4.3 超文本传送协议HTTP

1. HTTP 的操作过程

  • 为了使超文本的链接能够高效率地完成,需要用 HTTP 协议来传送一切必须的信息。

  • 从层次的角度看,HTTP 是面向事务的应用层协议,它是万维网上能够可靠地交换文件(包括文本、声音、图像等各种多媒体文件)的重要基础。

    image.png

  • 用户点击 URL http://www.tsinghua.edu.cn/chn/yxsz/index.htm后所发生的事件
    (1) 浏览器分析超链指向页面的 URL。
    (2) 浏览器向 DNS 请求解析 www.tsinghua.edu.cn 的 IP 地址。
    (3) 域名系统 DNS 解析出清华大学服务器的 IP 地址。
    (4) 浏览器与服务器建立 TCP 连接。
    (5) 浏览器发出取文件命令:GET /chn/yxsz/index.htm。
    (6) 服务器给出响应,把文件 index.htm 发给浏览器。
    (7) TCP 连接释放。
    (8) 浏览器显示“清华大学院系设置”文件 index.htm 中的所有文本。

2. HTTP 的报文结构

  • HTTP 有两类报文:

    • 请求报文——从客户向服务器发送请求报文。
    • 响应报文——从服务器到客户的回答。
    • 由于 HTTP 是面向正文的,因此在报文中的每一个字段都是一些 ASCII 码串,因而每个字段的长度都是不确定的。
  • HTTP 的报文结构(请求报文) :报文由三个部分组成,即开始行、首部行和实体主体。在请求报文中,开始行就是请求行。

    image.png

    • 方法”是面向对象技术中使用的专门名词。所谓“方法”就是对所请求的对象进行的操作,因此这些方法实际上也就是一些命令。因此,请求报文的类型是由它所采用的方法决定的。

      image.png

    • “URL”是所请求的资源的 URL。

    • “版本”是 HTTP 的版本。

  • HTTP 的报文结构(响应报文) :响应报文的开始行是状态行。状态行包括三项内容,即 HTTP 的版本,状态码,以及解释状态码的简单短语。

    image.png

  • 状态码都是三位数字

    • 1xx 表示通知信息的,如请求收到了或正在进行处理。
    • 2xx 表示成功,如接受或知道了。
    • 3xx 表示重定向,表示要完成请求还必须采取进一步的行动。
    • 4xx 表示客户的差错,如请求中有错误的语法或不能完成。
    • 5xx 表示服务器的差错,如服务器失效无法完成请求。

3. 在服务器上存放用户的信息

  • 万维网站点使用 Cookie 来跟踪用户。
  • Cookie 表示在 HTTP 服务器和客户之间传递的状态信息。
  • 使用 Cookie 的网站服务器为用户产生一个唯一的识别码。利用此识别码,网站就能够跟踪该用户在该网站的活动。

6.4.4 万维网的文档

1. 超文本标记语言HTML

  • 超文本标记语言 HTML 中的 Markup 的意思就是“设置标记”。
  • HTML 定义了许多用于排版的命令(即标签)。
  • HTML 把各种标签嵌入到万维网的页面中。这样就构成了所谓的 HTML 文档。HTML 文档是一种可以用任何文本编辑器创建的 ASCII 码文件。
  • HTML 文档
    • 仅当 HTML 文档是以 .html 或 .htm 为后缀时,浏览器才对此文档的各种标签进行解释。
    • 如 HTML 文档改换以 .txt 为其后缀,则 HTML 解释程序就不对标签进行解释,而浏览器只能看见原来的文本文件。
    • 当浏览器从服务器读取 HTML 文档后,就按照 HTML 文档中的各种标签,根据浏览器所使用的显示器的尺寸和分辨率大小,重新进行排版并恢复出所读取的页面。
  • HTML还规定了链接的设置方法。每个链接都有一个起点和终点。
    • 远程链接:超链的终点是其他网点上的页面。
    • 本地链接:超链指向本计算机中的某个文件。
  • XML:是可扩展标记语言,它和HTML很相似。
    • 但XML的设计宗旨是传输数据,而不是显示数据(HTML是为了在浏览器上显示数据)
    • XML 不是要替换 HTML,而是对 HTML 的补充。
  • XHTML
    • XHTML (Extensible HTML) 是可扩展超文本标记语言,它与 HTML 4.01 几乎是相同的。
    • 但 XHTML 是更严格的 HTML 版本,也是一个 W3C 标准(2000年1月),是作为一种 XML 应用被重新定义的 HTML,并将逐渐取代 HTML。
    • 新的浏览器都支持 XHTML。
  • CSS
    • CSS (Cascading Style Sheets) 是层叠样式表,它是一种样式表语言,用于为 HTML 文档定义布局。
    • CSS 与 HTML 的区别就是:HTML 用于结构化内容,而 CSS 则用于格式化结构化的内容。

2. 动态万维网文档

image.png
  • 静态文档是指该文档创作完毕后就存放在万维网服务器中,在被用户浏览的过程中,内容不会改变。
  • 动态文档是指文档的内容是在浏览器访问万维网服务器时才由应用程序动态创建。
  • 动态文档和静态文档之间的主要差别体现在服务器一端。这主要是文档内容的生成方法不同。而从浏览器的角度看,这两种文档并没有区别。
  • 通用网关接口 CGI
    • CGI 是一种标准,它定义了动态文档应如何创建,输入数据应如何提供给应用程序,以及输出结果应如何使用。
    • 万维网服务器与 CGI 的通信遵循 CGI 标准。
    • “通用”:CGI 标准所定义的规则对其他任何语言都是通用的。
    • “网关”:CGI 程序的作用像网关。
    • “接口”:有一些已定义好的变量和调用等可供其他 CGI 程序使用。
  • CGI 程序
    • CGI 程序的正式名字是 CGI 脚本 。
    • “脚本”指的是一个程序,它被另一个程序(解释程序)而不是计算机的处理机来解释或执行。
    • 脚本运行起来要比一般的编译程序要慢,因为它的每一条指令先要被另一个程序来处理(这就要一些附加的指令),而不是直接被指令处理器来处理。

3. 活动万维网文档

image.png
  • 活动文档技术把所有的工作都转移给浏览器端。
  • 每当浏览器请求一个活动文档时,服务器就返回一段程序副本在浏览器端运行。
  • 活动文档程序可与用户直接交互,并可连续地改变屏幕的显示。
  • 由于活动文档技术不需要服务器的连续更新传送,对网络带宽的要求也不会太高。

6.4.5 万维网的信息检索系统

6.4.6 博客和微博

6.4.7 社交网站

6.5 电子邮件

6.5.1 电子邮件概述

  • 电子邮件 (e-mail) 是互联网上使用得最多的和最受用户欢迎的一种应用。

  • 电子邮件把邮件发送到收件人使用的邮件服务器,并放在其中的收件人邮箱中,收件人可随时上网到自己使用的邮件服务器进行读取。

  • 电子邮件不仅使用方便,而且还具有传递迅速和费用低廉的优点。

  • 现在电子邮件不仅可传送文字信息,而且还可附上声音和图像。

  • 电子邮件的一些标准

    • 发送邮件的协议:SMTP
    • 读取邮件的协议:POP3 和 IMAP
    • MIME 在其邮件首部中说明了邮件的数据类型(如文本、声音、图像、视像等),使用 MIME 可在邮件中同时传送多种类型的数据。
  • 电子邮件的最主要的组成构件


    image.png
  • 用户代理 UA

    • 用户代理 UA 就是用户与电子邮件系统的接口,是电子邮件客户端软件。
    • 用户代理的功能:撰写、显示、处理和通信。
    • 邮件服务器的功能是发送和接收邮件,同时还要向发信人报告邮件传送的情况(已交付、被拒绝、丢失等)。
    • 邮件服务器按照客户—服务器方式工作。邮件服务器需要使用发送和读取两个不同的协议。
  • 发送和接收电子邮件的几个重要步骤

    1. 发件人调用 PC 中的用户代理撰写和编辑要发送的邮件。
    2. 发件人的用户代理把邮件用 SMTP 协议发给发送方邮件服务器,
    3. SMTP 服务器把邮件临时存放在邮件缓存队列中,等待发送。
    4. 发送方邮件服务器的 SMTP 客户与接收方邮件服务器的 SMTP 服务器建立 TCP 连接,然后就把邮件缓存队列中的邮件依次发送出去。
    5. 运行在接收方邮件服务器中的SMTP服务器进程收到邮件后,把邮件放入收件人的用户邮箱中,等待收件人进行读取。
    6. 收件人在打算收信时,就运行 PC 机中的用户代理,使用 POP3(或 IMAP)协议读取发送给自己的邮件。
  • 电子邮件的组成

    • 电子邮件由信封 (envelope) 和内容 (content) 两部分组成。
    • 电子邮件的传输程序根据邮件信封上的信息来传送邮件。用户在从自己的邮箱中读取邮件时才能见到邮件的内容。
    • 在邮件的信封上,最重要的就是收件人的地址。
    • 电子邮件地址的格式(TCP/IP)
      image.png

6.5.2 简单邮件传送协议SMTP

  • SMTP 所规定的就是在两个相互通信的 SMTP 进程之间应如何交换信息。
  • 由于 SMTP 使用客户服务器方式,因此负责发送邮件的 SMTP 进程就是 SMTP 客户,而负责接收邮件的 SMTP 进程就是 SMTP 服务器。
  • SMTP 规定了 14 条命令和 21 种应答信息。每条命令用 4 个字母组成,而每一种应答信息一般只有一行信息,由一个 3 位数字的代码开始,后面附上(也可不附上)很简单的文字说明。
  • SMTP 通信的三个阶段
    1. 连接建立:连接是在发送主机的 SMTP 客户和接收主机的 SMTP 服务器之间建立的。SMTP不使用中间的邮件服务器。
    2. 邮件传送
    3. 连接释放:邮件发送完毕后,SMTP 应释放 TCP 连接。

6.5.3 电子邮件的信息格式

  • RFC 822 只规定了邮件内容中的首部(header) 格式,而对邮件的主体 (body )部分则让用户自由撰写。
  • 用户写好首部后,邮件系统将自动地将信封所需的信息提取出来并写在信封上。所以用户不需要填写电子邮件信封上的信息
  • 邮件内容首部包括一些关键字,后面加上冒号。最重要的关键字是:To 和 Subject。
    image.png

6.5.4 邮件读取协议POP3和IMAP

POP3协议

  • 邮局协议 POP 是一个非常简单、但功能有限的邮件读取协议,现在使用的是它的第三个版本 POP3。
  • POP 也使用客户-服务器的工作方式。
  • 在接收邮件的用户 PC 机中必须运行 POP 客户程序,而在用户所连接的 ISP 的邮件服务器中则运行 POP 服务器程序。

IMAP 协议

  • IMAP (Internet Message Access Protocol) 也是按客户服务器方式工作,现在较新的是版本 4,即 IMAP4。
  • 用户在自己的 PC 机上就可以操纵 ISP 的邮件服务器的邮箱,就像在本地操纵一样。
  • 因此 IMAP 是一个联机协议。当用户 PC 机上的 IMAP 客户程序打开 IMAP 服务器的邮箱时,用户就可看到邮件的首部。若用户需要打开某个邮件,则该邮件才传到用户的计算机上。
  • IMAP 最大的好处就是用户可以在不同的地方使用不同的计算机随时上网阅读和处理自己的邮件。
  • IMAP 还允许收件人只读取邮件中的某一个部分。例如,收到了一个带有视像附件(此文件可能很大)的邮件。为了节省时间,可以先下载邮件的正文部分,待以后有时间再读取或下载这个很长的附件。
  • IMAP 的缺点是如果用户没有将邮件复制到自己的 PC 上,则邮件一直是存放在 IMAP 服务器上。因此用户需要经常与 IMAP 服务器建立连接。

6.5.5 基于万维网的电子邮件

6.5.6 通用互联网邮件扩充MIME

  • SMTP 有以下缺点:
    • SMTP 不能传送可执行文件或其他的二进制对象。
    • SMTP 限于传送 7 位的 ASCII 码。许多其他非英语国家的文字(如中文、俄文,甚至带重音符号的法文或德文)就无法传送。
    • SMTP 服务器会拒绝超过一定长度的邮件。
    • 某些 SMTP 的实现并没有完全按照[RFC 821]的 SMTP 标准。

1. MIME概述

image.png
  • 通用互联网邮件扩充 MIME 并没有改动 SMTP 或取代它。
  • MIME 的意图是继续使用目前的 [RFC 822] 格式,但增加了邮件主体的结构,并定义了传送非 ASCII 码的编码规则。
  • MIME 主要包括三个部分
    • 5 个新的邮件首部字段,它们可包含在 [RFC 822] 首部中。这些字段提供了有关邮件主体的信息。
      image.png
    • 定义了许多邮件内容的格式,对多媒体电子邮件的表示方法进行了标准化。
    • 定义了传送编码,可对任何内容格式进行转换,而不会被邮件系统改变。

2. 内容传送编码

  • 最简单的编码就是 7 位 ASCII 码,而每行不能超过 1000 个字符。MIME 对这种由 ASCII 码构成的邮件主体不进行任何转换。
  • 另一种编码称为 quoted-printable,这种编码方法适用于当所传送的数据中只有少量的非 ASCII 码。
  • 对于任意的二进制文件,可用 base64 编码。

3. 内容类型

image.png
  • MIME 着标准规定 Content-Type 说明必须含有两个标识符,即内容类型(type)和子类型(subtype),中间用“/”分开。
  • MIME 标准定义了 7 个基本内容类型和 15 种子类型。
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 204,293评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,604评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,958评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,729评论 1 277
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,719评论 5 366
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,630评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,000评论 3 397
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,665评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,909评论 1 299
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,646评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,726评论 1 330
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,400评论 4 321
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,986评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,959评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,197评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 44,996评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,481评论 2 342