想要掌握互联网协议,对于网络结构的分层的理解是必不可少的。现在就此话题我们来进行一下分析。首先让我们从互联网的一些基础概念来引入今天的话题……为了使数据能够跨互联网进行传输, 如J2EE等典型的分布式平台都需要依赖互联网协议的支持。对于跨互联网的数据传输来说, 互联网协议是至关重要的。对于分布式系统中的不同组件之间的通信, 以及和远程组件间的通信, 互联网协议通常都定义了相关标准。与其他传统的协议一样, 互联网协议定义了两个或多个通信实体之间进行信息交换的格式和顺序, 以及定义了消息或事件的传输与/或接受的行为[Kurose 2003]。
互联网协议中最重要的协议是传输控制协议和互联网协议(合称TCP/IP协议)。IP协议是互联网的基本协议, 用于不同主机之间的报文的不可靠传送。IP协议并不保证报文是否一定送达、 多长时间送达, 也不保证在传送多个报文时报文的接收顺序与发送顺序是否一致。而TCP协议则增加了连接和可靠性的概念。对于跨网络的通信, 尤其是跨互联网的通信, TCP/IP提供了数据流的可靠传送。
为了标识互联网络中的计算机(主机), 需要给每一台主机赋予一个地址, 该地址称为互联网协议地址(简称IP地址)。IP地址唯一标识了每一个网络及互联网中的每一台主机。IP地址包含两部分: 网络标识符和主机标识符。IP地址中的网络标识符标识互联网中的网络, 这个标识符是由互联网权威管理机构分配的, 并且在整个互联网上是唯一的。IP地址中的主机标识符是由控制该网络的组织所分配的。事实上, IP地址可分为三类, 分别用于大型网络、 中型网络和小型网络。大型网络的数量较少, 中型网络的数量中等, 小型网络的数量很多。
在进一步详细分析TCP/IP协议之前, 我们首先概述一下国际标准化组织的开放系统互连模型(简称OSI模型)中的各层。了解OSI中的层次对于理解TCP/IP模型中的分层非常关键。
OSI参考模型
不同的系统可以分布在网络上, 在这些系统上运行的应用程序进程之间可以进行数字通信, OSI参考模型是这类数字通信的一种抽象描述。参考模型也是一个关于如何进行通信的概念蓝图。参考模型涉及了高效通信所需的所有处理步骤, 并把这些处理步骤按逻辑关系进行分组, 并将这些组分别称为层。当通信系统按这种方式进行设计时, 则称为分层的体系结构。
如图2.1所示, OSI模型是一个七层层次结构。每一层向直接邻近的上一层提供所请求的增值服务。反过来, 每一层又向与它直接相邻的下一层提出一些基本的服务请求。OSI的层次划分如下所示。
物理层(或称第一层): 这是ISO/OSI参考模型的七层中最低的一层, 它规定了激活、 维持和释放终端系统之间的物理链路所需的电气需求、 机械需求、 过程需求及功能需求。
数据链路层(或称第二层): 该层提供了在网络实体之间传送数据的方法, 以及检测甚至有可能修复物理层所出现的错误。数据链路层提供了数据及错误通知的物理传输、 网络拓扑和流量控制。数据链路层将消息划分成格式化的数据块, 每一个数据块称为一个数据帧。每一个数据帧的数据由两部分组成: 帧头和帧数据, 帧头包括了数据帧的发送主机的源地址以及接收主机的目标地址。
网络层(第三层): 该层响应传输层(传输层是与网络层直接相邻的上一层)的服务请求, 并将服务请求发送给数据链路层。互联网协议的网络层可通过一个或多个网络将源结点的变长数据包传送到目的结点。该层所提供的功能包括: 网络路由、 流量控制、 组包和拆包、 差错控制。
传输层(第四层): 该层响应会话层(会话层是与传输层直接相邻的上一层)的服务请求, 并将服务请求发送给网络层。传输层的作用是提供终端用户之间的透明的数据传输。传输层负责将上层数据分段并提供可靠或不可靠的传输(不可靠传输的传输效率更高)。用户可以请求在不同的系统间进行可靠的数据传输。传输层通过流量控制和可靠的数据传输来保证数据完整性。
会话层(第五层): 会话层提供了终端用户应用程序进程之间的会话管理机制, 即负责建立、 管理、 终止表示层实体之间的会话。该层协调系统之间的通信, 并提供三种不同的模式来组织通信: 单工、 半双工和全双工。会话层可在数据中插入校验点, 还可终止或重启会话过程。
表示层(第六层): 表示层为应用层表示数据, 并提供数据转换和代码格式化。表示层的主要功能包括数据压缩与恢复、 数据加密与解密等。
应用层(第七层): 应用层是ISO/OSI参考模型中的最高层。应用层为应用程序提供了访问OSI网络的接口, 并完成应用程序所需的公共应用服务。对于进行通信的两个应用程序进程, 公共应用服务提供了语法转换。
第一层到第四层处理跨网络的端到端数据传输所需的通信、 流量控制、 差错处理。互联网协议的传输层下面可以有许多不同类型的物理网络, 例如X.25分组交换数据网络(PSDN)或局域网(LAN)。第五层到第七层处理跨网络应用的协调, 以及处理如何向应用表示信息。对于提供不同类型的终端用户服务的许多应用程序来说, 通用的传输层实现可以支持这些应用程序。