扫一扫
分享文章到微信
扫一扫
关注官方公众号
至顶头条
介于应用层和网络层之间的传输层是分层网络体系结构的重心部分。它的重要任务就是直接给运行在不同主机上的应用程序提供通信服务。
传输层协议为不同主机上的应用程序进程提供逻辑通信。逻辑通信的意思就是尽管通信的应用进程之间不是物理连接的(实际上,它们可能是在一个行星的不同位置,通过各种各样的路由器和各种链接类型连在一起),而从应用程序的角度来看,它们就像是物理连接的一样。应用程序通过使用传输层提供的逻辑通信互相传输信息,而不用考虑用来传送这些信息的物理基础设施。团.1描述了逻辑通信的概念。
如图1所示,传输层协议实现于终端系统上,而不是在网络路由器上。网络路由器只作用于3—PDU的网络层字段,而不作用于传输层字段。
图1 传输层在两个应用程序之间提供了逻辑的而不是物理的通信
在发送方,传输层将应用程序发送的消息转换成4—PDU形式(即:传输层协议数据单元)。构造4-PDU的过程就是将应用程序消息分割成较小的块,井给每个块加上一个头部。然后,传输层将这些4-PDU传递给网络层。在网络层,每一个4—PDU又被封装到一个3—PDU今。在接收方,传输层接收从网络层传送过来的4—PDU,并将这些4-PDU的头部去掉,将消息重新装配,最后将它们传递给接收进程。
一个计算机网络可以为网络应用程序制定多个传输层协议。例如,因特网(Internet)有两个协议——TCP和UDP。每一个协议都为调用应用程序提供一套不同的服务。
所有的传输层协议都为应用程序提供多路复用多路分解服务。除了多路复用移路分解服务之外,传输层协议还可以给应用进程提供其他服务,包括可靠数据传输、带宽保证和传输延迟保证。
传输层和网络层之间的关系
在协议栈中,传输层位于网络层之上,传输层协议为不同主机上运行的进程提供逻辑通信,而网络层协议为不同主机提供逻辑通信。这个区别很微妙,但是却非常重要。让我们用一家人作为类比来说明一下这个区别。
设想一下有两所房子,一个位于东海岸而另一个位于西海岸,每所房子里都住着12个小孩。东海岸的房子里的小孩和西海岸房子里的小孩是堂兄妹。两所房子里的孩子喜欢互相通信——每个孩子每周都给每一个堂兄妹写一封信,每一封信都由老式的邮局分别用信封来寄。这样,每一家每周就都有144封信要送到另一家(这些孩子如果可以用电子邮件的话就可以省掉很多钱了!)在每一家里面.都由一个孩子——西海岸的房子里的Ann和东海岸房子里的BilI——负责邮件的收集和分发。每周Ann都从她的兄弟姐妹那里收集起来信件,并将这些信件送到每天都来的邮递服务员那里。当信件到达西海岸的房子,Ann又将这些信件分发给她的兄弟姐妹。BilI在东海岸有着同样的工作。
在这个例于中,邮递服务提供着两所房子之间的逻辑通信——邮递服务在两所房子之间传递邮件,而不是针对每个人的服务。另一方面,Ann和BilI提供堂兄妹之间的逻辑通信——Ann和BilI从他们的兄弟姐妹那里收集邮件并将邮件递送给他们。注意,从这些堂兄妹的角度看,Ann和BilI是邮件的服务人,尽管他们俩只是端到端寄送服务的一部分(终端系统部分)。这个例子是传输层和网络层之间的关系的一个形象比喻:
主机(也称为终端系统)=房子
进程=堂兄妹
应用程序消息=信封里的信
网络层协议=邮递服务(包括邮递员)
传输层协议=Ann和Bill
继续我们的这个例子,Ann和Bill各自在他们的家中做所有的工作:他们不负责各个邮递中心的邮件分类工作以及将邮件从一个中心送到另一个中心的工作。这正与传输层协议在终端系统中的作用一样。在一个终端系统中,传输层协议将应用进程的消息传送到网络边缘(也就是网络层),反之亦然:但是它并不涉及消息是如何在网络层之间传送的工作。事实上,正如图1中所说的,中间路由器对于传输层加在应用程序消息上的信息不能做任何识别和处理。
继续我们的例子,假设Ann和Bill都去度假了,另外一对堂兄妹——Susan和Harvey代替——他们来提供家庭内部的邮件收取和分发工作。不幸的是,Susan和Harvey所提供的收集和分发工作与Ann和Bill所提供的不完全相同。对于年龄更小的Susan和Harvey来说,他们收集和分发邮件的频率比较少,而且偶尔会发生丢失信件的事情(这些信件偶尔被家里的狗吃掉了)。这样,这一对堂兄妹Susan和Harvey提供了一套不同于Ann和Bill的服务(也就是说,服务模型不同)。打比方来说,正如一个计算机网络可以接受不同的传输层协议一样,每一个协议为应用程序提供不同的服务模型。
Ann和Bill所可能提供服务明显地受限于邮递服务所提供的服务。例如,如果邮递服务并不提供在两所房子之间传递邮件所需要的最大时限(如3天),那么Ann和Bill也就不能保证各个堂兄妹之间的邮件的最大延迟。同样,传输层协议所提供的服务也通常受限于位于其下方的网络层协议。如果网络层协议不能提供主机之间传送的4—PDU的延迟和带宽保证,那么传输层协议也不能提供进程之间传送的消息的延迟和带宽保证。
然而,即使当下面的网络层协议使得网络层并不能提供某些相应服务时,传输层协议仍然可以提供某些特定服务。例如,即使下面的网络层协议并不是可靠的,也就是说,即使网络层协议丢失、篡改或者复制了传送的数据包,传输层协议也可以提供可靠的数据传输服务。另一个例子是,即使网络层不能保证4—PDU的保密性,传输层协议也可以通过加密的方式来保证应用程序消息不被入侵吝读取。我们会在以后的文章里逐渐接触到这些问题。
因特网中传输层
回忆一下因特网,通常是TCP/IP网络,应用层可以得到两种不同的传输层协议。其中—·种协议是UDP(User Datagram Protocol),它为调用应用进程提供了一种不可靠的、无连接的服务。第二种协议是TCP(Tansmission Control Protocol),它为调用应用进程提供了一种可靠的、面向连接的服务。当设计一个网络应用程序时,应用程序外发者必须指定这两种传输协议中的一种。
在进行UDP和TCP的简单介绍之前,我们有必要先简介—下因特网的网络层。因特网的网络层协议有——个名字——ID,也就是iNTERNET Protocol。IP提供了主机之间的逻辑通信。IP服务模型是一个尽力传送服务。这就意味着IP尽它最大的努力在通信主机之间传送数据段,但是却不提供任何保障。特别是,它不能保证数据段传输的安全性,不能保证数据段的顺序传输,不能保证数据段传输的数据完整性。基于这些原因,IP被称为不可靠服务。每一个主机都要有一个IP地址。
在对IP服务模型进行了简要介绍之后,让我们来总结—下TCP和UDP的服务模型。UDP和TCP的基本职责就是将IP的两个终端系统之间的传送服务扩展为终端系统上运行的两个进程之间的传送服务。主机—主机的传送到进程—进程传送的扩展被称为应用程序的多路复用和多路分解。UDP和TCP还通过在头部中加入纠错字段来提供完整性检测。这两个最小的传输层服务——进程—进程数据传送和错误检测——是UDP所提供的惟一的两个服务!特别是,正如IP一样,UDP是一种不可靠的服务,它不能保证由一个进程送出的数据可以完整地到达目标进程。
另一方面,TCP为应用进程提供了几种额外的服务。首先,也是最重要的,它提供可靠的数据传输。通过使用数据流控制、序列编号、确认和计时器(我们会在以后的文章介绍这些技术),TCP保证了数据正确有序地从发送方进程传送到接收方进程。这样,TCP就将IP的终端系统之间的不可靠传送服务转换成了进程之间的可靠的数据传输服务。TCP还使用了拥塞控制机制。与其说拥塞控制是提供给调用进程的服务,不如说它是提供给整个因特网的服务,为了公共利益的服务。泛泛地说,TCP拥塞控制阻止了任何一个TCP连接在超大量数据传输时链路和交换机被淹没的问题。确切地说,TCP允许TCP连接通过一个拥挤的网络链路平等地分享该链接的带宽。这是通过调整发送方TCP可以传送到网络的流量米实现的。而UDP的通信流量是无法进行控制的。一个使用UDP传输协议的应用程序可以用其需要的任意速度发送数据。
如果您非常迫切的想了解IT领域最新产品与技术信息,那么订阅至顶网技术邮件将是您的最佳途径之一。