第八章 运输层和高层协议
8.1 运输层
8.2 实时运输协议
8.3 远程过程调用
8.4 抽象语法标记
8.5 应用层运输服务和服务质量( 1)
运输层的最终目的
运输层,网络层和用户之间的关系图 (运输层实体图 )
运输服务和服务质量( 2)
运输层提供两种类型的服务:面向连接和无连接的运输服务
运输层存在的意义:提供更高质量的信息传输能力
运输实体(运输服务提供者)
使用运输服务的用户(运输服务用户
-- TS用户)
运输服务和服务质量( 3)
服务原语,运输层通过运输服务原语向运输用户提供服务,不同的系统有不同的原语
抽象的运输服务原语(下页图)
运输服务和服务质量( 4)
阶段 服务 原语 参数连接建立建立连接
T-Connect.Req 被呼地址,主呼地址,选项,服务质量,TS用户数据
T-Connect.Ind 被呼地址,主呼地址,选项,服务质量,TS用户数据
T-Connect.Rsp 响应地址,选项,服务质量,TS用户数据
T-Connect.Cnf 响应地址,选项,服务质量,TS用户数据数据传输常规数据
T-Data.Req TS用户数据
T-Data.Ind TS用户数据加速数据
T-Expedited-
Data.Req
TS用户数据
T-Expedited-
Data.Ind
TS用户数据连接释放释放连接
T-Disconnect.Req TS用户数据
T-Disconnect.Ind 连接释放原因,TS用户数据运输服务和服务质量( 5)
运输服务质量 (QoS)
运输服务质量的衡量(数值化参数表)
连接建立延迟连接建立失败概率吞吐量残留差错率传输延迟保护性优先权回弹率运输服务和服务质量( 6)
连接建立延迟 是开始发出连接建立请求到连接建立证实(连接建立成功)之间的时间,通常,这个时间越短越好。
连接建立失败概率 是指在最大的延迟时间内,由于某种原因(如网络阻塞、
内存空间不够、内部故障等)从而连接建立失败的可能性。
吞吐量 是指在一定时间内在一条运输连接上传输的用户数据的字节数,一般吞吐量用每秒字节数 (bps)表示,在一条运输连接上,可以有两个方向的吞吐量。
传输延迟 是运输用户传输数据到这个数据被接收方收到为止的时间,同样,
也可以有两个方向的传输延迟。
残留差错率 是指运输连接上错误的数据传输量占全部传输的数据量的比例,
理论上说,这个比例应该为 0,因为,运输层的主要功能之一就是要提供可靠服务,但是,实际上这一点是做不到的。
保护性 是指提供安全数据传输的一种能力,安全数据传输包括防止非法数据的截取、修改等等。
优先权 是指某些运输连接比其它运输连接更重要,从而保证数据优先传输的能力,而且,一旦发生网络阻塞,具有高优先权的运输连接首先获得网络资源。
回弹率 是指由于某种原因(如内部原因或网络阻塞)而自发终止运输连接的可能性。
运输服务和服务质量( 7)
运输服务质量协商过程协议操作( 1)
运输协议是运输层的核心
运输协议数据单元 TPDU,两个运输实体间交换的信息
具体的 TPDU可能不同,不同运输协议的
TPDU也可能不同协议操作( 2)
TPDU 含义
CR 运输连接请求,要求与对等运输实体建立运输连接
CC 确认,对 CR TPDU的确认
DR 释放请求,要求释放与对等运输实体之间的运输连接
DC 确认,对 DR TPDU的确认
DATA 数据,一个运输实体向对等运输实体发送用户数据
AK 确认,对数据 TPDU的认可
REJECT 拒绝,对数据 TPDU拒绝接受寻址
运输服务访问点 (TSAP,transport service
access point)— 在 TCP协议中 IP地址和端口号两者结合相当于一个 TSAP
运输协议寻址方法连接建立
网络服务分类
A型网络服务具有可接受的残留差错率和可接受的被告知的差错率的网络连接,也就是完美的网络服务;
B型网络服务具有可接受的残留差错率和不可接受的被告知的差错率的网络连接,即完美的分组递交,
但在若有故障发生时,网络层通过相应的网络服务报告该故障的发生。
C型网络服务具有不可接受的残留差错率的网络连接,即网络连接不可靠,可能丢失(或有重复)分组。
连接建立 (2)
A型质量最高,分组的丢失、重复或复位等情况可以忽略不计,一般来说,提供 A型服务的公用广域网几乎没有;
B型网络服务质量其次,大多数 X.25公用网为 B
型,这时,丢失的分组可以忽略不计,但会有
N─ RESET告知故障的发生,这就需要运输协议来解决;
C型网络服务质量最差,它是完全不可靠的服务,那些单纯提供数据报服务的广域网、无线电分组交换网和 IP网络即属此类,因此,所需的运输协议也最复杂。
A型网络服务上的运输协议
A型网络服务可以分为三种情况:
(1),可靠、顺序、信息长度任意的网络服务;
(2),可靠、无序、信息长度任意的网络服务;
(3),可靠、无序、信息长度不能超过最大长度的网络服务。
1.可靠的顺序网络服务
在这种情况下,我们假设网络服务接受任意长的信息,并且百分之百的可靠,
以及按顺序传递数据到目的地,有三个问题要讨论:
复用;
流量控制;
连接建立和终止复用
对于运输协议和运输服务用户来讲,运输协议实现复用功能:多个用户使用同一个运输协议,它们通过
TSAP加以区分。
对于网络服务而言,运输实体也实现复用(向上复用和向下复用):多条运输连接复用一条网络连接(向上复用、复用/解复用);另一方面,一条运输连接可以使用多条网络连接(向下复用、分流与合流)。
向上复用 (复用与解复用)的使用往往是出于费用上的考虑,一般而言网络服务收费以网络连接为标准的,多条运输连接复用一条网络连接可以在满足吞吐量的情况下尽量减少费用。
向下复用 (分流与合流)的目的是为了提供对单一网络失效的恢复能力,以及提高吞吐量,一般来说,多条网络连接上的吞吐量大于一条网络连接上的吞吐量,当然,吞吐量也不是无限制的,若设两个结点之间有一条物理链路相连,那么,运输连接的吞吐量不会超过该链路的容量。
流量控制 (1)
层内流控,也称 对等流控,是指同一层内的实体之间的流量控制流量控制 (2)
层间流控 是指不同层实体之间的流控,其出发点是一层实体向另一层实体发出信息时必须得到该实体的同意,从而实现这两个层次之间的流量控制流量控制 (3)
对等流控的目的是为了限制数据(在运输层是
TPDU)的发送速度,因为:
接收方用户可能跟不上数据流;
接收方运输实体可能跟不上 TPDU流
比较好的办法是 信用量方法
本方案的基本组成部分有:发送窗口与接收窗口,
每个窗口又有上缘和下缘
一个例子,其中,TPDU编号为 0到 7(模 8),下图给出了一个方向上的数据传输流量控制 (4)
N= 0
N= 1
N= 2
N= 3
N= 4
N= 5
N= 6
N= 7
A K7
CREDIT
7
A 收到 AK 7 C R E DI T 7 6
0
1
2
34
5
7
A 继续发送 3 个
DT T P DU
A 收到 AK 2C R E DI T 5
0
0
0
0
0
0
0
0
1
1
1
1
1
1
1
1
2
2
2
2
2
2
23
3
2
3
3
3
3
3
4
4
4
4
4
4
4
4
5
5
5
5
5
5
5
5
6
6
6
6
6
6
6
6
7
7
7
7
7
7
7
7
A 继续发送
2 个 DT T P DU
A 发送 3 个
DT T P DU
A 可以发送
7 DT T P DU
B 可以接受
7 DT T P DU
B 确认 3 D T T P DU
并可再收 5 个 DT T P DU
即发送 AK 2 C R E DI T 5
B 确认 5 个 D T T P DU
并可再收 7 个 DT T P DU
即发送 AK 7 C R E DI T 7
连接建立和释放 (1)
即使是可靠网络服务,也需要连接建立和释放,连接建立的目的是:
使每一端知道另一端是否存在
进行选项协商(如:协议类、窗口大小、服务质量等)
为运输实体分配资源(如:缓冲区、连接表项等)
连接建立和释放 (2)
连接建立过程如图所示连接建立和释放 (3)
连接释放过程
2.可靠无序网络服务 (1)
在这种情况下,我们假设网络服务百分之百可靠,数据长度为任意,但可能有失序情况发生,即数据收到的次序和发送的次序可能不同
首先,TPDU序号不仅仅用来实现流控,
还要用来实现 TPDU的重新排序。
其次,控制 TPDU也需要序号,若没有这个序号,可能会发生差错。
2.可靠无序网络服务 (2)
无序网络服务流控例子
2.可靠无序网络服务 (3)
连接建立例子
3.可靠有限长网络服务
在这种情况下,网络服务不能接受任意长数据,
即 TPDU长度不能超过某一最大值。
这时,假如用户要求发送的数据块超过最大值,
那么必须把数据分割成较小的段,然后一段一段发送,接收方再把这些段拼接成块,然后再交给用户,这就需要有一个块结束标志 EOT,
运输实体收到带有 EOT的 DT TPDU后,把前面收到的没有 EOT的 DT TPDU顺序拼接在一起交给用户。
B型网络服务上的运输协议 (1)
在这种情况下,数据传输可靠(但可能不按顺序),但可能有网络故障,即产生 N_ RESET
或 N_ DISCONNECT指示,此时,TPDU可能丢失,这种丢失会向运输实体报告。
在任何情况下,运输实体必须能从数据丢失或网络连接断开中得到恢复,序号是一种有效的手段,正常情况下,TPDU不必确认,因为网络服务是可靠的,当然,流控时需要使用序号。
这种方法还能处理网络故障。
B型网络服务上的运输协议 (2)
首先,我们考虑网络连接复位(如 X.25的 RESET),
网络服务用 N_ RESET向运输实体报告发生了复位,可能会影响一条或多条运输连接,这时,可能会丢失
TPDU(包括两个方向上的 TPDU),运输实体可以采用下述措施:
发出控制 TPDU,指明已收到的 DT TPDU序号;
停止发送新的 TPDU,直到收到控制 TPDU,重发没有被收到的 TPDU。
B型网络服务的另一个更严重的情况是网络连接断开
(如 X.25的 RESTART,OSI的 N_ DISCONNECT指示),
在这种情况下,原来的网络连接发起者建立一条新的网络连接,并在这条新的网络连接上发出控制 TPDU,
然后,采取与发生 N_ RESET时相似的措施以获得重新同步(如重发丢失的 TPDU等)。
C型网络服务上的运输协议
这种情况下的网络服务是不可靠的,它不仅有数据丢失、失序,而且还有网络复位、连接断开等。六个主要问题:
重传策略
重复检测
流控
连接建立
连接释放
崩溃恢复
1,重传策略 (1)
有两种情况需要重传:
一是 TPDU信息被破坏,但能到达目的运输实体
另一是 TPDU没有到达目的地
为了发现这些情况,我们需要使用确认方案:接收运输实体必须确认每个成功的 TPDU,一个 AK TPDU可以确认多个 DT
TPDU
1,重传策略 (2)
计时器
当计时器溢出时若还没有收到确认,就要把这个 DT
TPDU重新发送
计时器的值的设置
一个方法是计时器值固定:需要对网络有十分深入的理解
另一种方法基于观察值:往返时间的平均值(或稍大一点)
--这个值并不可信
对等运输实体可能不马上对 DT TPDU确认,它可以一次确认多个 DT TPDU(或由于流控原因而不发 AK TPDU);
若一个 DT TPDU重传,那么,发送运输实体并不知道收到的 AK TPDU是最初发送的 DT TPDU的确认还是重传的 DT
TPDU的确认;
网络状况可能突然发生变化,如特别拥挤或负载很轻
1,重传策略 (3)
运输协议计时器计 时 器 说 明重传计时器 T1 重发一个未确认的 TPDU
重建连接计时器 在同一对用户之间从释放连接到建立另一条连接间的最小时间窗口计时器 AK TPDU间的最大时间重发 CR计时器 重发 CR TPDU的时间保持计时器 TR 收不到确认而终止连接的时间不活动计时器 I 收不到 TPDU而终止连接的时间
2,重复检测 (1)
有三种情况可能产生重复:
一是数据报服务可能产生重复;
二是 AK TPDU丢失,发送运输实体重发 DT TPDU;
三是由于网络原因(如拥挤等)而使 TPDU延迟变长,计时器超时,发送运输实体重发,引起 DT
TPDU重复
2,重复检测 (2)
在连接释放前收到重复 TPDU
接收运输实体必须假设重复 TPDU的确认已丢失(某些情况下还未来得及发出确认就收到重复 TPDU),必须对重复 TPDU作出确认,
因此,可能多个 AK TPDU确认同一个 DT
TPDU
序号空间必须足够大,以防止在 TPDU生存期内发生循环
2,重复检测 (3)
不正确的重复检测运输实体 A 运输实体 B
N=0
N=1
N=2
N=0
N=1
N=3
N=4
N=5
N=6
N=7
N=0
A K 2
A K 2
A K 3
A K 4
A K 5
A K 6
A K 7
A K 0?
2,重复检测 (4)
在连接释放后收到重复 TPDU
(方法一 )序号跨越连接,即下一条连接的序号从上一条连接的最后一个序号(加 1)开始,运输实体在建立连接时,必须把这个序号传送到对等运输实体,当然,这个过程是对称的,每一方都必须给出这一信息
(方法二 )使用连接标识符,每个 TPDU都有这个标识符,每建立一条连接就产生一个以前没有用过的连接标识符,当收到 TPDU时,
可以检查这个 TPDU是否为当前运输连接的
两种方案在一般情况下能很好地工作,但也有缺陷:
运输实体必须记忆这些历史信息,当系统崩溃时就无法知道序号或连接标识符。
2,重复检测 (5)
生存期的概念,每个 TPDU在通信子网中停留时间不能超过生存期,这一点可用下述技术之一:
受限制的子网设计,包括防止 TPDU进入回路和某些限制拥挤时间不超过最大时间的一些方法 ;
每个 TPDU设置一个站计数器,每次 TPDU转发时站计数器加 1,
当一个 TPDU的站计数器超过某一特定值时,就把它丢弃 ;
每个 TPDU加上时间信息,要求每个 TPDU带上自己的生存时间,
在通信子网中处理 TPDU时若发现超过最大长度的时间时,就把它丢弃,这种方法要求每个中继站的时钟同步,这本身又是一件十分复杂工作
一个相对较好的办法是上述第三方法和第一(或第二)
种方法的结合,一般情况下,用第一(或第二)种方法,当系统崩溃并重新启动后采用上述第三种方法
3,流量控制 (1)
前面我们描述的信用量流控方案在 C型网络下不能很好地工作,需要作一定的修改,假设( AK N,CREDIT
M)表示一个 AK TPDU确认了 N(及以前的) DT
TPDU,并且给出新的信用量值 M,允许发送运输实体发送 N+1到 N+M的 DT TPDU,这种机制是很有力的:
为了把信用量增加或减少到 X,B可以发出( AK N,CREDIT
X);
为了确认一个新的 DT TPDU,不改变原来的信用量,B可以发出( AK N+1,CREDIT M-1);
为了确认一个新的 DT TPDU,把信用量增加或减少到 X,B可以发出( AK N+1,CREDIT X);
为了确认 Y个新的 DT TPDU,把信用量增加或减少到 X,B可以发出( AK N+Y,CREDIT X)。
3,流量控制 (2)
问题所在,如果 AK TPDU丢失,会产生一定的问题。
若下面还有确认,即可得到重新同步,若没有确认,
发送运输实体计时器溢出,然后重发 DT TPDU,接收者收到后发出确认,但是,这可能会有死锁,
解决 1,需要引入一个窗口计时器,每发送一个 AK
TPDU即启动窗口计时器,当窗口计时器溢出后,运输实体发出一个 AK TPDU,它可能和前一个 AK TPDU完全一样,这就可以打破死锁,并且同时也保证这个运输实体是活动的。
解决 2,另一个办法是对 AK TPDU作出确认,也可以解决问题,当然,由于不可靠的网络服务,对确认的确认也许还需要计时器。
4,连接建立 (1)
考虑网络的不可靠性
在 C型网络下,建立连接过程中 CR TPDU或 CC
TPDU均有可能丢失或被延迟,从而,引起超时重发 CR TPDU,这就可能产生 CR TPDU或 CC TPDU
的重复,发送运输实体可能收到多个 CC TPDU,而接收运输实体则可能收到多个 CR TPDU,所有这些都说明发送方(或接收方)需要忽略重复的 CC(或
CR) TPDU
另一种情况是 CR TPDU或 CC TPDU可能由于延迟而在连接释放后到达接收方或发送方,从而产生差错,如下图所示:
4,连接建立 (2)
4,连接建立 (3)
问题所在,假设 A有一个 CR TPDU X(序号从 X开始)
由于延迟,在连接释放后到达 B,B即用 CC TPDU Y给出确认,同时 A以正确的 CR TPDU Z开始建立连接,
由于 B认为已建立连接,把这个 CR TPDU看成非法或作为上一个 CR TPDU X 的重复而丢弃,A收到 CC
TPDU Y后也认为连接建立完毕,开始发送 DT TPDU
Z(序号为 Z),B收到这个 DT TPDU Z后,经检查发现序号不是 X而把它丢弃
问题的解决,三次握手方法,这个方法是 TOMLINSON
在 1975年提出的,当 A为连接发起者时,建立过程如下图所示
4,连接建立 (4)
在正常情况下,CR TPDU包括发送序号,CC TPDU
包括发送序号和对 CR中序号的确认,发起方则以第一个 DT TPDU作为对 CC TPDU的确认
4,连接建立 (5)
CR TPDU被延迟的情况,这个 CR TPDU在 A不知道的情况下到达 B,B向 A发出 CC TPDU作为应答,
A在检查序号时发现这是由于延迟引起的,当然拒绝连接建立,B就会知道这次连接建立不成功
4,连接建立 (6)
CC TPDU被延迟的情况,由于使用序号,这个 CC TPDU不会影响 A
4,连接建立 (7)
最坏的情况是 CR 和对 CC TPDU确认都被延迟,如图 8.13(d)所示,同样,由于使用了序号,A和 B都不会对它们作出接受的确认
5,连接释放 (1)
和连接建立相似,连接释放时,运输实体同样要处理重复的和丢失的 DR/ DC
TPDU,所以,也需要序号:
DR TPDU包含最后发送的 DT TPDU序号 +1;
DC TPDU包含 DR TPDU中的序号。
5,连接释放 (2)
使用三次握手方法,还需要一个 ACK TPDU
5,连接释放 (3)
6,崩溃恢复
问题的产生,当一个系统发生崩溃而又重新启动后由于已丢失一切信息,使得已建立的连接形成半开通状态,因为连接的另一方并不知道这种情况,而且,崩溃的系统无法告诉另一方。
解决方法,引入一个计时器,在一定的时间内若没有收到 TPDU,就发送一个,假,的 TPDU,
等待确认 。连续若干次收不到确认即自动释放连接,并向用户发出 T_ DISCONNECT指示。
习题
8.2
8.3
8.4