运输层服务原语.docx
《运输层服务原语.docx》由会员分享,可在线阅读,更多相关《运输层服务原语.docx(33页珍藏版)》请在冰豆网上搜索。
运输层服务原语
1.在计算机网络体系结构中,运输层处于什么地位?
2.运输层的功能是什么?
3.什么是端到端通信?
4.运输层协议包含哪些要素?
[学习目标]
本章主要要求掌握运输层的功能和模型;掌握运输效劳的概念;理解运输协议的分类;了解运输协议的设计中要解决的主要问题和解决问题的一般方法;正确理解运输协议的主要元素。
[学习指南]
本章学习的关键在于首先理解运输层在整个网络体系结构中所处的地位。
运输层处于网络体系结构的核心位置,它利用通信子网的功能为上层应用提供一定QoS的传输效劳。
把握住这一点,就不难理解运输协议分类、连接管理、故障恢复等概念了。
[难重点]
1.运输效劳模型
2.运输协议类
3.运输层编址
4.连接管理
5.多路复用
6.故障恢复
・第一节运输层功能与模型
运输层的地位:
利用网络层的效劳和运输实体的功能,向会话层提供效劳。
运输层是整个协议层次结构的核心。
其任务是为从源端机到目的机提供可靠的、价格合理的数据传输,而与当前网络或使用的网络无关。
如果没有传输层,整个分层协议的概念也就没有什么意义了。
本章涉及到以下概念:
・运输实体(TE,TransportEntity)
・网络效劳访问点(NSAP,NetworkServiceAccessPoint)
・运输效劳访问点(TSAP,TransportServiceAccessPoint)
・运输实体间的运输连接(TC,TransportConnection)
・运输实体间的运输层协议(TP,TransportProtocol)
・运输效劳提供者(TS-Provider)
・运输效劳用户(TS-User)
・会话协议数据单元(SPDU,SessionProtocolDataUnit)
・运输效劳数据单元(TSDU,TransportServiceDataUnit)
・运输协议数据单元(TPDU,TransportProtocolDataUnit)
・网络效劳数据单元(TSDU,TransportServiceDataUnit)
运输层的基本功能(可以和货物运输的情况作类比)
运输层依据会话层的效劳质量(QoS,QualityofService)要求,选择适当的网络层效劳和运输层协议,以提供可靠的、价格合理的、与网络层无关的数据传送。
QoS相当于在货物运输的例子中所考虑的时间、可靠性、费用等。
选择网络效劳相当于在货物运输的例子中选择运输方式,比方:
空运、铁路等。
运输层协议相当于邮寄信件时是使用平信,还是挂号信,等等。
运输层处于OSI模型的上3层与下3层之间,提供进程间端到端的、透明的、可靠的数据传送。
网络层是提供系统间的数据传送,而运输层是提供进程间的数据传送。
OSI模型中上3层的功能为:
信息传送,了解数据含义,进程间通信;下3层的功能为:
数据传送,不关心数据含义,系统间通信。
运输层的功能为:
数据传送,不关心数据含义,进程间通信;可视为低层的一局部。
弥补高层(上3层)要求与网络层(基于下3层)数据传送效劳质量间的差异(过失率、过失恢复能力、吞吐率、延时、费用等),对高层屏蔽网络层的效劳的差异,提供稳定和一致的界面。
・第二节运输协议类
运输层协议是依据网络层提供的效劳质量来分类的。
经过多年的研究与讨论,ISO于1984年通过了OSI运输协议的标准。
这就是ISO8072和ISO8073。
CCITT参与了这一标准的制订,并通过了相应的X.214和X.224建议书。
欧洲计算机厂家协会ECMA,美国国家标准学会ANSI以及美国国家标准局NBS等也都积极参与了运输层协议标准的制订。
NBS已于1988年底改名为国家标准与技术研究院NIST。
一、网络效劳
网络效劳质量参数,网络层所提供的效劳质量是由以下两个参数来评价的:
・残留过失率
・可报告过失率
・残留过失率(ResidualErrorRate):
反映网络连接质量,网络实体不可检测;或漏检过失率。
残留过失是网络层未改正的过失且不通知运输层。
(1)所有传送的网络效劳数据单元(NSDU)的分类(4类):
Nk
成功传送(SuccessfullyTransferred)的NSDU:
Ns
错误(Incorrect)的NSDU:
Ne
丧失的(Lost)NSDU:
Nl
重复(Extra)的NSDU:
Nx
(2)定义:
在测量时间内,在网络连接上传送的所有错误的、丧失的和重复的NSDU与所传送的全部NSDU之比。
(3)公式:
;
・可报告过失率:
指在可检测的过失中不可恢复的过失所占的比例。
(1)残留过失(ResidualError):
网络实体不可检测的过失;反映过失检测能力;
(2)可报告过失(SignalledError):
网络实体可检测,但不可恢复的过失;反映过失恢复能力。
①检测到有不可恢复过失的NSDU时,网络实体并不递交运输实体,而是报告运输实体对它进行恢复;通知运输层的网络连接释放(release)或网络连接恢复(reset)。
②可报告过失率低,表示网络实体的过失恢复能力强。
⑴A类网络效劳:
可接受的残留过失率、可接受的可报告过失率;A型网络效劳是一个完善的、理想的、可靠的网络效劳。
分组在网络中传送时不会丧失也不会失序(失序指分组到达的顺序与发送的顺序不一致),这样,运输层就不需要故障恢复的效劳和重新排序的效劳等等,因而运输层就非常简单。
⑵B类网络效劳:
可接受的残留过失率、不可接受的可报告过失率;需要运输实体进行过失恢复。
⑶C类网络效劳:
不可接受的残留过失率、不可接受的可报告过失率;C型网络效劳的质量最差。
对于这类网络,运输协议应能检测出网络的过失,同时要有过失恢复能力。
对失序、重复以及错误投递的数据分组,也应能检测出并进行改正。
某些局域网和一些具有移动结点的城域网以及具有衰落信道的分组无线电网都局于C型网络。
二、运输协议类
为了能够在各种不同网络上进行不同类型的数据的传送,ISO定义了5类(class)运输协议,即第0类至第4类的运输协议。
这5类运输协议都是面向连接的。
也就是说,用户要进行通信,必须先建立运输连接。
当然,这必然要用到网络层提供的效劳,或者说,要建立网络连接。
同理,在建立网络连接时,又需要建立各有关链路的连接。
当数据传送结束后,则必须释放运输连接。
针对网络效劳质量的差异,运输层定义了5个运输协议类,提供不同的功能。
网络层效劳质量降低时,对运输协议的要求就提高,以向运输层用户提供一种比较稳定的效劳界面。
表5.1
运输协议类
主要功能
使用的网络效劳
TP0
简单类
(SimpleClass)
运输连接管理;
A
TP1
基本过失恢复类
(BasicErrorRecoveryClass)
TP0+过失恢复;
B
TP2
复用类
(MultiplexingClass)
TP0+复用/解复用;
流量控制;
A
TP3
过失恢复与复用类
(ErrorRecovery&MultiplexingClass)
TP1+TP2;B
TP4
过失检测与恢复类
(ErrorDetecting&RecoveryClass)
TP3+有过失检测;
有分流/合流;C
第0类运输协议是最简单的,它只具有一些最起码的功能。
第0类运输协议和CCITT的T.70建议书相兼容。
T.70是为智能用户电报(teletex)终端提供运输效劳的建议书。
第0类运输协议的功能就是建立一个简单的端到端的运输连接,而在数据传送阶段具有将长数据报文分段传送的功能(当有此需要时)。
它没有过失恢复功能,也不将多条运输连接复用到一条网络连接上。
第0类运输协议是面向A型网络效劳的。
第1类运输协议较简单,但增加了基本过失恢复功能。
利用网络层的连接撤除或复位进行过失恢复。
这里的基本过失是指出现网络连接断开或网络连接失败,或者收到了一个未被认可的运输连接的数据单元。
当网络连接断开时,运输层就试图建立另一条网络连接。
第1类运输协议面向B型网络效劳。
第3类运输协议面向B型网络效劳,它包含了第1类相第2类运输协议的功能,既有过失恢复功能又有复用功能。
第4类运输协议是最复杂的,它可以在网络的质量较差时保证高可靠性的数据传送。
它面向C型网络效劳。
第4类运输协议具有过失检测、过失恢复以及复用等功能。
一、连接与传输
为了使运输协议可以向运输效劳用户提供适当的效劳,在运输连接建立时应当就假设干效劳质量参数进行协商。
协商好的效劳质量参数就从运输效劳用户传给运输层的运输协议实体,以后再依次传给下面的网络层。
虽然运输协议的主要目的是给用户提供一条可靠的端到端的连接以便传输数据,但要做到这一点还应当有适当的管理效劳。
这样,运输层提供的效劳便可归纳为两大类:
(1)运输连接管理;即负责建立和在通信完毕时释放运输连接。
(2)数据传输。
二、运输效劳
运输效劳是由运输协议实体使用运输协议和网络效劳向会话实体提供的效劳。
运输效劳模型如以以下图所示。
图5.3运输效劳队列模型
TSAP,TC(运输连接),TCEP(运输连接端点)间的关系如左图所示,其中:
TSAP:
通过TSAP提供运输效劳,可有多个TSAP。
TC:
TSAP间可建立一个或多个运输连接(TC)。
TCEP:
TC的两端称为TCEP(TransportConnectionEndPoint)。
图5.4TSAP、TCEP和TC三者之间的关系
1)提供运输QoS选择:
吞吐量、延时、残留过失率等。
在满足用户要求的前提下,优化资源使用,以到达最优的性能价格比。
2)运输QoS与网络QoS独立:
对运输用户提供相对稳定的效劳界面。
运输层可弥补运输层用户QoS要求与网络层提供的QoS间的差异,使运输效劳用户可不关心底层的通信网络。
3)提供端到端数据传送:
4)提供透明的数据传送:
对运输用户的数据内容、格式和编码没有限制。
5)良好的寻址系统:
运输地址对应唯一的TSAP,并能映射到相应的网络层地址机构。
运输效劳原语:
三个阶段:
连接建立、数据传送、连接释放
4种效劳:
TC建立、正常数据传送、加速数据传送、TC释放
12种原语:
TC建立(4种)、正常数据传送(4种)、加速数据传送(2种)、TC释放(2种)
表5.2
阶段效劳原语参数
TC
建
立TC建立
T-CONNECT.request
T-CONNECT.indication
Calledaddress被叫地址
Callingaddress主叫地址
Expediteddataoption加速数据选择
QualityofService效劳质量
TS-Userdata用户数据
T-CONNECT.response
T-CONNECT.confirm
Respondingaddress响应地址
Expediteddataoption加速数据选择
QualityofService效劳质量
TS-Userdata用户数据
数据传送
正常数据传送
T-DATA.request
T-DATA.indication
TS-Userdata用户数据
加速数据传送
T-EXPEDITED-DATA.request
T-EXPEDITED-DATA.indication
TS-Userdata用户数据
TC
释放TC释放
T-DISCONNECT.request
TS-Userdata用户数据
T-DISCONNECT.indication
Disconnectreason释放原因
TS-Userdata用户数据
无连接数据传送
普通数据传送
T-UNITDATA.request
T-UNITDATA.indication
Calledaddress被叫地址
Callingaddress主叫地址
QualityofService效劳质量
TS-Userdata用户数据
・连接建立阶段:
成功建立连接、被叫用户拒绝建立连接、TS提供者拒绝建立连接;
对于通信子网的用户,也就是对用户进程来说,我们希望得到的是端到端的可靠通信效劳。
所谓端到端即从进程到进程。
有时还可能希望得到其他的效劳,例如多对进程之间的通信复用到一个网络连接上。
在互连网的情况下,各子网所能提供的效劳往往是不一样的。
为了能使通信子网的用户得到一个统一的通信效劳,就有必要设置一个运输层。
运输层弥补了各个通信子网提供的效劳的差异和缺乏,而在各通信子网提供的效劳的基础上,利用本身的运输协议,增加了效劳功能,使得对两端的网络用户来说,各通信子网都变成透明的,而对各子网的用户,面向通信的运输接口就成为通用的。
换言之,运输层向高层用户屏蔽了下面通信子网的细节,使高层用户看不见实现通信功能的物理链路是什么,看不见数据链路采用的是什么规程,也看不见下面到底有几个子网以及这些子网是怎样互连起来的。
运输层使高层用户看见的就是好象在两个运输层实体之间有一条端到端的可靠的通信通路。
・第四节运输协议
一、运输协议的元素
传输效劳是通过建立连接的两个传输实体之间所用的传输协议来实现的。
在某些方面,传输协议类似数据链路层协议,二者都必须解决过失控制、分组顺序、流量控制及其它问题,但二者之间也存在着显著的差异。
这些差异主要是因为两个协议所运行的环境不同所造成的,如图5.6所示。
在数据链路层,两个路由器通过物理通道直接通信;而在运输层,这个物理通道由整个子网所取代。
这一差异对协议产生了很多重要的影响。
首先,在数据链路层,不必为一个路由器指明它要与哪个路由器通话--每条输出线对应唯一的一个路由器。
在运输层里,需要显式地给出目的端地址。
其次,在图5.6(a)中的线路上建立连接的过程很简单:
另一端总是存在的(只有在它已崩溃的情况下才不存在),每一方都没有太多事情要做。
对运输层而言,初始连接的建立要复杂得多,这点我们以后会看到。
数据链路层和运输层之间另一个主要的区别是子网的存储能力。
当路由器发送了一帧时,该帧可能会到达目的地,也可能会丧失,但它不会徘徊一会儿,躲藏在网络的某个角落,而在某个不适宜的时刻又突然冒出来。
如果子网内部采用数据报和适应性路由选择策略,那么就极可能将一个分组存储几秒钟,然后再传送。
子网能将分组存储起来的能力有时可能会产生灾难性后果。
因此需要使用特殊的协议。
数据链路层和运输层之间的最后一个区别是数量上的差异而非类型上的差异。
在两层中都需要有数据缓冲和流量控制,但在运输层中出现的大量的、动态变化的连接要求可能需要使用与在数据链路层中不同的处理方法。
在数据链路层中,有些协议为每个连接均分配了固定数目的缓冲区。
在运输层中,由于需要管理很大数目的连接,因此,为每个连接分配很多缓冲区的策略不具有吸引力。
在以下的几小节中,将考察所有这样和那样的问题。
二、编址
当一个应用程序希望与一个远程应用程序建立连接时,它必须指定是与哪个应用程序相连(无连接的传输存在同样的问题:
每个报文应发送给谁)。
一般采用的方法是定义进程可以侦听连接请求的传输地址。
在因特网中,这些端点是(IP地址,本地端口)对。
在ATM(异步传输模式)中,则为AAL-SAP,我们使用中性术语传输效劳访问点TSAP(TransportServiceAccessPoint)来描述。
网络层中类似的端点(即网络层地址)则称为NSAP。
IP地址就是NSAP的例子。
图5.7说明了一个面向连接的子网(如ATM)中NSAP,TSAP,网络连接和传输连接之间的关系。
注意,传输实体通常支持多个NSAP。
在有些网络中,也可能存在多个NSAP,但对其他网络,每台机器只有一个NSAP(如一个IP地址)。
在面向连接的网络层上建立一个传输连接,可能采用的连接方案如下:
1.主机2上的定时器效劳进程将自己连到122号TSAP上,等待即将到来的请求。
一个进程如何将自己与TSAP相连是属于网络模型以外的问题,它完全依赖于本地的操作系统。
例如,可以用LISTEN调用。
2.主机1上的-个应用进程想找出当天的时间,于是发出一个CONNECT请求,将6号TSAP设定为源地址,将122号TSAP设定为目的地址。
3.主机1上的传输实体在其机器上选择一个网络地址(如果它不止一个)并在它们之间建立一个网络连接。
对于无连接子网,无须建立该网络层连接.使用该网络连接,主机1的传输实体便能与主机2的传输实体通话了。
4.主机1上的传输实体向主机2上对等端说的第一句话是:
"早上好,我想在我的6号TSAP和你的122号TSAP之间建立-个传输连接。
你认为如何?
"
5.主机2上的传输实体便询问122号TSAP的定时效劳器是否愿意接受一个新的连接。
如果它同意,传输连接便建立成功。
注意,传输连接是从TSAP到TSAP的,而网络连接只是其中的从NSAP到NSAP的局部。
主机1上的用户进程如何知道定时效劳器是连接到122号TSAP上的呢?
如果我们已经解决了这一问题,以上描绘的图景就很美了。
一种可能性是定时效劳器常年与122号TSAP相连,并且所有网络用户都逐渐了解到这一点。
在这种模型中,各种效劳都有不变的、可以打印出来的TSAP地址,并且能通告给新参加到网络中的用户。
图5.7TSAP,NSAP和连接
不变的TSAP地址可能适用于少数从不改变的关键效劳。
一般地,用户进程常常想与其他的用户进程通话,这些用户进程只是短时间存在并且预先不知道TSAP地址。
而且,如果有很多潜在的效劳器进程,而其中的大多数很少使用,那么,让每个进程整天处于活动状态并整天侦听不变的TSAP地址是一种浪费。
简而言之,需要一种更好的方案。
被UNIX主机用于因特网上的一种该方案的简化形式如图5.8所示,称为初始连接协议(initialconnectionprotocol)。
该方案不再让每个可能存在的效劳器去侦听一个众所周知的TSAP地址,而是让每台希望向远端用户提供效劳的机器运行一个特殊的进程效劳器(processserver),它充当载荷较轻的效劳器的代理。
它同时侦听一系列端口,等待TCP连接请求。
需要某种效劳的用户通过执行CONNECT请求开始,然后设定他们所需效劳的TSAP地址(TCP端口)。
如果没有效劳器在等待它的到来,它将会连接到进程效劳器上,如图5.8(a)所示。
当进程效劳器收到传入的请求后,便装入用户请求的效劳器,并将已经建立的与用户的连接转交给它。
于是新的效劳器便开始执行用户请求的任务,而进程效劳器则又回去侦听新的用户连接请求,如图5.8(b)所示。
尽管初始连接协议对于那些需要随时创立的效劳器来说是十分有效的,但确实存在着很多效劳不依赖于进程效劳器的情况。
例如,文件效劳器需要在特定的硬件(带有硬盘的机器)上远行,而不能当有用户想与其通话时才仓促创立。
在这种情况下经常采用另一种方案。
在这种模型中,存在一个称为名字效劳器(nameserver),有时称作名录效劳器(dictionaryserver)的特殊进程。
为了找到与一个给定效劳名称(如定时效劳器("time-of-day"))相对应的TSAP地址,用户要与该名字效劳器(它一直在侦听一个众所周知的TSAP)建立一个连接。
接着,用户向名字效劳器发送一个报文,指明效劳的名称,而名字效劳器则将相应的TSAP地址返回给用户。
接下来,用户释放与名字效劳器之间的连接,而与希望得到的效劳之间建立-个新的连接。
在这种模型中,当创立一个新的效劳时,必须向名字效劳器注册,给出它的效劳名称(一般是ASCII码字符串)及其TSAP地址。
名字效劳器将这些信息记录在其内部数据库中,以便以后能够答复收到的查询。
名字效劳器的功能类似于系统中的查号辅助操作员--它提供从名字到号码的映射。
正如在系统中一样,关键是由名字效劳器(或初始连接协议中的进程效劳器)所使用的众所周知的TSAP地址确实应该是用户所熟悉的。
如果你根本就不知道查号台的号码,就谈不上让查号台话务员来查询任何信息。
如果你认为你所拨的信息查询号码是清楚的,那么只要有时机你在国外也可以试一下。
有别于层次型地址空间的一种选择是平面型地址空间(flataddressspace)。
如果TSAP地址为非层次型,则需要二级映射来定位适宜的机器。
即必须有一个名字效劳器,其输入为传输地址,输出为网络地址。
另外,在某些情况下(例如,在局域网中),有可能以播送方式发出一个查询,请目的机器发送一个分组来标识自己。
现在我们假定用户已经成功地找到欲建立连接的TSAP地址。
另一个有趣的问题是:
本地传输实体如何知道那个TSAP被放置在哪台机器上?
进一步说,传输实体怎么知道哪个网络层地址用来与管理TSAP请求的远程传输实体建立网络连接呢?
答案依赖于TSAP地址的结构。
一种可能的结构是TSAP地址为层次型地址(hierarchialaddresses)。
层次型地址是由-系列字段组成,这些字段将地址空间划分为不相交的分区。
例如,