跳转到内容

FOSS 开放标准/一些重要的开放标准

来自维基教科书,开放世界中的开放书籍

本节将讨论一些目前已经可以使用或正在积极开发的更重要的开放标准。这里列出的标准并非详尽无遗,但它们确实代表了当今行业中最广泛使用的标准。

互联网网络和应用/服务

[编辑 | 编辑源代码]

互联网之所以能成为今天的样子,主要是因为它提供的应用程序和服务的几乎普遍可访问性及其无缝连接性。这是互联网在历史和现状中广泛使用开放标准的直接结果。这里重点介绍了主要负责互联网基础设施以及流行的万维网和互联网电子邮件服务的标准。

传输控制协议/互联网协议

[编辑 | 编辑源代码]

TCP/IP 网络标准套件为互联网的网络基础设施奠定了基础。互联网上的所有主要服务和应用程序都建立在 TCP/IP 之上。这些协议最初由互联网的先驱者开发,他们来自大学、研究机构和公司的工程师和科学家,共同参与了美国国防部高级研究计划署网络(ARPANET)项目。这发展成为我们今天所知的互联网,而 TCP/IP 成为了一种事实上的标准。现在它是 IETF 标准,IETF 负责其持续发展。

TCP/IP 是一种两层分组交换规范,其中要在网络上两个端点之间通信的数据首先被分解成较小的数据包,然后这些数据包被分别路由穿过网络,从源点到目标点。较高层,传输控制协议 (TCP),[1] 管理着数据在源点的拆分和在目的地点接收数据包后的重新组装。较低层,互联网协议 (IP),[2] 处理每个数据包的寻址和路由,以便它到达正确的目的地。

TCP/IP 只是提供了一种跨互联网或 IP 网络发送数据的传输机制。为了使其有用,必须指定和实现服务或应用程序。再次,IETF 主要负责监督和制定大多数这些服务的规范。这些规范的广泛实施和接受,加上 IETF 和 W3C 等开放标准机构,使得互联网成为开放标准发挥作用的最佳展示。下面列出了一些这些标准。

超文本传输协议

[编辑 | 编辑源代码]

HTTP 也许是使用最广泛的互联网服务协议。它是访问万维网的主要方法。网页内容,以 HTML 页面以及可能的其他多媒体格式的形式,从 Web 服务器传输到用户的 Web 访问代理,使用的是 HTTP 协议。HTTP 由 W3C 联合 IETF 工作组开发。目前在 Web 上部署和支持最广泛的标准是 HTTP 版本 1.1 或 HTTP/1.1。[3]

HTTP 协议是一种请求-响应协议,使用客户端-服务器模型,其中 HTTP 客户端(例如 Web 浏览器)通过建立到将响应客户端发送的请求命令的服务器计算机的 TCP 连接来发起请求。支持以及客户端和服务器行为的命令都在 HTTP 规范中说明。

正是由于对 HTTP 协议标准的普遍接受,Web 才成为了如今无处不在的信息传播和交换媒介。它在互联网上所有利益相关者和参与者中得到广泛接受的一个主要因素是其开放标准地位。

超文本标记语言

[编辑 | 编辑源代码]

虽然 HTTP 定义了如何将网页内容在 Web 服务器和客户端之间传输,但 HTML 是一种开放标准,它指定了内容的结构和呈现方式。用 HTML 编写的文档由内容和符号以及标记组成,这些标记告诉需要解释和显示 HTML 文档的软件内容的结构和呈现方式。HTML 规范现在由 W3C 维护。它经历了多次修订,最新的规范是 HTML 4.01。[4] HTML 也可以作为 ISO 标准,[5] 它只是 HTML 4 的一个子集。

在最简单的形式中,HTML 文档由文档的文本以及指定对其执行的标记的标记组成。例如,在下面的示例中

<h3>My Work Experience</h3>
<img src="mypic.png">
<p>
    <b>Work Experience</b>
    <br>
    <br>
    1990 - 1995 System engineer<br>
    1995 - 2005 Network manager<br>
</p>

标签 <h3> 和 </h3> 指定了它们之间包含的文本将被渲染为三级标题,而标签 <img src="mypic.png"> 指定了图形文件的显示。标签 <b>、</b> 指定了它们之间包含的文本应被渲染为粗体,而标签 <br> 表示换行。

需要一个 HTML 用户代理软件来渲染由 HTML 组成的文档,最常见的代理是 Web 浏览器。如果遵守 W3C HTML 规范,任何用户代理(符合规范)都可以正确显示 HTML 文档,这可以构成文本文档信息交换标准格式的基础。不过,使用 HTML 显示文档的一个主要局限性是,分页符不容易表示或控制。

在电子邮件中使用 HTML 越来越受欢迎,因为它可以对文本进行一些简单的格式化,并将图形和多媒体内容嵌入到邮件中。但是,安全意识强的用户通常认为在邮件中使用 HTML 不是最佳实践,因为一些流行的启用 HTML 的电子邮件软件已知存在漏洞。这使得它们容易受到恶意 HTML 邮件的潜在攻击,可能会导致用户系统遭到破坏。

电子邮件协议

[edit | edit source]

互联网电子邮件 几乎已成为与电话服务一样重要的东西。每次我们发送电子邮件时,我们都假设邮件将被邮件服务器正确地转发到目的地。当我们发送附件或将一些非文本内容包含到电子邮件中时,我们只是假设附件将被正确地合并,当收件人收到它时,他/她将能够将其恢复到原始形式。所有这一切都无缝地运行,无论部署的硬件和软件如何,因为互联网电子邮件在其邮件传输以及电子邮件消息编码中都使用了一些重要的开放标准。

简单邮件传输协议

[edit | edit source]

SMTP [6] 使得能够使用电子邮件地址将电子邮件从发件人传输到收件人。此标准基于客户端-服务器,SMTP 客户端(通常是用户的电子邮件软件或邮件用户代理)将启动与 SMTP 服务器(邮件中继主机)的 TCP 连接。服务器和客户端之间的通信使用 SMTP 协议完成。这是一种简单的基于文本的协议,其中,本质上,客户端通知服务器发件人和收件人的电子邮件地址。

在那之后,如果一切顺利并且服务器允许(基于其邮件中继策略),客户端将邮件消息传输到服务器。然后,服务器将尝试将其传递给容纳收件人邮箱的计算机,或者,如果需要,将电子邮件转发到另一个服务器以传递给收件人邮箱。

SMTP 协议最初只支持消息中的 7 位 ASCII(美国信息交换标准代码)文本,实际上将其限制在英语文本的传输。使用 7 位 ASCII 字符集之外的字符集的非英语文本以及二进制文件附件必须在传输之前由电子邮件用户代理软件进行编码。这种基于文本的邮件的消息格式由另一个 IETF 标准 RFC 2822 [7] 指定。SMTP 标准已扩展为支持 8 位文本,[8] 允许以更多语言传输文本消息,无需编码。

多用途互联网邮件扩展

[edit | edit source]

随着 互联网电子邮件 越来越受欢迎,用户发现它是一种便捷、经济且高效的将信息互相发送的方式。用户尝试通过电子邮件发送除文本消息以外的其他类型的内容,例如音频、视频、图像、软件程序。但是,由于原始的 互联网电子邮件 规范主要针对英语文本消息,因此必须制定一些新的规范集以允许多用途内容的互操作性和无缝传输。这导致 IETF 生成了 多用途互联网邮件扩展 (MIME) 标准。[9]

MIME 是基本基于文本的 互联网邮件 标准的扩展。它定义了在电子邮件中发送其他类型信息的机制。这些包括使用 ASCII 之外的字符集的非英语文本以及二进制文件内容,如 多媒体 文件和计算机软件。为了支持这些以及保持与简单的基于 ASCII 的邮件格式的向后兼容性,定义了一组用于指定消息附加属性(例如内容类型)的电子邮件头和一组可用于使用 7 位 ASCII 集中的字符来表示 8 位数据的传输编码。邮件消息头中非 ASCII 字符的编码也在 MIME 中得到照顾,允许在其中使用非英语字符。MIME 标准指定了一种注册新内容类型和传输编码的方法,使其能够灵活地支持将来新的多媒体类型。

MIME 也是 Web 的重要标准,因为 HTTP 协议在其数据格式中使用了类似邮件的 MIME 格式规则和语法。

可扩展标记语言

[edit | edit source]

可扩展标记语言 (XML) 是 W3C 的一项建议,[10] 它指定了一种元标记语言(元语言是用于描述其他语言的语言),用于创建其他标记语言,以便在 WWW 上使用。 HTML 是一种预定义的单一标记语言,因此在描述和表示用于传播、交换和交互的各种数据方面存在严重限制。XML 作为一种标记规范语言,能够用于设计标记来描述许多不同类型的数据,以便程序存储、传输或处理。[11] 它描述了数据,但它没有告诉你应该如何使用数据。

应该注意的是,XMLHTML 的设计目标不同,XML 被设计为存储、携带和交换数据,而 HTML 被设计为显示数据并关注数据的显示方式。[12] XML 是为在 Web 上部署而创建的,它使用现有广泛使用的国际文本文档标记标准的子集——标准通用标记语言 (SGML)。[13]

由于其设计目标,XML 很适合数据传输和交换以及作为文档存储和处理的格式。这一点以及它由一个开放的规范/标准机构 W3C 负责管理的事实,导致 XML 被用作指定许多其他数据格式和交换协议的基础。根据社区驱动的 XML 门户网站 XML.ORG,[14] 它现在被视为在没有共享通用平台的环境中进行信息交换的标准方式。

几乎每天都会发布使用 XML 为特定环境或活动开发的专用语言和标准,并且自从 1998 年 2 月发布 XML 1.0 以来,已有数百种标准被采用。特别是,电子政务电子商务 领域在开发和实施基于 XML 的规范方面非常活跃。

下面显示了一个简单的 XML 文档

<?xml version="1.0" encoding="ISO-8859-1"?>
<?xml-stylesheet type="text/xsl" href="bookcollection.xsl"?>
<BookCollection>
    <Book>
        <Title>Chronicles: Volume One</Title>
        <Author>Bob Dylan</Author>
        <Publisher>Simon and Schuster</Publisher>
        <Year>2004</Year>
    </Book>
    <Book>
        <Title>Harry Potter and the Goblet of Fire</Title>
        <Author>J.K. Rowling</Author>
        <Publisher>Bloomsbury Publishing</Publisher>
        <Year>2000</Year>
    </Book>
</BookCollection>

请注意,虽然 XML 使用语法标签来识别文档文件中的各种数据类型,但这些标签不是预定义的。因此,文档创建者必须使用所谓的 XML 模式定义和描述它们,并将文档与模式相关联。要创建模式,需要使用 XML 模式语言,例如 文档类型定义 (DTD)、XML 模式RELAX NG。模式的目的是定义 XML 文档的合法构建块,即可以在文档中出现的元素、数据属性、标签等。DTD 在可扩展性和缺乏对一些有用功能的支持方面存在局限性,例如数据类型和命名空间。XML Schema 也是另一项 W3C 建议,它更适合用于许多实际的 Web 应用程序。

虽然模式可以定义 XML 文档的合法组件,但它不包含有关如何显示数据的任何信息。因此,为了使 XML 文档中的数据能够被例如 Web 浏览器正确显示,必须指定显示样式。可扩展样式表语言 (XSL) 用于执行此操作。样式化是关于转换和格式化信息,W3C 规范将这些过程分开。此外,必须导航 XML 文档中的组件以提取和处理它们。因此,来自 W3C 的 XSL 建议包含三个部分

  1. XSL 转换 (XSLT):用于转换 XML 文档的语言
  2. XSL 格式化对象 (XSL-FO):用于格式化 XML 文档的语言
  3. XML 路径 语言 (XPath):用于在 XML 文档中导航的语言

以上述 XML 示例文档为例,对其进行 XSLT 转换 以生成可供 Web 浏览器显示的 HTML 输出,示例如下:

<?xml version="1.0" encoding="ISO-8859-1"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:template match="/">
    <html>
    <body>
        <h3>Book Collection</h3>
        <table>
        <tr bgcolor="#ff0000">
        <th align="center">Title</th>
        <th align="center">Author</th>
        <th align="center">Publisher</th>
        <th align="center">Year</th>
        </tr>
    <xsl:for-each select="BookCollection/Book">
    <tr>
        <td><xsl:value-of select="Title"/></td>
        <td><xsl:value-of select="Author"/></td>
        <td><xsl:value-of select="Publisher"/></td>
        <td><xsl:value-of select="Year"/></td>
    </tr>
    </xsl:for-each>
    </table>
    </body>
    </html>
</xsl:template>
</xsl:stylesheet>

计算机图形和多媒体

[edit | edit source]

在过去的计算时代,显示主要以文本为基础,任何显示的图形充其量只是使用特殊线绘制字符集实现的线形图形。能够显示完整图形的计算机终端价格昂贵,仅用于特殊目的或应用程序。如今,随着价格低廉的个人电脑的普及,这些电脑具有处理和显示图形和多媒体的功能,即使用户界面也变成了基于图形的。Web 的主要吸引力之一是它广泛支持和使用图形图像和多媒体,使内容更有趣和生动。

重要的是,在图形和多媒体数据存储、处理和检索方面,应尽可能遵循 开放标准,以使各种设备和计算平台能够提供相同程度的 Web 体验。

便携式网络图形

[edit | edit source]

在 Web 的早期,当 互联网 链接和连接速度相对较慢时,网页上显示的许多简单图像和动画使用了称为 图形交换格式 (GIF)[15] 的图形格式,因为这种格式产生了较小的图形文件大小。GIF 格式包括使用 Lempel-Ziv-Welch (LZW) 压缩算法,该算法在美国由 Unisys 获得专利,Unisys 最终决定对所有使用 GIF 的软件收取使用费。这导致了 便携式网络图形 (PNG) 格式[16] 的创建,以取代 GIF 用作单图像 Web 格式。PNG 格式后来成为 W3C 建议以及 ISO 国际标准 (ISO/IEC 15948)。

PNG 是一种可扩展的文件格式,用于无损、便携、压缩良好的 光栅图像 存储。支持索引颜色、灰度和真彩色图像,以及用于透明度的可选 alpha 通道。它完全可流式传输,并具有渐进显示选项,使其适用于网页中的在线图形显示。它还拥有强大的功能,提供了完整的文件完整性检查和对常见传输错误的简单检测。[17]

X 窗口系统

[edit | edit source]

现在台式电脑上常见的 图形用户界面 (GUI) 使用图形窗口隐喻作为基本用户界面。这种窗口系统 GUI 使得不同的程序可以在各自的独立窗口中同时运行,这些窗口可以打开、关闭和调整大小。在 Microsoft WindowsMac OS X 等平台上找到的窗口系统是专有的。另一方面,UNIX 和类 UNIX 操作系统(例如 GNU/LinuxFreeBSD)使用一个开放的窗口系统 - X 窗口系统

X 窗口系统 或 X 是由 X.Org 基金会 主导的开放窗口系统标准。[18] X 提供了一个框架用于显示和管理图形信息,在此基础上可以构建 GUI。X 使用客户端-服务器模型。X 客户端通常是发送图形输出以在 X 服务器上显示的应用程序。X 服务器主要使用键盘和鼠标作为输入设备与用户交互,并将输入传输到客户端以进行操作。

X 客户端和服务器可以在同一台机器上运行,也可以在通过网络连接的不同物理设备上运行。X 的内在客户端-服务器特性是它与其他著名窗口系统(如 Microsoft Windows)之间的主要区别,Microsoft Windows 只显示在运行应用程序的设备上本地运行的图形应用程序。

作为 开放标准,除了 UNIX 和类 UNIX 系统外,X 还在各种硬件和操作系统上得到了实现,包括各种版本的 Macintosh、运行 MS-DOS 和 Microsoft Windows 的 PC 以及来自惠普(前身为数字设备公司)的 OpenVMS 等。

Ogg Vorbis

[edit | edit source]

Ogg Vorbis 是一种通用压缩音频格式,用于存储和播放数字音乐。其质量与其他格式(如流行的 MP3)相当。但是,与 MP3 不同,它是一种开放格式,并声称不受 专利 限制。该格式起源于 Xiph.Org 基金会,[19] 该基金会是一个致力于为多媒体制作免费和开放协议、格式和软件的非营利组织。

Vorbis 是音频压缩方案的名称,它包含在 Ogg 中,Ogg 是 Xiph.Org 的音频、视频和元数据的容器格式 - 因此得名 Ogg Vorbis。Vorbis 是一种 有损 编解码器,即它使用一种丢弃数据的压缩算法以提高可能的压缩率。 Ogg 也是其他格式的容器,包括: FLAC (无损音频)、Speex (语音) 和 Theora (视频)。Ogg、Vorbis 以及这些其他格式的规范属于公有领域,完全免费用于商业或非商业用途。[20]

支持 Ogg Vorbis 的软件和硬件设备数量正在稳步增加,可以在 Xiph.Org 的 Vorbis wiki 上找到。[21]

办公文档

[edit | edit source]

办公应用程序是现代办公室中个人电脑上使用最广泛的应用程序之一。这些应用程序包括 文字处理电子表格演示文稿软件。市场上有多种办公应用程序,例如 Microsoft OfficeWordPerfect Office、OpenOffice.org 和 Applixware Office。过去,这些应用程序中每个应用程序都使用不同的格式来存储它们的文件。

因此,从一种文件格式转换为另一种文件格式,或一个应用程序读取/写入另一个应用程序创建的文件都很困难。当OASIS宣布建议Open Document格式作为办公应用程序中使用的标准文件格式时,这在办公互操作性和生产力方面是一个真正的进步。

OpenDocument

[edit | edit source]

OpenDocument [22]是由OASIS开发的一种文件格式,用于存储由电子表格、文字处理器、图表和演示文稿软件等应用程序创建的办公文档。它使用免版税、开放且与供应商无关的基于 XML 的格式。该格式基于OpenOffice.org的文件格式,该格式已提交给 OASIS,以作为标准的基础。OpenDocument 为文本处理、电子表格、演示文稿、绘图、图表和数学文档提供了一个XML 模式。OpenDocument 格式已成为ISO/IEC 国际标准 (ISO/IEC 26300)。

宣布将OpenDocument格式作为其主要/原生格式支持的办公软件包括OpenOffice.orgStarOfficeKOffice的办公套件。

开放标准使用情况

[edit | edit source]

表 1 总结了上述开放标准在其各自领域的应用和渗透水平。可以看出,开放标准在互联网上以及运行与互联网相关的/衍生服务和应用程序中得到广泛部署。然而,在图形、多媒体和办公应用程序领域,它们的接受度仍然非常有限。这些领域渗透率有限的原因是,它们被AppleMicrosoft等公司的专有产品所主导,这些产品使用自己的专有格式和规范(见下一节“文件格式比较”)。由于这些供应商在各自领域的统治地位,他们支持开放标准或至少使其规范更加开放的动力并不强。

重要的开放标准
领域 标准 组织 使用情况
网络 TCP/IP IETF 通用
WWW HTTP W3CIETF 通用
Web 内容 HTML W3C 通用
电子邮件 SMTP IETF 通用
电子邮件WWW MIME IETF 通用
文档交换 XML W3C 通用
图形 PNG W3C 广泛
窗口系统 X 窗口 X.Org 有限
音频 Ogg Vorbis Xiph.Org 有限
办公文档 OpenDocument OASIS 有限

脚注

[edit | edit source]
  1. RFC 793,“传输控制协议” http://www.ietf.org/rfc/rfc793.txt
  2. RFC 791,“互联网协议” http://www.ietf.org/rfc/rfc791.txt
  3. RFC 2616,“超文本传输协议 - HTTP/1.1” http://www.ietf.org/rfc/rfc2616.txt
  4. HTML 4.01 规范 http://www.w3.org/TR/html401/
  5. ISO/IEC 15445:2000 http://purl.org/NET/ISO+IEC.15445/15445.html
  6. RFC 2821,“简单邮件传输协议” http://www.ietf.org/rfc/rfc2821.txt
  7. RFC 2822,“互联网消息格式” http://www.ietf.org/rfc/rfc2822.txt
  8. RFC 1652,“用于 8bit-MIME 传输的 SMTP 服务扩展” http://www.ietf.org/rfc/rfc1652.txt
  9. RFC 2045、2046、2047、2048、2049,多用途互联网邮件扩展 (MIME) 第 1-5 部分 http://www.ietf.org/rfc/rfc2045.txt http://www.ietf.org/rfc/rfc2046.txt http://www.ietf.org/rfc/rfc2047.txt http://www.ietf.org/rfc/rfc2048.txt http://www.ietf.org/rfc/rfc2049.txt
  10. 可扩展标记语言 (XML) 1.0 (第三版) http://www.w3.org/TR/REC-xml
  11. Flynn, P (编),XML 常见问题解答 v4.1,Cork,2005 年 5 月 http://xml.silmaril.ie
  12. W3Schools,“XML 简介” https://w3schools.org.cn/xml/xml_whatis.asp
  13. W3C,可扩展标记语言 (XML) http://www.w3.org/XML/
  14. XML.ORG http://www.xml.org
  15. 图形交换格式版本 89a http://www.w3.org/Graphics/GIF/spec-gif89a.txt
  16. 便携式网络图形 (PNG) 建议 http://www.w3.org/TR/PNG/
  17. 便携式网络图形 (PNG) 建议 http://www.w3.org/TR/PNG/
  18. X.Org 基金会 http://www.x.org
  19. Xiph.Org 基金会 http://www.xiph.org
  20. Ogg Vorbis 通用常见问题解答 http://www.vorbis.com/faq.psp
  21. Xiph.org 上的 Vorbis Wiki http://wiki.xiph.org/index.php/Vorbis
  22. OASIS 标准,“办公应用程序 OpenDocument 格式 (OpenDocument) v1.0” http://www.oasis-open.org/specs/index.php#opendocumentv1.0
华夏公益教科书