网络软件外文翻译资料

 2022-05-15 10:05

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层是实际通信发生的物理介质。在图1-13中,用虚线表示虚拟通信,用实线表示物理通信。

每一对相邻层之间都有一个接口。该接口定义了较低层可用于上层的基本操作和服务。当网络设计师决定在网络中包含多少层以及每个层应该做什么时,最重要的考虑之一是定义层之间的明确的接口。这样做反过来要求每个层都执行特定的功能集合。除了最小化层间必须传递的信息量之外,明确的接口还使得在层中替换实现变得更简单(例如,所有的电话线被卫星信道取代),因为它们所需的新实现能够像以前一样为上层提供相同的服务。事实上,不同的主机使用不同的实现是很常见的。

一组层和协议被称为网络体系结构。体系结构的规范必须包含足够的信息,以允许实施者编写程序或为每个层构建硬件,以便它能正确遵守适当的协议。实现的细节和接口的规范都不是架构的一部分,因为它们隐藏在机器内部并且从外部看不到。即使网络中所有机器上的接口都是相同的,但每台机器都可以正确使用所有协议。某个系统使用的协议列表(每层一个协议)称为协议栈。网络体系结构,协议栈和协议本身是本书的主要内容。

类比可能有助于解释多层通信的思想。设想两位哲学家(第三层对等进程),其中一位讲乌尔都语和英语,其中一位讲中文和法文。由于他们没有共同的语言,他们每个人都会聘请一名翻译(第2层的对等进程),他们每个人都会联系秘书(第1层的对等进程)。哲学家1希望向他的同伴表达他对兔子的喜爱。为此,他将2/3界面上的消息(英文)传递给他的翻译员,并说“我喜欢兔子”,如图1-14所示。译员已经同意他们两个都知道的中立语言,荷兰语,所以这个信息被转换为“Ik vind konijnen leuk(我喜欢兔子)”。语言的选择是第2层协议,并且取决于第2层对等过程。

然后,译员通过例如传真(第1层协议)将消息发送给秘书进行传输。当消息到达时,它将被翻译成法语并通过2/3层接口传递给哲学家2。请注意,只要接口没有改变,每个协议就完全独立于其他协议。译员可以从荷兰语转换为芬兰语,只要他们都同意,并且既不会改变其与第1层或第3层的界面。同样,秘书可以从传真转换为电子邮件或电话而不会造成干扰(甚至通知)其他层。每个进程可能会添加一些仅用于其同级的信息。此信息不会向上传递到上面一层。

现在考虑一个更具技术性的例子:如何向图1-15中的五层网络的顶层提供通信。消息M由第5层中运行的应用程序生成并传输给第4层。第4层在消息

图1-14.哲学家 - 译员 - 秘书架构

前面放置一个报头来标识消息并将结果传递给第3层。报头包含控制信息(如序列号),以允许目标机器上的第4层以正确的顺序传递消息(如果较低层不保持序列)。 在某些层中,报头还可以包含大小,时间和其他控制字段。

图1-15.实例信息流支持第五层的虚拟通信

在许多网络中,对第4层协议中传输的消息的大小没有限制,但几乎总是受第3层协议的限制。因此,第3层必须将传入的消息分解为更小的单元(数据包),并为每个数据包添加一个第3层报头。在这个例子中,M被分成两部分,M1和M2。

第3层决定使用哪一条输出线路并且将数据包传递给第2层。第2层不仅为每个片段增加一个头部,而且还增加一个尾部,并将结果单元提供给第1层进行物理传输。在接收机器上,消息从层到层向上移动,随着消息头的进展,消息头被剥离。 n层以下层的头信息都不会传递到第n层。

了解图1-15的重要之处在于虚拟通信和实际通信之间的关系以及协议和接口之间的区别。例如,第4层中的对等进程在概念上将其通信视为“水平的”,即使用第4层协议。每个人都可能有一个叫做SendToOtherSide和GetFromOtherSide的过程,尽管这些过程实际上是通过3/4层接口与低层进行通信,而不是与另一侧进行通信。

对等进程抽象对所有网络设计都至关重要。使用它,设计完整网络的难以管理的任务可以分解为几个更小,可管理的设计问题,即单个层的设计。

即使 1.3被称为“网络1.3”,值得指出的是协议层次的较低层通常以硬件或固件实现。尽管如此,即使复杂的协议算法嵌入(全部或部分)在硬件中也是如此。

2.层的设计问题

计算机网络中出现的一些关键设计问题分为几个层次。下面,我们将简要介绍一些更重要的内容。

每一层都需要一种识别发件人和接收者的机制。由于网络通常具有许多计算机,其中一些计算机具有多个进程,所以在一台机器上的进程需要一种手段来指定其想要与谁交谈。由于具有多个目的地,需要某种形式的寻址以指定特定的目的地。

另一组设计决定涉及数据传输规则。在一些系统中,数据只能在一个方向上传输;在其他情况下,数据可以双向进行。该协议还必须确定连接对应的逻辑信道数量及其优先级。许多网络每个连接至少提供两个逻辑通道,一个用于正常数据,一个用于紧急数据。

错误控制是一个重要的问题,因为物理通信电路并不完美。许多错误检测和错误纠正码都是已知的,但连接的两端必须同意使用哪一个。另外,接收方必须通过某种方式告诉发送方哪些消息已被正确接收,哪些没有。

并非所有的通信渠道都保留发送给它们的消息的顺序。为了处理可能的序列丢失,协议必须明确规定接收器允许消息片段正确地重新组装。一个显而易见的解决方案是对这些消息片段进行编号,但是这种解决方案仍然存在一个问题,即应该如何处理不符合要求的消息片段。

每个级别都会出现一个问题,那就是如何让快速发送方免受数据缓慢接收器的困扰。已经提出了各种解决方案,将在后面讨论。其中一些涉及从接收方到发送方的某种反馈,直接或间接地反映接收方当前的情况。其他人限制发送方达成一致的传输速率。这个主题被称为流量控制。

另一个必须在多个层面解决的问题是所有流程无法接受任意长的消息。这个属性导致分解,传输和重组消息的机制。一个相关的问题是当进程坚持以很小的单位传输数据时发生什么,以致分别发送每个数据效率不高。这里的解决方案是将朝向公共目的地的几条小信息收集成单个大信息,并在另一端分解大信息。

当为每对通信进程设置单独的连接是不方便或昂贵的时,底层可能决定使用相同的连接进行多个不相关的对话。只要这种复用和解复用是透明的,它可以被任何层使用。在物理层需要多路复用,例如,所有连接的所有通信都必须通过至少几个物理电路发送。

当源和目的地之间有多条路径时,必须选择一条路径.有时候这个决定必须分成两层或更多层。例如,要将数据从伦敦发送到罗马,可能需要根据其各自的隐私法律,通过法国或德国的高层决策。然后根据当前的流量负载,可能需要低层做出一个决策来选择一个可用电路。这个话题被称为路由。

3.面向连接和无连接的服务

每层可以为其上层提供两种不同类型的服务:面向连接和无连接。在本节中,我们将看看这两种类型,并检查它们之间的差异。

面向连接的服务模仿电话系统。要与某人交谈,请拿起电话,拨打号码,通话,然后挂断电话。同样,要使用面向连接的网络服务,服务用户首先建立连接,使用连接,然后释放连接。连接的基本方面是它像一个管子:发送者将物体(比特)推入一端,而接收器将另一端拿出。在大多数情况下,订单被保留,以便按照它们发送的顺序到达。

在某些情况下,建立连接时,发送方,接收方和子网会对要使用的参数进行协商,例如最大邮件大小,所需服务质量以及其他问题。通常,一方提出建议,另一方可以接受,拒绝或提出反建议。

相比之下,无连接服务模仿邮政系统。每个消息(字母)都包含完整的目标地址,每个消息都通过独立于所有其他消息的系统进行路由。通常,当两条消息被发送到同一个目的地时,第一个消息将是第一个到达的消息。但是,第一个发送的可能会被延迟,以便第二个先到达。

每种服务都可以通过服务质量来表征。某些服务是可靠的,因为它们从不丢失数据。通常,可靠的服务是通过让接收方确认收到每条消息来实现的,因此发送方确信它已到达。确认过程引入开销和延迟,这往往是值得的,但有时候是不受欢迎的。

一种可靠的面向连接的服务适合的典型情况是文件传输。该文件的所有者想要确保所有位正确到达并按照它们发送的顺序。很少有文件传输客户会喜欢偶尔打乱或丢失一些数据的服务,即使速度更快。

可靠的面向连接的服务有两个小的变化:消息序列和字节流。在前一个变体中,消息边界被保留。当发送两个1024字节的消息时,它们作为两个不同的1024字节消息到达,而不是一个2048字节的消息。在后者中,连接只是一个字节流,没有消息边界。当2048字节到达接收器时,无法判断它们是作为一个2048字节的消息,两个1024字节的消息还是2048个1字节的消息发送的。如果一本书的页面作为单独的消息通过网络发送给照排设备,则保留消息边界可能很重要。另一方面,当用户登录到远程服务器时,只需从用户计算机到服务器的字节流。与消息边界不相关。

如上所述,对于某些应用,由于确认而引入的传输延迟是不可接受的。一种这样的应用是数字化语音业务。电话用户最好不时听到线路上有些噪声,而不是经历等待确认的延迟。类似地,在传输视频会议时,出现几个像素错误并不成问题,但随着流程停止以纠正错误,图像会随之抖动,这是令人烦恼的。

并非所有应用程序都需要连接。例如,随着电子邮件变得越来越普遍,电子垃圾越来越普遍。电子垃圾邮件发件人可能不想去仅仅为了发送一个项目而陷入设置和拆除连接的麻烦之中。 100%可靠的交付也不是必不可少的,特别是如果成本更高。他们所需要的只是一种具有高可能性但不能保证可靠的单个消息的发送方式。与电报服务类似,不可靠(意味着未确认)的无连接服务通常被称为数据报服务,它也不会向发送方返回确认。

在其他情况下,不需要建立连接发送一条短消息的便利性是可取的,但可靠性至关重要。可以为这些应用程序提供已确认的数据报服务。这就像发送挂号信并要求回执,当收据回来时,发件人绝对确信这封信已经发送给预定的一方,并且不会在途中遗失。

另一项服务是请求-应答服务。在这项服务中,发送者发送包含请求的单个数据报;答复中包含答案。例如,询问当地图书馆询问维吾尔语的地方属于这个类别。请求-应答通常用于在客户端 - 服务器模型中实现通信:客户端发出请求并且服务器对其进行响应。图1-16总结了上面讨论的服务类型。

图1-16.6种不同类型的服务

使用不可靠通信的概念一开始可能会让人困惑。毕竟,为什么人们会选择不可靠的通信来保证可靠的通信?首先,可靠的通信(在我们看来,这是公认的)可能不可用。例如,以太网不提供可靠的通信。包在运输过程中可能会被损坏。处理这个问题需要更高的协议级别。其次,提供可靠服务所固有的延迟可能是不可接受的,特别是在诸如多媒体的实时应用中。由于这些原因,可靠和不可靠的通信共存。

4.服务基元

服务由用户进程可用于访问服务的一组原语(操作)正式指定。这些原语告诉服务执行某个操作或报告对等实体采取的操作。如果协议栈位于操作系统中,就像往常一样,原语通常是系统调用。这些调用会导致陷阱进入内核模式,然后将控制权交给操作系统发送必要的数据包。

可用的原语集取决于所提供的服务的性质。面向连接的服务的原语与无连接服务的原语不同。作为在客户端 - 服务器环境中为实现可靠的字节流而提供的服务原语的最简单示例,请考虑图1-17中列出的原语。

<t

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


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

原语

含义

原文和译文剩余内容已隐藏,您需要先支付 30元 才能查看原文和译文全部内容!立即支付

以上是毕业论文外文翻译,课题毕业论文、任务书、文献综述、开题报告、程序设计、图纸设计等资料可联系客服协助查找。