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 I like rabbits, 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 Ik vind konijnen leuk. 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
剩余内容已隐藏,支付完成后下载完整资料
网络软件
在设计第一批计算机网络时,人们把硬件作为主要关注点,事后才考虑到软件。这个策略已经不再有效了。网络软件现在已经高度结构化。在以下各节中,我们将详细研究软件结构化技术。这里描述的方法构成了整本书的重点,以后将反复出现。
1.协议层次结构
为了降低计算机网络的设计复杂性,大多数网络被组织为一叠层次或等级,每个层次或等级都建立在其下方的层次或等级上。网络之间的层数,每层的名称,每层的内容以及每层的功能各不相同。每一层的目的是向较高的层提供某些服务,从而使这些层免受所提供服务的实际实现方式的细节的影响。 从某种意义上说,每个层都是一种虚拟机,向其上方的层提供某些服务。
这个概念实际上是一个我们熟悉的概念,并在整个计算机科学中被使用,它被称为信息隐藏,抽象数据类型,数据封装和面向对象的编程。协议层次结构的基本思想是,特定的软件(或硬件)为用户提供服务,但其内部状态的详细信息和算法则持续对用户隐藏。
一台机器上的第n层与另一台机器上的第n层进行对话。 此对话中使用的规则和约定统称为n层协议。 基本上,协议是通信双方之间关于如何进行通信的协议。 打个比方,当女人被介绍给男人时,她可能会选择伸出自己的手。 反过来,他可以决定是摇动还是亲吻它,例如取决于她是商务会议上的美国律师还是正式舞会上的欧洲公主。即使不是完全不可能,违反协议也将使通信更加困难。
五层网络如图1-13所示。其中包含不同机器上相应层的实体称为对等体。对等的可能是进程,硬件设备,甚至是人类。 换句话说,是使用协议进行通信的对等方。
图1-13。 层,协议和接口。
实际上,没有数据直接从一台机器上的第n层传输到另一台机器上的第n层。 而是,每个层将数据和控制信息传递到紧挨其下的层,直到到达最低层。 在第1层之下是发生实际通信的物理介质。 在图1-13中,虚拟通信用虚线表示,物理通信用实线表示。
在每对相邻层之间是一个接口。 该接口定义了下层对上层可用的原始操作和服务。 当网络设计人员决定要在网络中包含多少层以及每个层应该做什么时,最重要的考虑因素之一就是定义层之间的干净接口。依次地这样做要求每个层执行一系列易于理解的功能。 清晰的界面不仅必须使在各层之间传递的信息量最少,而且还使得用完全不同的实现方式替换一层的实现方式(例如,用卫星信道替代所有电话线)更加容易,因为新的实现方式只被要求像旧实现方式一样向上面的相邻层提供完全相同的服务集。实际上,不同的主机使用不同的实现方式是很常见的。
一组层和协议称为网络体系结构。 体系结构的规范必须包含足够的信息,以允许实现者编写程序或为每一层构建硬件,以便它可以正确遵守适当的协议。 接口的实现细节和规范都不是体系结构的一部分,因为这些细节隐藏在机器内部,从外部看不到。 只要每台机器可以正确使用所有协议,甚至不必使网络中所有机器上的接口都相同。 某个系统使用的协议列表(每层一个协议)称为协议栈。 网络体系结构,协议栈和协议本身的主题是本书的主要主题。
比喻可能有助于解释多层通信的思想。 想象一下,有两位哲学家(第3层中的对等进程),其中一位说乌尔都语和英语,其中一位说汉语和法语。 由于他们没有通用语言,因此他们各自聘请一名翻译人员(第2层的对等进程),而每个翻译人员依次与秘书联系(第1层的对等进程)。 哲学家1希望将他对穴居兔子的感情传达给他的对等者。 为此,他在2/3接口上将一条消息(英语)传递给他的翻译,说“我喜欢兔子”,如图1-14所示。 翻译人员已经就他们俩都知道的中立语言(荷兰语)达成了一致,因此消息被转换为“ Ik vind konijnen leuk”。语言选择的是第2层协议,并且取决于第2层对等进程。
然后,翻译人员将消息提供给秘书进行传输,例如通过传真(第1层协议)进行传输。 消息到达时,将其翻译成法语,并通过2/3接口传递给哲学家2。请注意,只要接口没有更改,每个协议就完全独立于其他协议。只要他们俩都同意,并且在不改变第2层与第1层或第3层之间的接口的情况下,翻译人员就可以随意从荷兰语改为芬兰语。同样,秘书可以在不干扰(抑或是报告)其他层的情况下从传真切换为电子邮件或电话。 每个进程可以添加一些仅用于其对等方的信息。此信息不会向上传递到上面的层。
图1-14。 哲学家——翻译者——秘书体系结构。
现在考虑一个更技术性的示例:如何在图1-15中提供与五层网络顶层的通信。 消息M由第5层中运行的应用程序生成,并提供给第4层进行传输。 第4层在消息之前放置标头,以标识消息并将结果传递给第3层。标头包含控制信息,例如序列号,以允许目标计算机上的第4层以正确的顺序传递消息。 下层不保持顺序。 在某些层中,标头还可以包含大小,时间和其他控制字段。
图1-15。 在第5层中支持虚拟通信的示例信息流
在许多网络中,第4层协议中传输的消息大小没有限制,但是第3层协议几乎总是施加限制。 因此,第3层必须将进入的消息分解为较小的单元,数据包,并在每个数据包之前添加第3层标头。 在此示例中,M分为两部分,M1和M2。
第3层决定使用哪条输出线,然后将数据包传递到第2层。第2层不仅为每个片段添加标头,还向其添加尾部,然后将结果单元提供给第1层进行物理传输。 在接收机上,消息向上移动,一层又一层,随着邮件的传递,标头被剥离。 低于n的层的标头都不会传递到层n。
关于图1-15要理解的重要事情是虚拟通信与实际通信之间的关系以及协议和接口之间的差异。例如,第4层中的对等进程在概念上依据第4层协议将其通信视为“水平的”。每个进程都可能有一个名为“传送到另一边”和“从另一边接收”之类的过程,即使这些过程实际上是通过3/4接口与较低层通信,而不是与另一侧通信。
对等进程抽象对于所有网络设计都至关重要。使用它,设计完整网络的难以管理的任务可以分解为几个较小的,可管理的设计问题,即每个层个体的设计。
虽然Sec. 1.3被称为“网络1.3”,值得指出的是,协议层次结构的下层通常是在硬件或固件中实现的。但是,即使全部或部分嵌入硬件中,也会涉及复杂的协议算法。
2.层的设计问题
计算机网络中发生的一些关键设计问题分几层出现。下面,我们将简要提及一些更重要的方面。
每个层都需要一种用于识别发送方和接收方的机制。由于互联网通常具有许多计算机,其中一些计算机具有多个进程,因此需要一种方法来使一台计算机上的进程指定要与谁交谈。由于具有多个目的地,因此需要某种形式的寻址方式以指定特定的目的地。
另一组设计决策与数据传输规则有关。在某些系统中,数据仅在一个方向上传播。在其他系统中,数据可以双向传播。协议还必须确定连接对应的逻辑通道数量及其优先级。许多网络每个连接至少提供两个逻辑通道,一个用于常规数据,一个用于紧急数据。
由于物理通信电路并不完善,错误控制是一个重要的问题。许多错误检测和错误纠正代码是已知的,但是连接的两端必须在使用哪一个代码上达成共识。另外,接收者必须以某种方式告诉发送者哪些消息已正确接收,哪些消息尚未正确接收。
并非所有的通信通道都保留在其上发送的消息的顺序。 为了处理可能造成的序列丢失,协议必须为接收器做出明确规定,以允许正确地重新组装这些组件。有个明显的解决方案是对零件进行编号,但是该解决方案仍然存在问题,即对于出现故障的零件应如何处理。
在每个层次上都会出现一个问题,即如何阻止快速发送者用数据淹没慢速接收者。有许多解决方案已经被提出了并将留待以后讨论。 其中一些涉及从接收者到发送者的某种直接或间接地关于接收者的当前状况的反馈。其他解决方案以商定的传输速率限制发送者。这个方案称为流控制。
必须在几个层次上解决的另一个问题是所有进程都无法接受具有任意长度的消息。此属性导致分解,传输和重新组装消息的机制。一个相关的问题是,当进程坚持以很小的单位传输数据时该怎么处理,这会导致每个进程单独发送效率都很低。有个解决方案是将朝向共同目标的几个小消息收集为单个大消息,并在另一端分解大消息。
当为每对通信过程建立单独的连接不方便或昂贵时,底层可以决定将相同的连接用于多个不相关的对话。只要该复用和解复用是透明完成的,它就可以被任何层使用。例如,在物理层中需要多路复用,其中所有连接的所有流量都必须最多通过几个物理电路发送。
当源和目标之间存在多条路径时,必须选择一条路径。有时,此决定必须分为两层或更多层。例如,要将数据从伦敦发送到罗马,可能必须根据法国或德国各自的隐私法做出高层决策,以便从法国或德国经过。然后,可能必须做出低级决策以根据当前的通信负载选择可用电路之一。这个主题称为路由。
3.面向连接与无连接服务
层可以为其上方的层提供两种不同类型的服务:面向连接和无连接。在本节中,我们将研究这两种类型并检查它们之间的区别。
面向连接的服务是按照电话系统建模的。 要与某人通话,你要拿起电话,拨打电话,通话,然后挂断电话。 类似地,要使用面向连接的网络服务,服务用户首先建立连接,使用连接,然后释放连接。 连接的基本方面是它的作用类似于管道:发送方在一端插入对象(位),而接收方在另一端取出对象(位)。 在大多数情况下,对象的顺序会保留下来,以使比特按其发送的顺序到达。
在某些情况下,建立连接后,发送方,接收方和子网会就要使用的参数进行协商,例如最大消息大小,所需的服务质量以及其他问题。 通常,一方提出建议,另一方可以接受,拒绝或提出反建议。
相反,无连接服务是以邮政系统为模型的。 每个消息(字母)都带有完整的目标地址,并且每个消息都独立于所有其他消息通过系统进行路由。 通常,当两条消息发送到同一目的地时,第一个被发送的消息将是第一个到达的消息。 但是,第一个被发送的消息有可能被延迟,以便第二个首先到达。
每种服务都可以以服务质量为特征。 从不丢失数据的意义上讲,某些服务是可靠的。 通常,通过让接收者确认每个消息的接收来实现可靠的服务以便发送者确定它已到达。 确认过程引入了开销和延迟,这个过程通常是值得的但有时不符合人们的期望。
可靠的面向连接的服务适当的典型情况是文件传输。文件的所有者希望确保所有位都正确地以它们发送的相同顺序到达。很少有文件传输客户希望使用偶尔会打乱或丢失几位的服务,纵然它的速度要快得多。
可靠的面向连接的服务有两个小的变动:消息序列和字节流。在前一种变体中,保留了消息边界。发送两个1024字节的消息时,它们作为两条截然不同的1024字节消息到达,而不会以一条2048字节消息到达。在后者中,连接只是字节流,没有消息边界。当2048个字节到达接收器时,无法确定它们是作为1个2048字节消息,2个1024字节消息还是2048个1字节消息发送的。如果一本书的书页通过网络作为单独的消息发送到照排机,则保留消息边界可能很重要。另一方面,当用户登录到远程服务器时,仅需要从用户计算机到服务器的字节流。消息边界无关紧要。
如上所述,对于某些应用,由确认引起的传输延迟是不可接受的。一类这样的应用是数字化语音业务。对于电话用户而言,宁可不时听到线路上的一点噪音,也不想经历等待确认的延迟。类似地,在发送视频会议时,有几个像素错误也没问题,但是随着流程停止以纠正错误,图像抖动会很烦人。
并非所有应用程序都需要连接。例如,随着电子邮件变得越来越普遍,电子垃圾也变得越来越普遍。电子垃圾邮件发件人可能不希望麻烦,只是为了发送一个项目而随后断开连接。 100%可靠的交付也不是必不可少的,如果这会导致更高的成本。客户所需要的只是一种发送具有高到达概率但无法保证准确性的消息的方法。与电报服务类似,不可靠(意味着未确认)的无连接服务通常称为数据报服务,该服务也不会将确认返回给发送方。
在其他情况下,人们希望方便地不必建立连接即可发送一条短消息,但是必须可靠。那就可以为这些应用程序提供确认的数据报服务。 就像人们发送挂号信并要求退回收据一样。 收到收据后,发件人可以完全确定这封信已经寄给了预定的当事人,并且在途中没有丢失。
另一个服务是请求-答复服务。 在这项服务中,发送方发送一个包含请求的数据报; 答复则包含答案。例如,查询当地维吾尔语的当地图书馆查询就属于此类。 请求-应答通常用于在客户端-服务器模型中实现通信:客户端发出请求,服务器对此做出响应。 图1-16总结了上面讨论的服务类型。
图1-16。 六种不同类型的服务。
使用不可靠的通信的概念开始可能会造成混淆。 毕竟,为什么有人真正喜欢不可靠的通信而不是可靠的通信?首先,人们可能无法进行可靠的通信(就我们而言,即公认的)。 例如,以太网不提供可靠的通信。 有时可能会损坏小包。 解决此问题取决于更高的协议级别。 其次,提供可靠服务所固有的延迟可能是不可接受的,尤其是在诸如多媒体之类的实时应用中。 由于这些原因,可靠和不可靠的通信同时存在于世。
4.服务原语
服务由一组可供用户进程访问该服务的原语(操作)正式指定。这些原语告诉服务执行某些操作或报告对等实体采取的操作。如果协议栈依照惯例位于操作系统中,则原语通
剩余内容已隐藏,支付完成后下载完整资料
资料编号:[238412],资料为PDF文档或Word文档,PDF文档可免费转换为Word
以上是毕业论文外文翻译,课题毕业论文、任务书、文献综述、开题报告、程序设计、图纸设计等资料可联系客服协助查找。