配色: 字号:
问题1-1~3
2013-01-27 | 阅:  转:  |  分享 
  
(问题1-1:“主机”和“计算机”一样不一样?

答:“主机”(host)就是“计算机”(computer),因此“主机”和“计算机”应当是一样意思。

不过在因特网中,“主机”是指任何连接在因特网上的(也就是连接在因特网中某一个物理网络上的)、可以运行应用程序的计算机系统。主机可以小到PC机,也可以大到巨型机。主机的CPU可以很慢也可以很快,其存储器可以很小也可以很大。但TCP/IP协议族可以使因特网上的任何一对主机都能进行通信,而不管它们的硬件有多大区别。



(问题1-2:能否说:“电路交换和面向连接是等同的,而分组交换和无连接是等同的”?

答:不行。这在概念上是很不一样的。这点可举例说明如下。

电路交换就是在A和B要通信的开始,必须先建立一条从A到B的连接(中间可能经过很多的交换结点)。当A到B的连接建立后,通信就沿着这条路径进行。A和B在通信期间始终占用这条信道(全程占用),即使在通信的信号暂时不在通信路径上流动时(例如打电话时双方暂时停止说话),也是同样地占用信道。通信完毕时就释放所占用的信道,即断开连接,将通信资源还给网络,以便让其他用户可以使用。因此电路交换是使用面向连接的服务。

但分组交换也可以使用面向连接服务。例如X.25网络、帧中继网络或ATM网络都是属于分组交换网。然而这种面向连接的分组交换网在传送用户数据之前必须先建立连接。数据传送完毕后还必须释放连接。

因此使用面向连接服务的可以是电路交换,也可以是分组交换。

使用分组交换时,分组在哪条链路上传送就占用了该链路的信道资源,但分组尚未到达的链路则暂时还不占用这部分网络资源(这时,这些资源可以让其他用户使用)。因此分组交换不是全程占用资源而是在一段时间占用一段资源。可见分组交换方式是很灵活的。

现在的因特网使用IP协议,它使用无连接的IP数据报来传送数据,即不需要先建立连接就可以立即发送数据。当数据发送完毕后也不存在释放连接的问题。因此使用无连接的数据报进行通信既简单又灵活。

面向连接和无连接是强调通信必须经过什么样的阶段。面向连接必须经过三个阶段:“建立连接→传送数据→释放连接”,而无连接则只有一个阶段:“传送数据”。

电路交换和分组交换则是强调在通信时用户对网络资源的占用方式。电路交换是在连接建立后到连接释放前全程占用信道资源,而分组交换则是在数据传送是断续占用信道资源(分组在哪一条链路上传送就占用该链路的信道资源)。

面向连接和无连接往往可以在不同的层次上来讨论。例如,在数据链路层,HDLC和PPP协议是面向连接的,而以太网使用的CSMA/CD则是无连接的(见教材4.2.1节)。在网络层,X.25协议是面向连接的,而IP协议则是无连接的。在运输层,TCP是面向连接的,而UDP则是无连接的。但是我们却不能说:“TCP是电路交换”,而应当说:“TCP可以向应用层提供面向连接的服务”。可参考教材中5.1.2节更进一步的讨论。



(问题1-3:因特网使用的IP协议是无连接的,因此其传输是不可靠的。这样容易使人们感到因特网很不可靠。那么为什么当初不把因特网的传输设计成为可靠的?

答:这个问题很重要,需要多一些篇幅来讨论。

先打一个比方。邮局寄送的平信很像无连接的IP数据报。每封平信可能走不同的传送路径,同时平信也不保证不丢失。当我们发现收信人没有收到寄出的平信时,去找邮局索赔是没有用的。邮局会说:“平信不保证不丢失。怕丢失就请你寄挂号信”。但是大家并不会将所有的信件都用挂号方式邮寄,这是因为邮局从来不会随意地将平信丢弃,而丢失平信的概率并不大,况且寄挂号信要多花3元钱,还要去邮局排队,太麻烦。总之,尽管寄平信有可能会丢失,但绝大多数的信件还是平信,因为寄平信方便、便宜。

我们知道,传统的电信网的最主要的用途是进行电话通信。普通的电话机很简单,没有什么智能。因此电信公司就不得不把电信网设计得非常好,这种电信网可以保证用户通话时的通信质量。这点对使用非常简单的电话机的用户则是非常方便的。但电信公司为了建设能够确保传输质量的电信网则付出了巨大的代价(使用昂贵的程控交换机和网管系统)。

数据的传送显然必须是非常可靠的。当初美国国防部在设计ARPANET时有一个很重要的讨论内容就是:“谁应当负责数据传输的可靠性?”这时出现了两种对立的意见。一种意见是主张应当像电信网那样,由通信网络负责数据传输的可靠性(因为电信网的发展历史及其技术水平已经证明了人们可以将网络设计得相当可靠)。但另一种意见则坚决主张由用户的主机负责数据传输的可靠性。这里最重要的理由是:这样可以使计算机网络便宜、灵活,同时还可以满足军事上的各种特殊的需求。下面用一个简单例子来说明这一问题。

设主机A通过因特网向主机B传送文件(如下图所示)。怎样才能实现文件数据的可靠传输呢?



如按照电信网的思路,就是设法(这需要花费相当多的钱)将不可靠的因特网做成为可靠的因特网。但设计计算机网络的人采用另外一种思路,即设法实现端到端的可靠传输。

提出这种思路的人认为,计算机网络和电信网的一个重大区别就是终端设备的性能差别很大。电信网的终端是非常简单的、没有什么智能的电话机。因此电信网的不可靠必然会严重地影响人们利用电话的通信。但计算机网络的终端是有很多智能的主机。这样就使得计算机网络和电信网有两个重要区别。第一,即使传送数据的因特网有一些缺陷(如造成比特差错或分组丢失),但具有很多智能的终端主机仍然有办法实现可靠的数据传输(例如,能够及时发现差错并通知发送方重传刚才出错的数据)。第二,即使网络可以实现100%地无差错传输,端到端的数据传输仍然有可能出现差错。为了说明这点,我们可以用一个简单例子来说明这个问题。这就是主机A向主机B传送一个文件的情况。

文件是通过一个文件系统存储在主机A的硬盘中。主机B也有一个文件系统,用来接收和存储从A发送过来的文件。应用层使用的应用程序现在就是文件传送程序,这个程序一部分在主机A运行,另一部分在主机B运行。现在讨论文件传送的大致步骤。

主机A的文件传送程序调用文件系统将文件从硬盘中读出。然后文件系统将文件传递给文件传送程序。

主机A请求数据通信系统将文件传送到主机B。这里包括使用一些通信协议和将数据文件划分为适当大小的分组。

通信网络将这些数据分组逐个传送给主机B。

在主机B,数据通信协议将收到的数据传递给文件传送应用程序在主机B运行的那一部分。

在主机B,文件传送程序请求主机B的文件系统将收到的数据写到主机B的硬盘中。

在以上的几个步骤中,都存在使数据受到损伤的一些因素。例如:

虽然文件原来是正确写在主机A的硬盘上,但在读出后就可能出现差错(如在磁盘存储系统中的硬件出现了故障)。

文件系统、文件传送程序或数据通信系统的软件在对文件中的数据进行缓存或复制的过程中都有可能出现故障。

主机A或B的硬件处理机或存储器在主机A或B进行数据缓存或复制的过程中也有可能出现故障。

通信系统在传输数据分组时有可能产生检测不出来的比特差错或甚至丢失某些分组。

主机A或B都有可能在进行数据处理的过程中突然崩溃。

由此可看出,即使对于这样一个简单的文件传送任务,仅仅使通信网络非常可靠并不能保证文件从主机A硬盘到主机B硬盘的传送是可靠的。也就是说,花费很多的钱将通信网络做成为非常可靠的,对传送计算机数据来说是得不偿失的。既然现在的终端设备有智能,就应当把网络设计得简单些,而让具有智能的终端来完成“使传输变得可靠”的任务。

于是,计算机网络的设计者采用了一种策略,这就是“端到端的可靠传输”。更具体些,就是在运输层使用面向连接的TCP协议,它可保证端到端的可靠传输。只要主机B的TCP发现了数据的传输有差错,就告诉主机A将出现差错的那部分数据重传,直到这部分数据正确传送到主机B为止(见第5章)。而TCP发现不了数据有差错的概率是很小的。采用这样的建网策略,既可以使网络部分价格便宜和灵活可靠,又能够保证端到端的可靠传输。

这样,我们可以这样想像,将因特网的范围稍微扩大一些,即扩大到主机中的运输层(请参考前面的图)。由于运输层使用了TCP协议,使得端到端的数据传输成为可靠的,因此这样扩大了范围的因特网就成为可靠的网络。

因此,说“因特网提供的数据传输是不可靠的”或“因特网提供的数据传输是可靠的”这两种说法都可以在文献中找到,问题是是怎样界定因特网的范围。如果说因特网提供的数据传输是不可靠的,那么这里的因特网指的是不包括主机在内的网络(仅有下三层)。说因特网提供的数据传输是可靠的,就表明因特网的范围已经扩大到主机的运输层。

再回到通过邮局寄平信的例子。当我们寄出一封平信后,可以等待收信人的确认(通过他的回信)。如果隔了一些日子还没有收到回信,我们可以将该信件再寄一次。这就是将“端到端的可靠传输”的原理用于寄信的例子。



物理层数据链路层网络层运输层应用层物理层数据链路层网络层运输层应用层不可靠的因特网可靠的因特网TCP协议将因特网的范围扩大到主机中的运输层IP协议AB??
献花(0)
+1
(本文系liyi039首藏)