TCP/IP通信
下面以向网络中的另一台主机发送E-mail消息作为例子,讨论TCP/IP通信机制。
应用层
TCP/IP中用于E-mail的应用层协议是SMTP,该协议对一台计算机能够向另一台计算机发送的一组命令给予了定义。这些命令用于指定消息的发送者、接收者和消息文本。图1.3所示的数据流构成E-mail消息。
数据流被发送到负责确保E-mail消息能够到达另一端的TCP模块中。这里的TCP模块可看作一个例程库,应用程序使用其中的例程与其他计算机进行可靠的网络通信。
传输层
TCP将一个大的E-mail消息分成多个可以管理的小块。每一块(或段)最终会被放入自己所属的数据包中,如图1.4所示。目的结点负责将单个段重新组成完整的E-mail消息。
图1.3 消息数据流
图1.4 将消息分成段
当消息被分成段后,TCP通过在每个段的前面设置一个报头来跟踪这些消息块。TCP报头包括源端口、目的端口和序列号。为了便于解释,如果将TCP报头缩写为“T”,那么此时整个E-mail消息如图1.5所示。
图1.5 设置TCP报头的E-mail消息
现在,数据报(或数据包)被向下传送到网络层进行处理,然后由IP负责传送。TCP跟踪它所发送的内容,并再次传送未通过的所有内容。
网际互联层
TCP和IP之间的接口比较简单,TCP只需将带有目的结点的数据报交给IP,而IP并不知道此数据报与其前后数据报的关系,它只要将该数据报传送到其最终结点即可。
IP的任务是为数据报找到一个路由,并将它发送到最终目的结点。为了将数据报发送到最终目的结点,IP也在每个段前设置一个报头。IP报头包括源IP地址、目的IP地址、说明其传输层协议的协议编号(这里其传输层协议是TCP)和校验和。如果将IP报头缩写成“I”,那么此时的E-mail消息如图1.6所示。
图1.6 增设IP报头的E-mail消息
现在,每个数据报可向下传送到网络接口层,以便以比特流的形式发送到物理网络。
网络接口层
物理网络在每个数据报前设置自己的报头。假设希望访问一个以太网。如果用“E”表示以太网报头,用“C”表示以太网校验和,则此时的E-mail消息由图1.7所示的3个数据报组成。
图1.7 增设以太网报头和以太网校验和的E-mail消息
目的结点
当目的结点接收到数据报之后,协议栈的各层协议以相反的方式分别对数据报进行处理。以太网接口处理以太网类型字段后将数据报上传给IP。
IP处理协议字段后将数据报上传给TCP。TCP处理序列号和其他信息,以便将数据段组合成原来的E-mail消息。最后将消息传送给目的计算机上的E-mail应用程序。