28、网络互联(网络层)
引言
- 到现在为止,我们一直隐含着假设所讨论的网络是一个同质网络,即每台机器在每一层使用相同的协议。实际上,存在着许多不同的网络,包括PAN、LAN、MAN、WAN。我们已经描述过以太网、线缆上的Internet、固定和移动电话网络、802.11、802.16等。大量协议被广泛应用于这些网络的各个层次,不同类型的网络解决不同的问题。在下面的章节中,我们将详细讨论当两个或者多个网络连接起来形成网络互联或简单的互联网时所涉及的一些问题。
- Internet是这种互联的最佳例子。纳入所有这些网络的目的是使得任何一种网络的用户都可以和其他种类的网络用户沟通。当你向ISP支付Internet服务费用时,收取的费用取决于你的线路带宽,但你真正支付的是能够与同样连接到Internet上的其他主机交流数据包的能力。由于网络往往在一些重要方面有所不同,因此一个网络得到来自另一个网络的数据包并不是那么容易。我们必须解决异质性的问题,以及因相互连接起来的互联网增长非常大而造成的规模问题。我们首先考查不同的网络是如何的不同;然后将学习Internet网络层协议IP获得成功的经验,包括穿越网络的隧道、互联网络的路由和数据包拆分技术。
1、网络如何不同
- 网络的不同可提现在不同方面。比如不同的调制解调技术或帧格式这样的差异属于物理层和数据链路层内部。图中列出了暴露在网络层的一些差异。
- 当一个网络上的某个源端发出的数据包必须经过一个或者多个外部网络才能到达目标网络时,网络之间的接口可能产生许多问题。首先,源端必须能够寻址接收方。如果源端在以太网上,而接收方在WiMAX,应该如何处理?假设我们在以太网标识一个WiMAX目标,数据包将从一个无连接网络穿越到面向连接的网络,可能需要在短时间内建立一个新的连接,这将带来延迟,而且如果连接不是被更多的数据包使用,开销很大。
- 许多特殊的分歧也必须容忍。我们如何在一个不支持组播的网络上把数据包分发给一组用户?不同的网络规定的最大数据包尺寸不同,这也是困扰网络互联的主要因素。如何通过一个最大尺寸为1500字节的网络传递长度为8000个字节的数据包?如果一个面向连接网络上的数据包经过一个无连接网络,它们可能以不同的顺序到达接收方。
- 经过一些努力,这类差异可以被掩盖。例如,连接两个网络的网关可以为每个接收方生成单独的数据包,来替代支持组播的更好网络;一个大的数据包可以拆分成段发送,然后重组还原。接收端缓冲收到的数据包,并按顺序递交。
- 网络可能在其他大的方面有所区别,而这些方面是难以调和的。最明显的例子是服务质量。如果一个网络具有强大的QoS,而其他网络只能提供尽力而为的服务,那么就不可能为端-端的实时流量做带宽和延迟保证。事实上,除非运行的尽力而为网络利用率较低,否则服务质量很难保证。安全机制也有问题,但可以在不具备安全性的网络顶端设置加密技术,来保证保密性和数据完整性。最后,当平时正在使用的网络突然变得昂贵起来,计费上面的差异可能会产生令人不悦的账单,正如有数据计划的漫游手机用户发现的那样。(请不要只考虑技术上的差异!应该跳出技术的圈子)
2、何以连接网络
- 连接不同网络的方式有两种基本选择:第一,我们可以制造这样的设备,它能将每种网络的数据包翻译成每个其他类别网络的数据包;第二,像出色的计算机科学家那样,尝试在不同网络的上面增加一个间接层,并且构造一个公共层来解决这些问题。这两种情况下,新设备被放置在网络之间的边界上。
- 早期,Cerf和Kahn提出一个公共层来隐藏现有网络的差异。这种方法已经取得巨大成功,它们提出的层最终分别融入到TCP和IP协议。差不多40之后,IP成为了现代Internet的基础。由于这个成绩他们于2004年被授予图灵奖。IP提供了一种通用的数据包格式,所有路由器都认识这种数据包,因而这种数据包几乎可以通过所有的网络传递。IP已经将其研究活动从计算机网络扩展到电话网络。它还可以运行在支持在传感器网络和其他微型设备上,这些微型设备一度被认定资源太少而无法支持IP。
- 我们已经讨论了集中用来连接网络的不同设备,包括中继器、集线器、交换机、网桥、路由器和网关。中继器和集线器只是将比特从一根导线移动到另一根导线,它们大多是模拟设备,不了解有关高层协议 的任何知识。网络和交换机工作在链路层。它们可以被用来构建网络,但只能处理轻微的协议转换,例如在10、100和1000Mbps以太网交换机之间传递帧。我们在这一节的重点是相互连接工作在网络层的设备,即路由器,把网关等高层互连设备留到以后介绍。
- 先讨论在较高层次如何用一个共同的网络层来互连不同的网络。一个由802.11、MPLS和以太网网络组成的互联网络,如图a所示。假设源主机在802.11网络上,要给以太网上的目标机器发送数据包。由于这两个网络技术不同,而且它们又被另一类型的网络(MPLS)隔离,因此在网络之间的边界需要做一些额外的处理。
- 一般来说不同的网络有不同形式的地址,数据包携带一个网络层地址,它可以标示这三个网络上的主机。当一个数据包从802.11网络被发送到MPLS网络时,首先到达第一个网络的边界。802.11提供了无连接服务,但MPLS提供了面向连接的服务,这意味着必须建立一条穿过该网络的虚电路。只要数据包沿此虚电路传输就能到达以太网网络。在第二个网络边界,数据包可能太大以至于无法通过,因为802.11可以使用比以太网大得多的帧。为了解决这个问题,数据包拆分成段,每个段单独发送。当这些段到达接收方后,它们被重新组合在一起。这时数据包才能完成自己的旅程。
- 这个过程中的协议处理如图b所示。源端接收来自传输层的数据,并生成一个带有公共网络层的头,这个协议中采用的是IP协议。网络层的头包含了最终的接收方地址,这个地址被用来确定数据包应该通过第一个路由器发送。因此,包被封装在802.11帧内并且被发送出去,帧的目标地址是第一个路由器的地址。在路由器,数据包从帧的数据字段中被提取出来,802.11帧头被丢弃;现在路由器检查数据包中的IP地址,并查询其路由表;根据这个地址,路由器决定将数据包发送到第二个路由器。对于路径中的这部分,路由器必须建立一条到第二个路由器的MPLS虚电路,并且必须用MPLS报头封装该数据包。在远端,MPLS头被丢弃,并在此检查网络地址,以便寻找下一跳网络层。这下一跳就是目标网络本身。由于数据包太长无法通过以太网发送,它被拆分成两部分。每一部分被放入以太网帧的数据字段,并被发送到目的地的以太网地址。在接收方,剥掉每个帧的以太帧头,将帧的数据内容重新组合。至此,数据包到达目的地。
- 这里可以观察到路由情况和交换(或桥接)情况的本质区别。在路由器上,数据包被从帧中提取出来,数据包中的网络地址被用来决定它被转发到哪里;而在交换机(或网桥)上,整个帧是根据MAC地址传送的。交换机并不了解正在被交换的数据包所采用的网络层协议,同样路由器不必了解交换机所采用的链路层协议。
- 不幸的是,网络互联并不想我们所说的那么容易。事实上,引入网桥的目的就是用它们将不同类型的网络联结起来,或者至少把同类型的局域网联结在一起。它们的做法是把一个LAN的帧翻译成另一个LAN的帧。然而这样的工作并不理想,出于同样的原因网络互联是很难的:LAN特征上的差异很难掩盖,比如不同的最大数据包尺寸、LAN有无优先级。今天网桥主要在链路层用来连接的同类网络,路由器在网络层用来连接不同的网络。
- 网络互联技术在建设大型网络方面非常成功,但仅当有一个共同网络层时才能工作。事实上,随着时间的推移已经存在许多网络协议。当公司认定有一个自己控制的专用格式是它们的商业优势时,想要获得大家对单一格式的一直认可就很难了。除了IP这个例外,现在近乎普遍的网络协议是IPX、SNA和AppleTalk,这些协议仍然没有得到广泛使用。IPv4和IPv6是IP的两个版本,但它们是不兼容的(否则就不必要建立IPv6了)。
- 可以处理多个网络协议的路由器称为多协议路由器。它必须翻译协议,或者把连接留给更高的协议层。这两种方法都差强人意。更高层的协议比如说TCP,要求所有网络都实现TCP(也许并非如此)。因此,它限制网络智能被使用TCP的应用使用(不包括许多实时应用)。
- 另一种方法是在网络之间转换数据包。然而除非数据包格式比较相近,具有相同的信息字段,构造这种转发将永远是不完整的,并且往往注定要失败。例如,IPv6地址为128位长,不过路由器如何尝试,它们肯定不适合填入32位的IPv4字段。在一个网络上同时运行IPv4和IPv6已经被证明是部署IPv6的一个主要障碍。在两个根本不同的协议之间进行翻译可能产生更大的问题,比如无连接和面向连接的网络协议。鉴于这些困难,很少有人去尝试这种转换。可以说,甚至IP也只能在作为最小分母的一种服务时才能工作得更好。IP对运行自己的网络要求很少,但它提供的只能是尽力而为的服务。
3、隧道
- 处理两个不同网络相互连接时的一般情况超级困难。然而,却存在一种最常见的甚至可管理不同网络协议的情况。这种情形就是源主机和目标主机所在网络的类型完全相同,但它们中间却隔着一个不同类型的网络。距离来说,请考虑一家跨国银行,它在巴黎有一个IPv6网,在伦敦也有一个IPv6网,但是连接两者之间的趋势IPv4网络。如图。
- 这个问题的解决方案是一种称为隧道的技术。为了给伦敦办事处的主机发送一个IP数据包,巴黎的主机构造一个包含伦敦IPv6地址的数据包,然后该数据包发送到连接巴黎IPv6网络到IPv4网络上的多协议路由器;当该多协议路由器获得IPv6数据包后,它把该数据包用一个IPv4头封装,封装后的IPv4数据包指向多协议路由器另一边的IPv4,该网络与伦敦的IPv6相连;也就是说,路由器将一个IPv6数据包放到一个IPv4数据包中。当这个包裹着的数据包到达伦敦路由器,原来的IPv6数据包被提取出来,并被发送到目标主机。
- 可以把通过IPv4网络的路径看作是一根从一个多协议路由器延伸到另一个多协议路由器的大隧道。IPv6数据包只是从隧道的一段旅行到另一端,封装在盒子里。它全然不必担心与IPv4相处的事宜。巴黎和伦敦的主机也不需要担心任何有关IPv4的事情。只有多协议路由器必须了解IPv4和IPv6数据包。
- 隧道被广泛用于连接那些因使用其他网络而被隔离的主机和和网络。结果生成的网络就是所谓的覆盖网络,因为它有效地负载在基础网络之上。部署一个具有新特性的网络协议是采用隧道的一个共同原因,就像我们说明的IPv4之上的IPv6例子。隧道的缺点是无法到达位于隧道之下网络的主机,因为数据包无法从隧道中间逃生。然而,隧道的这个限制变成了虚拟专用网络的优势。VPN就是一个提供安全措施的简单覆盖网络。
4、互联网路由
- 通过互联网络的路由所面临的基本问题与单个网络中路由的基本问题相同,但复杂性有所增加。首先,内部网络可能使用不同的路由算法。例如一个网络可以使用链路状态路由,而另一个网络使用了距离矢量路由。由于链路状态算法需要知道拓扑但距离矢量算法不需要,仅仅这个差异就导致了两个网络都不清楚如何在互联的网络上找到最短路径。
- 网络由不同运营商运行带来了更大的问题。首先,运营商对于什么是通过网络的好路径有不同的想法。一个运营商可能希望用最少延迟的路由,而另一个可能要最便宜的路由。这将导致运营商在设置最短路径成本时使用不同的度量。这些网络上的权重没有可比性,因此互联网上的最短路径将得不到明确的定义。更糟糕的是,一个运营商甚至可能不希望另一个运营商了解它网络的路径细节。因为权重和路径多少反映出一些敏感信息(比如货币成本)。
- 最后互联网可能比构成它的任何一个网络都大。因此,它或许需要采用层次结构的扩展性较好的路由算法,即使没有一个网络需要使用层次结构路由。
- 所有这些因素导致了两级路由算法。在每个网络中,使用一个域内或内部网关协议进行路由(网关是路由器的旧称)。这可能是我们已经描述过的一种链路状态协议。为了让数据包跨越构成互联网的网络,就需要用到域间或外部网关协议。网络可能全部使用不同的域内协议,但它们必须使用相同的域间协议。在Internet上,域间路由协议称为边界网关协议(BGP)。由于每个网络独立于其他网络运营,因此这样的网络通常称为一个自治系统(AS)。AS的默认良好模型是ISP网络。事实上,一个ISP网络或许由多个AS组成,如果它管理或收购了多个网络,但两个之间的差异通常不显著。
- 这两级路由通常没有严格的层次。如果一个庞大的国际网络和一个较小的区域网络都被抽象成一个单一网络,可能导致极不优化的路径。然而,暴露出来的有关网络内部路由信息太少,以至于无法找到互联网络上的路由。但这有助于解决所有的复杂性,改善网络尺度,并允许运营商使用自选的路由协议来自由地选择网络内部的路由,而且不需要比较不同网络的权重或者将敏感信息暴露在网络以外。
- 在Internet上,互联网路由的一大决定性因素是ISP之间的商业安排。每个ISP可能因替其他ISP承载流量而收取或接收相应的费用。另一个因素在于,如果国际互联网络的路由需要跨国界,各国的法律可能有所限制,比如瑞典严格的隐私法律条款禁止出口有关瑞典公民的个人资料。所有这些非技术因素都包括在一个路由器策略概念中,控制着自治网络自主选择所用的路由。
5、数据包分段
- 每个网络或链路都会限制其数据包的最大长度。这种限制来自多方面:(1)硬件(比如以太帧的长度限制)(2)操作系统(比如所有缓冲区都是512字节)(3)协议(比如数据包长度字段中的位数)(4)遵从某个国家(或国际)标准(5)期望将错误引入的重传次数减少到某种程度(6)期望防止数据包占用信道时间太长。所有这些因素导致的结果是网络设计者们无法自由地选择任何他们所期望的最大数据包长度。一些常用技术的最大有效载荷长度:以太网为1500字节,802.11协议为2272字节,IP协议更通用一些,允许数据包的长度最多可达65515字节。
- 主机一般倾向于是传输大的数据包,因为这样可以降低开销,比如浪费头字节上的带宽。当一个大数据包要穿过一个最大数据包尺寸太小的网络时,一个明显的网络互联问题就出现了。一种解决方案是首先确保不会发生这个问题。然而实际上,源端通常不知道数据包通过网络到达接收方的路径,因此它当然不知道到达接收方的数据包尺寸有多小。这个数据包尺寸称为路径最大传输单元(MTU)。即使源端知道路径MTU,数据包在无线网络中也是独立路由的,比如Internet。这种路由意味着路径可能会随时会变(非预定路径),因而意外地更改路径MTU。另一种解决方法是允许路由器将数据包拆分成段,将每个段作为一个独立的网络层数据包发送。不过,数据包交换网络把段重新整合起来也同样麻烦很多。
- 将分段重新组成原始的数据包,可以采用两种对立的策略。第一种策略,由小数据包网络引起的分段过程对于沿途后续的网络都是透明的,也就是说从该网络一直到最终的目标途中的每个网络都感觉不到曾经发生过分段,如图a所示。在这种方法中,当一个数据包到达G1,该路由器将它分割成多个段;每个段都发向同样的出口路由器G2,在这里这些段被重新组合起来。按照这种方法,任何一个数据包通过这样的小数据包网络都是透明的。后续的网络根本感觉不到曾经发生过分段。
- 透明的分段过程非常直接、简单,但是也有一些问题。首先,出口路由器必须知道什么时候它已经接收到了全部的段,所以每个分段中必须提供一个计数字段或者一个数据包结束标志位。其次,由于所有的数据包必须经过同一个出口路由器才能重组,因此路由受到了限制。由于不允许有些段沿着一条路径到达最终目标,而另一些沿着一条不相交路径到达最终目标,所以可能会损失一些性能。更为重要的是,路由器可能不得不做大量的工作。如果不是所有的段都已到达,它还需要缓冲到达的段,并且决定何时丢弃这些段。某些工作可能纯粹是一种浪费,因为当一个数据包需要通过一系列的小数据包网络时,需要多次被分段和重组。
- 另一种分段策略是避免在任何一个中间路由器上重新组合分段。一旦一个数据包已经被分段,则每个段都被当做原始的数据包一样对待。路由器传递这些段的情形如图b所示,重组过程只在目标主机上进行。非透明分段的优点在于路由器所做的工作要少。IP就是以这种方式工作的。一个完整的设计要求分段以可以重新构建原有数据流的方式编号。IP采用的设计思想是:给每个段一个数据包序号(所有的数据包都携带)、一个数据包内的绝对字节偏移量和一个指明是否到达数据包末尾的标志位。图中给出了一个例子。虽然这种设计简单,但有一些吸引人的特性。段到达目的地后可以被放置在一个缓冲区中以便重组,即使这些分段到达的秩序混乱;当段要穿过一个MTU更小的网络时,还可以被路由器再次进行分割,如图c所示;数据包的重传(如果所有的段都没有收到)可以分割成不同的段。最后,段可以任意大小,最小的段是一个字节加上数据包头。在所有情况下,接收方只需简单地使用数据包的序号和段偏移量即可把数据放在合适的位置,并利用数据包结束标志位来确定何时有了一个完整的数据包。(图a:原始数据包,包含10个字节的数据;图b:经过一个最大尺寸为8的网络后分段加上头;图c:经过一个大小为5的网关后的分段)
- 不幸的是,这样的设计还是有问题。因为现在在某些链路上运载的段的头或许是没有必要的。但真正的问题首先还是因为段的存在,因此开销可能比透明分段高。Kent和Motul认为分段不利于性能,因为除了增加头开销,数据包的丢失概率也增加了;任何一个段的丢失都将导致整个数据包的丢失;而且对于主机而言,分比不分带来了更大的突发。这又导致了最初的解决方案,就是在网络中避免出现分段操作,这种策略被现代Internet所采用。这个过程称为路径MTU发现。它的工作原理:每个IP数据包发出时再它的头设置一个比特,指示不允许对该数据包实施分段操作。如果一个路由器接收的数据包太大,它就生成一个报错并发送给源端,然后丢弃该数据包,如图所示。当源端收到报错数据包,它就使用报错数据包携带的信息重新将出错数据包分段,每个段足够小到报错路由器能过处理。如果沿着路径前进又遇到一个MTU更小的路由器,那么重复上述过程。(Windows10命令:打开cmd,键入命令netsh interface ipv4 show subinterfaces查看MTU;ping -l 1472 -f www.baidu.com是指定以一个指定数据部分为1472字节的不分段数据包ping百度,ICMP信息占用8个字节,与1472字节一起填入数据字段,ip数据包有一个定长部分的20字节头,寒注)。
- 路径MTU发现的优点是源端现在知道应该发送多长的数据包了。如果路由器和路径MTU发生改变,新的报错数据包将被触发返回,因而源端将适应新的路径。然而,仍然需要在源端和接收方之间分段,除非更高层次的协议了解MTU,并把适量的数据传给IP。TCP和IP通常是一起实现的,因而能够传递这类信息。即使其他协议不是这样实现的,仍然可以把分段移出网络,让主机承担。
- 路径MTU发现方法的缺点是有可能增加发送数据包的启动延迟。在任何数据被传递到目的地之前,探讨路径并找出该路径MTU所花时间可能需要不止一个往返时间,那么是否有更好的设计?答案很可能:是。考虑这样的设计:每个路由器吧那些超出其MTU的数据包拦腰截断,这样一来确保接收方尽可能快地了解MTU(从传递过来的数据量),同时接受了部分数据。
28、网络互联(网络层)相关推荐
- 互联网络层的内核实现[内核中的路由机制]
内核中网络层3条线: A 主机到网络->互联网络层-->传输层: ip_rcv() -->NF_INET_PRE_ROUTING -->ip_rcv_finish ...
- 计算机网络学习笔记(六)——网络层、虚电路和数据报交换、路由(距离矢量、链路状态算法)、IP编址、网络拥塞控制、网络互联
文章目录 前言 概念 一.网络层相关概述 (一)三大核心功能 (二)通信两大阵营 二.交换技术 (一)交换技术的分类 (二)电路交换和分组交换 (三)虚电路与数据报 三.路由 (一)路由功能概述 (二 ...
- 计算机网络-网络层(网络层功能概述,异构网络互联,路由与转发,SDN基本概念)
文章目录 1. 网络层功能概述 2. 异构网络互联 3. 路由与转发 4. SDN基本概念 SDN控制平面 1. 网络层功能概述 网络层的主要任务是把分组从源端传到目的端,为分组交换网上的不同主机提供 ...
- [渝粤教育] 苏州大学文正学院 网络互联技术与实践 参考 资料
教育 -网络互联技术与实践-章节资料考试资料-苏州大学文正学院[] 计算机网络互联设备随堂测验 1.[单选题]网桥处理的是 A.脉冲信号 B.MAC 帧 C.IP 包 D.ATM 包 参考资料[ ] ...
- 计算机网络(五)——网络互联
互联网的两种工作方式:无连接方式的数据报和面向连接方式的虚电路. 交换和路由 网络互联设备:采用多跳的方式通过许多中间节点相连的网络中的中间节点. 物理层网络互联设备:转发器和集线器---以比特为单位 ...
- 计算机网络技术(五)——网络互联技术
摘要 网络互联概述 网际协议(IP) IP 地址 IP 路由 IP 中的其他协议 IPv6 协议 一.网络互联概述 要让分布在世界各地,不同类型.不同协议的网络相互连接起来,并且能流畅.高效地实现信息 ...
- 网络协议从入门到底层原理(3)网络互联模型、物理层、数据链路层(CSMA/CD协议、Ethernet V2帧、PPP协议)
网络协议从入门到底层原理 网络互联模型(了解请求过程.网络分层) 物理层(Physical) 数字信号.模拟信号 数据通信模型 信道(单工.半双工.全双工) 数据链路层(Data Link) 封装成帧 ...
- 网络互联及Internet
转载自: 尔雅网课,吉林大学计算机网络基础,讲师李晓峰的课程总结 文章目录 广域网概述 TCP IP协议 网络层使用的协议 ARP RARP ICMP IP地址 特殊IP地址 子网掩码 详细介绍子网掩 ...
- 异构网络互联(计算机网络)
目录 一.异构网络互连的复杂性 二.异构网络互连 三.网络互相连接的中间设备 四.路由器互连异构网络 五.网际层的 IP 协议及配套协议 一.异构网络互连的复杂性 1.不同的寻址方案 2.不同的最大分 ...
最新文章
- 电脑启动顺序(以Windows XP为例)
- Bzoj4558 [JLoi2016]方
- 知乎热议:科研界是如何保护自己的成果免于剽窃的?
- debian,ubuntu下安装MariaDB,并设置密码,修改端口,允许外网访问
- AI理论知识整理(10)-向量空间与矩阵(1)
- 服务器端与客户端TCP连接入门(三:多线程)
- every function in scala is an instance of a class
- 交换机工作原理_交换机的作用是什么?
- Ubuntu 11.04 x64 下安装Python
- (大数据工程师学习路径)第五步 MySQL参考手册中文版----MySQL视图
- 清空image画布并改变大小填充背景色
- numpy—np.diag(v, k=0)
- java基于springboot高校后勤报修管理系统
- 在线翻译、词典、离线工具大全
- Android实现思维导图功能,Android实现思维导图
- C语言二维数组传参问题
- 与蜂窝连接的无人机的空地干扰缓解
- KlipC数据显示2022年日元兑美元汇率有进一步下跌的风险和可能性
- 【美团滑块】猫眼下单、点评
- 王者链游西坦竞技场(Thetan Arena)攻略来了