TCP/IP 简史
近年来,随着“传输控制协议/网际协议(TCP/IP)”套件的广泛使用,它已经成为网络通信中事实上的标准。这绝大部分要归功于因特网的迅猛发展以及对在不同平台、设备和操作系统中以它们都理解的“语言”来共享数据的需要。让我们首先了解 TCP/IP 的历史。
在 20 世纪 60 年代后期,美国国防部(DOD)意识到其内部日渐突出的通信问题。在 DOD 工作人员、研究实验室、大学以及承包商之间日益增长的电子信息通信量遇到了严重的障碍。组成 DOD 的不同实体和组织拥有来自不同计算机制造商的计算机系统,这些计算机系统运行不同的操作系统并使用不同网络拓扑结构和协议。
高级研究项目局(Advanced Research Projects Agency,ARPA)被授命提出一种解决这个问题的方案。ARPA 与各大学和计算机制造商结盟来开发一组通信标准。该联盟确定并构建了 4 节点的网络,这就成为当今因特网的基础。在 20 世纪 70 年代,该网络移植到一个新的、核心的协议设计中,这个协议就成为 TCP/IP 的基础。
开放系统互连(Open System Interconnection,OSI)模型
现在,我们使用许多不同类型的计算机,它们有着不同的操作系统、CPU 和网络接口等等。这些不同使得计算机系统间的通信出现问题。在 1997 年,国际标准化组织(ISO)创建了一个小组委员会来开发数据通信标准以促进多供应商的互操作性。其结果就是开放系统互连(OSI)模型。
OSI 模型并未确定任何通信标准或协议;相反,它只是提供了通信任务应该遵循的一些指导性建议。
注:OSI 模型只是一种模型或框架,它确定了要执行的功能,理解这一点很重要。它并未详细说明如何执行这些功能。但是,对于部分 OSI 模型,ISO 也确实接纳了某些符合 OSI 标准的具体协议。例如,ISO 接受 CCITT X.25 协议,该协议作为一种实现提供了 OSI 模型中网络层的大部分服务。
7 个 OSI 层
为简单起见,ISO 小组委员会采用分而治之的方法。将复杂的通信过程分为较小的子任务,问题就变得更容易处理,每个子任务可以分别优化。OSI 模型由 7 层组成:
· 应用层
· 表示层
· 会话层
· 传输层
· 网络层
· 数据链路层
· 物理层
给每一层都分配了一组特定的功能。每一层都使用下层的服务并为其上层提供服务。例如,网络层使用数据链路层的服务并为传输层提供与网络相关的服务。
OSI 层,续
利用相邻层的服务和为其相邻层提供服务,这种层的概念很简单。考虑公司是如何运做的:秘书写备忘录来向总裁(相邻的上一层)提供秘书服务。秘书使用信使的服务(相邻的下一层)来发送消息。通过将这些服务分开,秘书(应用程序)就不必知道消息实际上是如何传递到接收者手中。秘书只需要求信使(网络)发送消息即可。正如许多秘书通过使用这种标准的信使服务来发送备忘录一样,分层的网络可以通过将信息包交给网络层来发送这些信息包。
注:不要将应用层与在计算机上执行的应用程序混淆(在英文中都是一个词 — application)。请记住,应用层是 OSI 模型的一部分,它并未具体指定用户和通信路径之间的接口是如何工作的,应用程序是这个接口的具体实现。实际的应用程序通常执行应用层、会话层和表示层的服务,而将传输层、网络层、数据链接层和物理层服务留给网络操作系统来处理。
跨层通信
每一层都与其它计算机中的同一层通信。例如,一个系统中的第 3 层与另一个计算机系统的第 3 层通信。
当信息从一层传到下一层时,会在数据前面加一个头,以指出该信息的来源和目的地。来自某一层的由数据和头所组成的信息块又成为下一层的数据。例如,当第 4 层将数据传递到第 3 层时,它会添加自己的头。当第 3 层将该信息传递到第 2 层时,第 3 层会将来自第 4 层的头加数据作为它的数据,并在该数据前添加第 3 层的头,然后才将这个“头 + 数据”组合传给下一层。
每一层信息单元的名称都不同:
应用层 -- 消息
传输层-- 段
网络层 -- 数据报
数据链路层 -- 帧(也称做信息包)
物理层 -- 位
在 OSI 模型出现前,美国国防部定义了它自己的网络模型,即 DOD 模型。DOD 模型与 TCP/IP 协议套件有紧密的联系,这将在下一节说明。
TCP/IP 协议栈(TCP)
TCP/IP 协议栈表示了与 OSI 模型类似的网络体系结构。
但 TCP/IP 不象 OSI 模型那样详细区分协议栈的上面几层。OSI 最上面的 3 层大致与 TCP/IP 的网际处理协议相当。处理协议的一些示例有 Telnet、FTP、SMTP、NFS、SNMP 和 DNS。
OSI 模型的传输层负责可靠数据的发送。在网际协议栈中,这对应于主机到主机协议。这方面的示例是 TCP 和 UDP。TCP 用来转换来自上层协议的不定长消息以及提供远程系统间必要的确认和面向连接的流控制。
UDP 与 TCP 相似,但它不是面向连接的,而且不对数据接收进行确认。UDP 仅接收消息并将其传递给上层协议。因为 UDP 没有与 TCP 有关的那些开销,所以它为如远程磁盘服务等操作提供更高效的接口。
TCP/IP 协议栈(IP)
网