与无连接传输不同,基于连接的传输是可靠的,它也被称为流服务。连接是一个虚电路,所谓“虚拟的”电路是指:它表现得好像硬连线的连接,但实际上却不是。虚电路能够提供可靠的数据传输。其通过对接收数据进行自动地确认(对应用程序是透明的)、没有收到确认时重传数据、维持数据的顺序、避免数据的重复这些手段实现。
面向连接的数据传输服务可以直接与电话服务类比,当你拨号时,有时会碰到忙音,连接请求被拒绝;如果是回铃音并有人应答,那么说明建立了一个连接。已建立的这个虚电路一直到你挂机才会被明显地中断。你讲话时马上就会有回应,说明电话的另一端有人在听电话并理解了你的话语,这些过程都与传输连接类似。
|
图3-3 流服务维持一个虚电路,并对所有传输的数据进行确认 |
面向连接的服务不像无连接服务那么简单,创建和释放虚电路、数据确认、重传以及排序都要有开销。然而,可靠的数据传输对有些应用程序来说是很有价值的,因为这些应用不能承受任何数据的丢失,也不希望在应用程序中考虑可靠性的实施。通常,使用流服务也相对简单一些。
构成可靠数据传输的服务要素有:
被确认的传输。
错误检测。
确认超时后重传。
维持数据的顺序。
无重复的数据。
流量控制。
传输控制协议(TCP)在其面向连接的数据传输协议中提供了全部这些服务,能够保证数据的交付而无须依赖网络的可靠性。TCP通过一系列子服务(subservice)保证可靠传输:数据确认、数据排序、数据重传、重复数据的删除。TCP还提供流量控制以及带外数据(out-of-band data)传输。
保持数据分组边界不属于TCP的功能。TCP提供的是一个流,这意味着它按需向每个数据包中注入或多或少的数据。在这种方式下,如果发送方的应用程序在一次发送操作中传输了一定数量的字节,接收方不必在一次接收操作中全部处理这些传输的字节。它可以按需要缓存数据,然后执行多次接收操作,因为交付的数据可能分散在若干个数据包中。如果应用程序在设计上考虑不周,那么这将会带来一些问题,我们将在第13章中讲述这些常见问题。
【责任编辑: book TEL:(010)68476606】 |