跳转到内容

交换机、路由器、网桥和局域网/引言

来自 Wikibooks,开放世界的开放书籍

分层方法的必要性

[编辑 | 编辑源代码]

用户对计算机网络有着非常高的期望:即使在跨越全球通信时,我们也期望网络延迟最小且可靠性高。但是提供这种通信的硬件有时会发生故障,或者需要升级。互联网也不是一个静态的系统:每天都会连接新的网络,并且一些旧的网络会暂时或永久停止工作。用于计算机网络的系统需要检测并解决错误,并且自动执行此操作,而无需等待人工干预。错误可能发生在任何级别,从可能改变电线上单个信息位的少量电干扰或宇宙射线,到一条横跨大西洋的网络主干电缆被船锚切断。

在理论上,编写一个可以处理所有这些意外情况的单一协议是可行的,但在实践中,处理所有可能的错误源的需求会很快使其变得难以管理。此外,部署一个单一的整体协议存在政治问题:每个人都必须使用相同的协议,并且每个人都必须同时采用它。

发展出的解决方案在软件工程中很常见:使用抽象。网络是根据一系列实现的,每一层只解决网络通信整个问题的一小部分。但是,每一层都可以依靠其下层提供的服务,以便整个堆栈协同工作可以解决任何单个层都无法解决的问题。此外,分层模型意味着网络的不同部分可以通过不同的方式解决较低层的问题,只要它们都实现较高层依赖的相同接口即可。

Communication in the OSI-Model (example with layers 3 to 5)

OSI 模型

[编辑 | 编辑源代码]

1978 年,国际标准化组织 (ISO) 发起的开放系统互连 (OSI) 项目首次尝试标准化网络层。该小组的成果描述了 7 个网络层,并指定了一套在每个层上运行的协议。尽管指定的协议并未流行,并被 TCP/IP 取代,但 7 层的概念仍然存在,至今仍用于描述网络协议。协议没有严格必要遵守 OSI 7 层模型,事实上,许多协议模糊了边界或将几个层的函数合并到一个协议中,但层号对于非正式通信仍然有用。

OSI 模型中的层

[编辑 | 编辑源代码]
第 1 层:物理层
[编辑 | 编辑源代码]

堆栈的最低层处理从一个地方到另一个地方发送信号的物理细节。通常,此信息以电信号或激光光编码的形式传输,但原则上可以使用任何通信方式。例如,如果您有办法将二进制数据编码成从扬声器到麦克风的音频(使用第二个扬声器和麦克风以相反方向发送数据),那么您可以在此物理层之上使用其余的标准协议,而无需更改它们。

物理层不必提供完全可靠的传输:上层负责检测错误并在必要时重新发送数据。物理层仅提供某种将数据从一个节点传播到另一个节点的方式。

除其他事项外,物理层协议的规范需要指定电信号的电压或激光的频率和功率、连接器的尺寸和形状、信号调制以及多个节点共享同一链路的方式。

[编辑 | 编辑源代码]

数据链路层负责提供在两个节点之间传输数据的方法,如果可能,检测或纠正物理层中的错误。第 2 层引入了唯一地址的概念,这些地址标识正在通信的节点。与第 3 层不同,数据链路层地址使用扁平结构,即地址的结构不会提供任何有关节点相对位置或流量应在它们之间采取的路由的信息。

最熟悉的数据链路层协议是以太网,尽管以太网标准也指定了物理层的详细信息。

第 3 层:网络层
[编辑 | 编辑源代码]

网络层建立在较低层的基础上,以支持跨互连网络(而不是单个网络内)路由数据。网络层中的寻址利用分层结构,以便可以将数千或数百万个主机的路由汇总为单个信息。通常,彼此位于同一网络上的节点将在其第 3 层地址上共享一个共同的前缀。第 3 层通信不包含持续连接的概念:在通信主机对之间发送的每个数据包都分别处理,并且不知道之前发送的数据包。第 3 层协议可能能够纠正物理层或数据链路层引入的数据包中的错误,但不能保证不会丢失任何数据包。

第 4 层:传输层
[编辑 | 编辑源代码]

传输层允许通信主机在其之间建立持续连接。第 4 层协议可能会检测丢失的数据包并通过重新传输数据包来进行补偿,但并非所有协议都这样做:最明显的是,TCP 提供可靠的传输,但 UDP 不提供。提供可靠的传输会产生开销,并且某些数据在稍微延迟后就会变得过时(例如,实时电话或视频会议的数据),因此在某些情况下,不可靠的传输是可取的。

第 5 层:会话层
[编辑 | 编辑源代码]

OSI 模型允许第五层提供创建、维护和销毁最终用户应用程序之间半永久性会话的机制。例如,它可能使检查点和恢复通信会话成为可能,或者使来自不同来源的多个流同步。在实践中,尽管有一些协议提供了此类功能,但第 5 层很少被视为一个通用概念。

第 6 层:表示层
[编辑 | 编辑源代码]

第 6 层是将对应用程序有意义的数据结构映射到字节流的层,其细节不需要关注较低层。理论上,这使应用程序层不必担心一个计算机平台与另一个计算机平台之间的差异,例如,使用 ASCII 编码其文本文件的计算机与使用 EBCDIC 的计算机进行通信。在实践中,协议很少费心将此层与最高层(应用程序层)区分开来,将两者组合视为一层。

第 7 层:应用层

[编辑 | 编辑源代码]

应用层包含描述通信应用程序特定细节的协议。FTP、HTTP和SMTP都是应用层协议。

不同层级的交换

[编辑 | 编辑源代码]

每个协议层限制的通信方面的区别,起初可能看起来不重要或武断。对于最简单的网络(仅由两台通过一根电缆连接的计算机组成)来说确实如此。但是,随着网络节点数量的增加,明确区分每一层的职责变得越来越有用。

两台计算机可以共享一根物理电缆,但如果我们想将第三台计算机添加到这个微型网络中,该如何连接呢?我们是否尝试通过切割电缆并在电缆上接入分支来共享同一根物理电缆?理论上这可能行得通,但在实践中会缺乏灵活性:除了切割和拼接电缆所需的时间外,在不中断现有网络用户网络的情况下,很难将节点添加到网络中。更易于维护的解决方案是将每台计算机插入一个通用的集线器。集线器上将有网络插座,我们的网络电缆可以插入其中,集线器内的电路将确保只要电缆插入,它就能与任何其他已连接的电缆发送和接收信号。

Hosts connected via a hub

集线器是一个纯粹的物理层设备。它不知道它传输的任何信号的含义,也不会对哪些信号应该去哪里或数据是否损坏做出任何决策。每根电缆上的每个信号都会复制到所有其他电缆上。

使用物理层集线器的替代方案是使用2层交换机连接主机。与集线器不同,交换机尝试处理它接收到的数据,以便了解有关正在传输的数据包的一些信息。交换机只会解析数据包的2层内容,将所有更高层的数据视为可以传输而无需理解的数据块。解析2层包装器的优点是它包含数据包的源地址和目标地址。如果交换机知道数据包发送的方向(基于目标地址及其对网络的了解),它可以仅将数据包发送到网络上的一个链路,从而节省带宽。如果交换机不知道将数据包发送到哪里,它会将其发送到除接收数据包的接口之外的所有接口:这称为泛洪

使用交换机代替集线器可以节省带宽(通过仅在需要接收数据包的链路上发送数据包),唯一的缺点是交换机是更复杂的设备,可能成本更高或需要额外的配置。实际上,简单的交换机不需要任何配置,并且早已变得与集线器一样便宜(甚至更便宜,因为现在对物理层集线器的需求很少)。

此讨论忽略了交换机如何准确知道将特定数据包发送到哪里。当交换机首次连接到网络时,它对网络一无所知。在没有任何知识的情况下,它必须将其接收到的每个数据包泛洪到每个端口,其行为与集线器几乎相同。但是,交换机可以从它看到的每个数据包中学习,这意味着它可以做出更好的决策。例如,如果交换机在接口2上接收一个源地址为A、目标地址为B的数据包,它可以得出结论:源地址A可以通过接口2访问。下次它接收到目标地址为A的数据包时(无论它是否来自地址B),它都可以直接将其转发到接口2,从而节省其他链路上的带宽。

因此,每个交换机内部都有一个将2层地址映射到端口号的表。此表的尺寸受可用内存的限制,以及在表中查找地址的速度(为了能够在没有太多延迟的情况下转发数据包,必须非常快速地查找数据包)。启用此快速查找的专业硬件非常昂贵,因此,在实践中,如果您希望您的交换机具有更大的2层地址容量,则必须准备为此额外付费。家庭网络交换机可能能够存储几千个地址,而高端数据中心交换机可以处理数万或数十万个地址。

无论您在交换机上花费多少,它都永远无法处理其查找表中互联网上数十亿个主机中的每一个的条目。处理此问题的唯一合理方法是将网络分解成多个部分,并一次存储有关一部分的信息。这就是路由(在第3层进行)与交换(在第2层进行)的不同之处。


Clipboard

待办事项
尚待扩展

  • 2层交换和3层路由的特性
  • 术语:交换机与网桥,交换机与集线器,路由器,互联网,链路网络
  • 交换机的历史发展
  • 路由器技术的现状:微分段;交换机具有越来越多的3层功能;交换机和路由器之间的区别现在更多地取决于性能/可扩展性特征,而不是黑白的技术区别。
华夏公益教科书