2.2 TCP/IP协议的体系结构
TCP/IP的层次
l 应用层
l 主机到主机层或运输层
l 互连网层
l 网络接入层
l 物理层
物理层(physical layer)定义了数据传输设备和传输媒体或网络间的接口。这一层涉及到对于传输媒介特性、信号特性、数据速率和相关内容的确定。
网络接入层(network access layer)关心的则是一个端系统和它连接的网络之间的数据交换。
互连网层(internet layer)互连网协议(IP)用在这一层提供越过多个网络的选路功能。这个协议不仅要在端系统中实现,而且要在路由器中实现。
主机到主机层(host-to-host layer)或运输层(transport layer)能够确保所有的数据都能到达目的应用程序,并且数据到达的顺序与发送时的顺序相同。实现可靠传输的机制与应用程序的特性实质上是无关的。因此这种机制集中在一个共同的层次以便所有的应用程序都能共享。传输控制协议TCP(Transmission Control Protocol)是提供这项功能的最常用的协议。
应用层(application layer)包括支持各种用户应用程序所需的逻辑功能。每一个不同种类的应用程序,例如文件传送,都需要一个专供这种应用程序使用的单独的模块。
TCP/IP的工作方式
为了成功地通信,整个系统中的每个实体都必须有一个唯一的地址。实际上,我们需要两个层次的寻址。每个连到子网上的主机都有一个在全互连网唯一的地址;这可以使数据能够交付给正确的主机。这个地址供IP选路和交付数据使用。主机上每一个应用程序则必须有一个在此主机上唯一的地址;这个地址使主机到主机协议(TCP)能够将数据交付给正确的进程。后一种地址被称为端口。
我们可以跟踪一个简单的工作进程。假定有一个进程使用主机A上的端口1进行通信,它希望将一个报文发送给利用主机B上的端口2进行通信的进程。主机A上的进程将此报文交给下面的TCP,并让其发送给主机B上的端口2。TCP将此报文交给下面的IP,并让其发给主机B。我们注意到IP不必知道目的端口的标识。IP只要知道数据是发给主机B就可以了。接下来IP将此报文向下交给网络接入层,告诉它将其发到路由器。
假设发送进程产生了一块数据并将它交给TCP。TCP可能会将这数据块再划分为许多更小的数据块,以便更方便地进行管理。对每一个这样的小块,都要附加一个包含控制信息的TCP首部,这就形成了一个TCP报文段。这些控制信息是供主机B中的TCP协议实体使用的。
TCP首部中的包含可能项有:
l 目的端口:当主机B上的TCP实体收到这一报文时,它必须知道这个报文段是交给谁的。
l 序号:TCP对发送到一个特定目的端口的报文段按顺序编上号码,以便当报文段未能按序到达时,主机B上的TCP实体能够恢复他们原来的顺序。
l 检验和:发送方TCP还包括一段代码,它是报文段中其余内容的一个函数。接受方TCP实体进行一个相同的计算,并将结果与收到的代码比较。若两者不一致就说明在传输过程中出现了差错。
接下来TCP将每个报文段交给IP,并让IP将其传送到主机B。这些报文段要穿过一个或多个子网,并经过一个或多个路由器的转发处理。这项操作也要使用控制信息。因为IP实体将包含控制信息的首部加到每一个报文段上,这就形成了IP数据报(IP datagram)。IP首部中包含的项目中就有目的主机地址。
最后,每个IP数据报被交给网络接入层,以便将其通过它在到达目的地的途中所遇到 每一个子网传输出去。网络接入层给IP报文加上其首部,构成分组(或称为帧)。该分组通过子网向路由器发送。分组首部包含子网所需要的用来传送数据的信息。
分组的首部包括的内容举例如下:
l 目的子网地址:子网必须知道分组到底要交付给连在其上的哪一个设备。
l 要求的设备:网络接入协议可能要用到某些子网设施,比如优先级。
在路由器处,分组首部被去掉,路由器继而检看IP首部。依据IP首部中的所包含的目的地址信息,路由器中的IP模块将数据通过子网2送到主机B。为了做到这一点,数据报又被加上一个网络接入首部。
当主机B收到上述数据后,要完成一个相反的过程。在每一层上相应的首部都被去掉,剩下的部分上交给紧邻的上一层,这个过程要持续到原始数据交付到目的进程为止。