数据报与虚电路
数据报(Datagram)是网络层数据单元在介质上传输信息的一种逻辑分组格式,它是一种在网络中传播的、独立的、自身包含地址信息的消息,它能否到达目的地,到达的时间,到达时内容是否会变化不能准确知道的。它的通讯双方是不需要建立连接的,对于一些不需要很高质量的应用程序来说,数据报通讯是一个非常好的选择。在Java的java.net包中有两个类DatagramSocket和DatagramPacket,为应用程序中采用数据报通讯方式进行网络通讯。
虚电路(The Virtual circuit)是在分组交换散列网络上的两个或多个端点站点间的链路。它为两个端点间提供临时或专用面向连接的会话。它的固有特点是,有一条通过多路径网络的预定路径。提前定义好一条路径,可以改进性能,并且消除了帧和分组对头的需求,从而增加了吞吐率。从技术上看,可以通过分组交换网络的物理路径进行改变,以避免拥挤和失效线路,但是两个端系统要保持一条连接,并根据需要改变路径描述。
数据报与虚电路的区别:
1)在传输方式上,虚电路服务在源、目的主机通信之前,应先建立一条虚电路,然后才能进行通信,通信结束应将虚电路拆除。而数据报服务,网络层从运输层接收报文,将其装上报头(源、目的地址等信息)后,作为一个独立的信息单位传送,不需建立和释放连接,目标结点收到数据后也不需发送确认,因而是一种开销较小的通信方式。但发方不能确切地知道对方是否准备好接收,是否正在忙碌,因而数据报服务的可靠性不是很高。
(2)关于全网地址:虚电路服务仅在源主机发出呼叫分组中需要填上源和目的主机的全网地址,在数据传输阶段,都只需填上虚电路号。而数据报服务,由于每个数据报都单独传送,因此,在每个数据报中都必须具有源和目的主机的全网地址,以便网络结点根据所带地址向目的主机转发,这对频繁的人—机交互通信每次都附上源、目的主机的全网地址不仅累赘,也降低了信道利用率。
(3)关于路由选择:虚电路服务沿途各结点只在呼叫请求分组在网中传输时,进行路径选择,以后便不需要了。可是在数据报服务时,每个数据每经过一个网络结点都要进行一次路由选择。当有一个很长的报文需要传输时,必须先把它分成若干个具有定长的分组,若采用数据报服务,势必增加网络开销。
(4)关于分组顺序:对虚电路服务,由于从源主机发出的所有分组都是通过事先建立好的一条虚电路进行传输,所以能保证分组按发送顺序到达目的主机。但是,当把一份长报文分成若干个短的数据报时,由于它们被独立传送,可能各自通过不同的路径到达目的主机,因而数据报服务不能保证这些数据报按序列到达目的主机。
(5)可靠性与适应性:虚电路服务在通信之前双方已进行过连接,而且每发完一定数量的分组后,对方也都给予确认,故虚电路服务比数据报服务的可靠性高。但是,当传输途中的某个结点或链路发生故障时,数据报服务可以绕开这些故障地区,而另选其他路径,把数据传至目的地,而虚电路服务则必须重新建立虚电路才能进行通信。因此,数据报服务的适应性比虚电路服务强。
(6)关于平衡网络流量:数据报在传输过程中,中继结点可为数据报选择一条流量较小的路由,而避开流量较高的路由,因此数据报服务既平衡网络中的信息流量,又可使数据报得以更迅速地传输。而在虚电路服务中,一旦虚电路建立后,中继结点是不能根据流量情况来改变分组的传送路径的。
综上所述,虚电路服务适用于交互作用,不仅及时、传输较为可靠,而且网络开销小。数据报服务5-06 设有一通信子网。若使用虚电路,则每一分组必须有3字节的分组首部,而每个网络结点必须为虚电路保留8字节的存储空间来识别虚电路。但若使用数据报,则每个分组要有15字节的分组首部,而结点就不需要保留路由表的存储空间。设每段链路每传1兆字节需0.01元,购买结点存储器的费用为每字节0.01元,而存储器的寿命为2年工作时间(每周工作40小时)。