登录

  • 登录
  • 忘记密码?点击找回

注册

  • 获取手机验证码 60
  • 注册

找回密码

  • 获取手机验证码60
  • 找回
毕业论文网 > 外文翻译 > 计算机类 > 计算机科学与技术 > 正文

网络软件外文翻译资料

 2022-07-21 03:07  

Network Software

The first computer networks were designed with the hardware as the main concern and the software as an afterthought. This strategy no longer works. Network software is now highly structured. In the following sections we examine the software structuring technique in some detail. The method described here forms the keystone of the entire book and will occur repeatedly later on.

1. Protocol Hierarchies

To reduce their design complexity, most networks are organized as a stack of layers or levels, each one built upon the one below it. The number of layers, the name of each layer, the contents of each layer, and the function of each layer differ from network to network. The purpose of each layer is to offer certain services to the higher layers, shielding those layers from the details of how the offered services are actually implemented. In a sense, each layer is a kind of virtual machine, offering certain services to the layer above it.

This concept is actually a familiar one and used throughout computer science, where it is variously known as information hiding, abstract data types, data encapsulation, and object-oriented programming. The fundamental idea is that a particular piece of software (or hardware) provides a service to its users but keeps the details of its internal state and algorithms hidden from them.

Layer n on one machine carries on a conversation with layer n on another machine. The rules and conventions used in this conversation are collectively known as the layer n protocol. Basically, a protocol is an agreement between the communicating parties on how communication is to proceed. As an analogy, when a woman is introduced to a man, she may choose to stick out her hand. He, in turn, may decide either to shake it or kiss it, depending, for example, on whether she is an American lawyer at a business meeting or a European princess at a formal ball. Violating the protocol will make communication more difficult, if not completely impossible.

A five-layer network is illustrated in Fig. 1-13. The entities comprising the corresponding layers on different machines are called peers. The peers may be processes, hardware devices, or even human beings. In other words, it is the peers that communicate by using the protocol.

Figure 1-13. Layers, protocols, and interfaces.

In reality, no data are directly transferred from layer n on one machine to layer n on another machine. Instead, each layer passes data and control information to the layer immediately below it, until the lowest layer is reached. Below layer 1 is the physical medium through which actual communication occurs. In Fig. 1-13, virtual communication is shown by dotted lines and physical communication by solid lines.

Between each pair of adjacent layers is an interface. The interface defines which primitive operations and services the lower layer makes available to the upper one. When network designers decide how many layers to include in a network and what each one should do, one of the most important considerations is defining clean interfaces between the layers. Doing so, in turn, requires that each layer perform a specific collection of well-understood functions. In addition to minimizing the amount of information that must be passed between layers, clear-cut interfaces also make it simpler to replace the implementation of one layer with a completely different implementation (e.g., all the telephone lines are replaced by satellite channels) because all that is required of the new implementation is that it offer exactly the same set of services to its upstairs neighbor as the old implementation did. In fact, it is common that different hosts use different implementations.

A set of layers and protocols is called a network architecture. The specification of an architecture must contain enough information to allow an implementer to write the program or build the hardware for each layer so that it will correctly obey the appropriate protocol. Neither the details of the implementation nor the specification of the interfaces is part of the architecture because these are hidden away inside the machines and not visible from the outside. It is not even necessary that the interfaces on all machines in a network be the same, provided that each machine can correctly use all the protocols. A list of protocols used by a certain system, one protocol per layer, is called a protocol stack. The subjects of network architectures, protocol stacks, and the protocols themselves are the principal topics of this book.

An analogy may help explain the idea of multilayer communication. Imagine two philosophers (peer processes in layer 3), one of whom speaks Urdu and English and one of whom speaks Chinese and French. Since they have no common language, they each engage a translator (peer processes at layer 2), each of whom in turn contacts a secretary (peer processes in layer 1). Philosopher 1 wishes to convey his affection for oryctolagus cuniculus to his peer. To do so, he passes a message (in English) across the 2/3 interface to his translator, saying #39;#39;I like rabbits,#39;#39; as illustrated in Fig. 1-14. The translators have agreed on a neutral language known to both of them, Dutch, so the message is converted to #39;#39;Ik vind konijnen leuk.#39;#39; The choice of language is the layer 2 protocol and is up to the layer 2 peer processes.

The translator then gives the message to a secretary for transmission, by, for example, fax (the layer 1 protocol). When the message arrives, it is translated into French and passed across the 2/3 interface to philosopher 2. Note that each

全文共25782字,剩余内容已隐藏,支付完成后下载完整资料


网络软件

第一个计算机网络计划把硬件作为主要部分,软件作为事后补充。这一战略不再有效。网络软件现在是高度结构化的。在以下部分中,我们将详细检查软件构建技术。这里描述的方法形成了整本书的重点,将反复出现。

  1. 协议层次

为了降低设计的复杂性,大多数网络被组织为层级结构,每一层级建立在它下面的层级之上。层级的数量、名称、内容、功能在网络中都是独一无二的。

每一层级的目的是为上一层级提供某些服务,屏蔽该层级提供服务的具体实现。在某种意义上,每一层级是一类虚拟机,在该层级上提供某些服务。

这事实上是一个常见的思想,贯穿整个计算机科学,它在信息隐藏、抽象数据类型、数据封装和面向对象编程方面为人所熟知。它的基本理念是,软件(或硬件)的一个特定部分提供一个服务给用户,但保持其内部状态和算法的细节对用户是隐藏的。

一台机器上的层级n在与另一台机器同样的层级n上进行会话。应用在会话中的规则和惯例被统称为n层协议。基本上,协议是一个通信当事人如何进行通信的协定。做一个类比,当一个女人被引荐给一个男人时,她可以选择伸出她的手。反过来,他可以决定同她握手还是亲吻,这取决于她,例如,是否她是一个在开商务会议的美国律师还是她是一个在参加正式的舞会的欧洲公主。违反协议将使通信更加困难,这是十分确定的。

一个五层网络用图1-13举例说明。实体的相应组成在不同的机器上被称为节点。节点可能是进程、硬件设备、甚至是人。换句话说,节点间的通信通过协议进行。

图1-13 层,协议和接口

实际上,没有数据可以直接从一台机器的第n层转移到另一台机器的第n层。相反,每一层将数据和控制信息传递给它的直接下一层,知道抵达最底层。第一层下面是实际通信发生凭借的物理媒介。在图1-13中,虚拟通信通过虚线被展示,物理通信通过实线被展示。

每一对相邻层之间是一个接口。接口定义了下一层中哪些基本操作和服务对上一层是可用的。当网络设计师决定一个网络应该包含多少层以及每一层应该做什么的时候,最需要注意的是在层之间定义整洁的接口。已经这样做的话,转而要求每一层执行特定的易于理解的功能集合。除了最小化层之间必须传递的信息量,定义清晰的接口使它可以很简单的替换某个层的实现(例如,所有的电话线被卫星频道替换)。因为所有所需的新实现都要提供和旧实现完全一样的对上一层级的服务集合。事实上,不同的主机使用不同的实现是很正常的。

层和协议的集合被称为网络体系结构。一个规范的体系结构必须包含足够的信息来允许实现者在确保每一层可以正确的遵守恰当的协议的情况下编写程序和构建硬件。实现的细节和接口的规范都不是体系结构的一部分,因为这些东西都被隐藏在机器内部,对外并不可见。甚至接口在网络中不同机器之间也可以不同,条件是每台机器可以正确的使用所有协议。用在特定系统上,一层一个协议的协议集,被称作协议栈。网络体系结构、协议栈和协议本身是本书的主要主题。

通过一个类比来帮助说明多层通信的理念。想象两个哲学家(对等过程在第三层),一个讲乌尔都语和英语,一个讲汉语和法语。由于他们没有共同语言,他们都要参与翻译(对等过程在第二层),他们要轮流联系秘书(对等过程在第一层)。哲学家1希望传达他在驯化兔方面的影响的信息给他的对话者。为此,他通过2/3的接口传递一个信息(用英语)给他的译者,说“我喜欢兔子”,见图1-14。译者同意在一个交流双方共知的中立的语言的基础上来翻译,即荷兰语,因此消息被转换成“我喜欢兔子”。语言的选择是由第二层协议和对等的第二层协议负责。

图1-14 哲学家-翻译-秘书结构

然后译者传输一条信息给他的秘书,例如,通过传真(1层协议)。当消息到达时,它被翻译成法语,并通过2/3的接口发给哲学家2。请注意,只要不改变接口,每个协议都是完全独立的。译者可以随意选择荷兰语或者芬兰语,只要他们都同意,并且都没有改变第一层和第三层的接口。同样,秘书可以选择从传真到电子邮件或者电话(甚至是通知),只要没有干扰到别的层。每个进程可以添加一些仅供其对等点的信息。这些信息不向上传递给上面的层。

现在思考一个更加技术性的示例:如何对图1-15中的五层网络提供顶层通信。消息M由运行在第五层的应用程序进程产生并传输给第四层。第四层在消息前面放一个数据头,以确定消息,并将结果传递给第三层。数据头包括控制信息,如序列号,以便在目标机器上允许第四层以正确的顺序传送消息,如果更低一层不保持序列的话。在某些层,数据头也可以包含大小,时间,和其他控制字段。

在许多网络中,第四层的传输协议对信息大小没有限制,但是第三层协议却有强加的限制。因此,第三层必须将传入的信息分解成更小的单元,即数据包,每层的每个数据包包含三个数据头。在这个例子中,M被分解为M1和M2两个部分。

第三层决定使用哪条输出线将数据传递给第二层。第二层不仅为每个数据包添加一个数据头,而且增加一个追踪器,使生成的数据包通过物理传输传输到第一层。在接收数据的机器上,信息一层一层的向上传输,随着传输的进行,数据头不断被剥离。第n层以下的数据头不会被传递到第n层。

重要的是要理解图1-15中虚拟通信与实际通信的联系,协议与接口的区别。在第四层的对等进程中,例如,从概念上认为通信过程是水平的,在应用第四层协议的时候。每一节点可能调用SendToOtherSide和GetFromOtherSide这样的函数,尽管这些程序实际上是与之下的3/4接口通信,而不是与另一边通信。

图1-15 在第5层上支持虚拟通信的信息流示意图

对等进程抽象化对所有网络设计都是重要的。使用它,难以处理的完整网络的设计任务被分解成更小的,容易控制的问题,换句话说,就是单层设计。

虽然Sec.1.3被称为“网络1.3”,值得指出的是,协议层次的较低层通常被实现在硬件和固件中。尽管如此,复杂的协议算法需要全身心投入,即使它们是嵌入(部分或者全部)在硬件中的。

  1. 层级的设计议题

一些发生在计算机网络设计中的关键议题是设置多少层。下面,我们将简要介绍一些更为重要的东西。

每一层都需要一个识别发送者与接收者的机制。因为每个网络上通常有很多电脑,其中一些有多个进程,意味着在一台机器上指定它想与之交谈的对象需要一个过程。由于具有多个目的地,为了指定一个特定的目的地,需要解决一些特定形式的寻址。另一组设计决策的关注点是数据传输的规则。在某些系统中,数据只能单向传递,但是在另一些系统中,数据可以双向传递。该协议还必须确定连接有多少对应的逻辑通道以及他们的优先级是什么。许多网络提供至少两个连接逻辑通道,一个用于正常的数据,一个用于紧急数据。错误控制是一个重要的问题,因为物理通信电路是不完美的。许多错误检测和纠错编码是已知的,但是连接的两端必须同意使用哪一个。此外,接收方必须告知发件人哪些消息已正确接收,哪些没有正确接收。

并不是所有的通信通道都保留了发送的消息的顺序。为了处理可能的不正确的排序,该协议必须明确的规定接收器允许作品被重新组织好。一个明显的解决方案是将这些消息进行编号,但是这个解决方案仍然留下了一个问题,就是应该如何处理到达的顺序。

发生在每一层上的一个问题是如何保持一个快速的发送者用数据淹没一个缓慢的接收者。已经提出了各种解决方案,并将在以后讨论。其中有些涉及一些从接收器到发送器的反馈,无论是直接或间接的,这就是接收机的当前情况。其他限制是使用双方协商过的传输速率。这个问题被称为流控制。

在某些层上必须解决的另一个问题是,所有的进程都无法接受任意长的消息。这个属性引起分解、传递、然后重组消息的机制。一个相关的问题是当线程坚持发送的数据单位是如此小,单独发送每一个数据单位是低效的。这里的解决方案是收集一些走向同一个目的地的小消息,将其合并成一个大消息,在另一端将大消息分解成小消息。

当它是不方便的或者代价高昂的来为每一对通信进程建立一个单独的连接,在下面的层可以决定多次使用相同的连接,而与会话无关。只要这种多路复用与解多路复用是透明的,它可以用在任何层。物理层需要多路复用,例如,在所有的连接中的通信都必须在很少的物理电路中被发送。

当源和目的地之间有多条路径时,必须选择一个路径。有时,这项决策必须被分为两个或者两个以上的层。例如,数据从伦敦发送到罗马,高层可能必须做出传输数据通过法国或者德国时必须基于它们自己私有法规的决定。那么低级的决策可能需要选择一个可用的基于当前的通信负载电路。这个话题被称为路由。

  1. 基于连接的和无连接的服务

层级可以提供两种不同的服务给它们上面的层级:基于连接的和无连接的。在这一节中,我们将观察这2种类型,并检验这两者之间的区别。

基于连接的服务仿照的是电话系统。要跟某人通话,你需要拿起电话,拨号码,通话,然后挂断电话。类似地,使用基于连接的网络服务,该服务的用户首先建立连接,使用连接,然后释放连接。一个连接的重要方面是,它的行为像一个通道:发送者将目标对象(位)放入一端,接收机在另一端接收它们。在大多数情况下,这个顺序被保存下来,以使比特数据按照被发送的顺序到达。

在某些情况下,当一个连接建立时,发送端、接收端和子网进行有关参数的协商,如最大信息大小、所需服务质量以及别的问题。通常情况下,一方提议,另一方可以接受它,拒绝它,或做出相应对策。

相反,无连接的服务仿照的是邮政系统。每个消息(书信)带有完整的目的地址,每个消息都是通过系统选择路径并且独立于所有其他路径。通常情况下,当两条消息被发送到同一目的地时,第一个发送的将是第一个到达的。然而,第一个发送的被延迟也是可能的,以便第二个先到达。

每个服务可以以服务质量为特征。一些服务是可靠的,因为它们从来没有丢失过数据。通常,一个可靠的服务通过接收反馈机制使每个消息的发送方确定消息已被接收来实现的。确认进程引入了开销和延迟,这通常是值得的,但有时是不可取的。

一种典型的情况是,即一个可靠的基于连接的服务是适当的文件传输。文件的所有者希望确保所有的数据位按照发送的顺序正确地到达。很少有文件传输客户喜欢数据被打乱或者数据丢失的传输方式,即使传输速度快多了。

基于连接的可靠的服务有两个小的特点:消息序列和字节流。在前一个特点中,消息边界被保留。当两个1024字节的消息被发送时,他们到达时是两个1024字节的消息,并不是一个2048字节的消息。在后一个特点中,连接只是一个没有消息边界的简单字节流。当2048个字节到达接收器,然而没有办法告诉接收器被发送的是一个2048字节的消息,还是两个1024字节或2048个1字节的消息。如果一本书的页数作为分离信息通过网络被发送向照相排字机,它是重要的来保持信息的边界。另一方面,当用户登录到远程服务器时,从用户的计算机到服务器的字节流都是必须的。信息边界应该是不相关的。

正如上面提到的,对于某些应用,传输延误的引进确定是不可接受的。类似这样的数字化语音通信应用程序。这是电话用户听到一点占线的声音要比体验确认延迟等待要好。类似地,在发送一个视频会议时,有几个像素错误是没有问题的,但停下来纠正流中错误的数据,这是让人不能接受的。

并非所有的应用程序都需要连接。例如,随着电子邮件变得越来越普遍,电子垃圾也变得越来越普遍了。电子垃圾邮件发送者可能不想陷入设置的麻烦,随后断开连接只是发送一个项目。即使这样也不是百分之100可靠,特别是如果它的成本更高。所有用户所需要的是一种具有很高的到达率的发送单一消息的服务,但没有保证。不可靠的(即不正确)无连接的服务通常被称为数据报服务,类似于电报服务,都不返回发件人的确认信息。

在其他情况下,不必建立连接发送一个短消息是一种愿景,但可靠性是必不可少的。公认的数据报服务可提供给这些应用程序。这就像是发送一封记名信,要求寄回收据。当收据回来时,该人绝对相信这封信是预定传递的一部分而没有消失在传输路径中。

还有另一种服务是请求-回复服务。在这个服务中发送者发送一个包含请求的数据报;收到包含答案的答复。例如,查询当地的图书馆问维吾尔族属于哪一类。请求-应答通常用于在客户端-服务器模型中实现通信:客户端发出请求,服务器响应请求。图1-16总结上面讨论的服务类型。

图1-16 服务类型及其例子

使用不可靠的通信概念一开始可能令人困惑。毕竟,为什么有人相对于可靠的通信更倾向于不可靠的通信?首先,可靠的通信(在我们的意识中,即认同)可能不可用。例如,以太网不提供可靠的通信。在传输过程中有时会损坏数据包。更高级的协议可以解决这个问题。其次,提供一个可靠的服务所导致的固有的延迟可能是不可接受的,特别是在实时应用中,例如多媒体。因为这些原因,可靠的和不可靠的通信是共存的。

  1. 服务原语

服务是一组提供给用户进程以访问该服务的原语(操作)。这些基元告诉服务来执行某个动作或报告一个动作给对等的实体。如果协议栈位于操作系统,因为它通常是,通常用于系统调用。这些调用导致一个有陷阱的内核模式,它能控制机器的操作系统发送必要的数据包。

所提供的原语的集合取决于所提供的服务的性质。基于连接的服务原语,不同于那些无连接的服务。作为一个最小的例子,服务原语可以提供在客户端-服务器环境中实现可靠的字节流,考虑图1-17上的原语。

图1-17 5个服务原语,用于实现一个简单的面向连接服务

这些原语可以用作如下。首先,服务器执行监听表明它准备接受传入的连接。实现监听的一种常用方法是使它成为一个阻塞的系统方法调用。在执行原语之后,服务器进程被阻塞,直到出现连接请求。

接下来,客户端进程执行连接来与服务器建立连接。连接请求需要指定要连接的对象,所以它可能有一个参数提供给服务器的地址。操作系统通常会发送一个数据包到对等的对象,如图1-18的(1)

全文共7420字,剩余内容已隐藏,支付完成后下载完整资料


资料编号:[154949],资料为PDF文档或Word文档,PDF文档可免费转换为Word

您需要先支付 30元 才能查看全部内容!立即支付

企业微信

Copyright © 2010-2022 毕业论文网 站点地图