数据交换方式有电路交换、报文交换、分组交换,本文主要学习分组交换。
分组交换(package switching)
分组:报文分拆出来的一系列相对较小的数据包
分组交换需要报文的拆分与重组,会产生额外开销。在发送端对报文进行拆分,在接收端对报文进行重组,一般有传输层上的协议完成,如TCP协议。
报文交换与分组交换均采用存储-转发交换方式。其中,报文交换以完整报文进行存储转发,而分组交换以较小的分组进行存储转发。
分组交换:传输延迟
例如,发送主机:
a、接收应用报文(消息)
b、拆分为较小长度为L bits的分组(packets)
c、在传输速率为R bps(即bits/s)的链路上传输分组
则 分组传输延迟(时延 delay)= L(bits)/R(bits/s)
比较报文交换与分组交换的传输延迟:
报文交换:
a、报文长度为M bits
b、链路带宽为R bps
c、每次传输报文需要 M/R 秒
分组交换:
a、报文被拆分为多个分组
b、分组长度为L bits
c、每个分组传输时延为 L/R 秒
给定数据,M=7.5 Mbits,L=1500 bits(则M=5000L,拆分为5000个分组),R=1.5 Mbps。传输链路如图所示,
注:本文所用图片均来源于哈尔滨工业大学的计算机网络课程。
其中,报文交换的报文交付过程如图所示,在0-5秒时报文到达第一个路由器,5-10秒时报文到达第二个路由器,10-15秒时报文到达目的主机。(忽略其他延迟,仅考虑传输延迟情况下)
可以看出,报文交付时间为15秒。并且考虑路由器至少需要多大缓存?很明显,在报文交换中,路由器缓存至少为报文大小,在此情境中是7.5 Mbits。那么,遇到更大的报文怎么办?路由器缓存需要做到多大才能满足任意报文?这显然是个头疼的问题。
那么,在分组交换下的传输延迟呢?
可以看到,当最后一个分组到达目的主机时,整个报文交付完成,交付时间为5.002秒。此时考虑路由器至少需要多大缓存?很明显,路由器只需要缓存一个分组的大小即可,即1500bits。
两相对比,分组交换的交付时间5.002秒比报文交换的交付时间15秒快了很多,所需路由器缓存也很小。
由以上例子可以得出分组交换报文交付时间的计算公式:
报文:M bits
链路带宽:R bps
分组大小:L bits
跳步数(经过一段链路即为一跳):h
路由器数:n
T=M/R+(h-1)L/R
=M/R+nL/R
分组交换VS电路交换
如图所示,电路交换有“独享资源”的特点,即使每个用户平均活动时间只有10%也会一直占用带宽,因此最多允许10个用户;而分组交换中,对于35个用户,大于10个用户同时活动的概率<0.0004.(概率论知识)因此,分组交换允许更多用户同时使用网络,即网络资源充分共享。
那么,分组交换绝对优于电路交换吗?
并不是。分组交换适用于突发数据传输网络,有利于资源充分共享,并且简单、无需呼叫建立。但可能产生拥塞:分组延迟和丢失。需要借助协议处理可靠数据传输和进行拥塞控制。