上节我们介绍了网络包在局域网内的传输,本节将介绍网络包如何进入互联网以及在互联网中如何传输。
我们知道互联网是由众多设备如路由器,交换机和计算机通过通信线路(如网线,光纤等)连接组成。而这些设备按区域划分为一个个子网,这些子网由多个网络运营商管辖(或者说这些设备是由网络运营商管理和架构的)。
一个局域网内可以有一个或多个路由器,例如一个家庭安装了一个路由器,那么这个家庭里的设备如手机,电脑,电视和路由器以及网线组成了一个小的局域网;一个公司里有上百上千台计算机设备,可能安装多个路由器,组成了一个较大的局域网。
局域网内部可以有多个路由器,而不同网络运营商之间也会有众多路由器相互连接,使得包通过路由器的多次转发能够跨网络运营商传输。
计算机发出的网络包会先经过局域网内的路由器,局域网内的路由器通过以太网协议识别和解析网络包,并将其转发到下一个路由器,直到这个包到达“互联网接入路由器”时,这个路由器就会将包发送到互联网中,交由互联网中其他子网的路由器转发直到到达目标地址。
简单的来说,网络包在局域网内的传输和在互联网中传输本质上都是通过路由器根据网络包IP头部查询路由表判断出下一跳网关并转发。不同的是互联网中传输包的协议不再是以太网协议,而是需要根据接入网规则来发送包。
所谓的接入网就是连接互联网与某一局域网(如家庭或公司)的通信线路。局域网内可能使用的以太网或无线局域网,而互联网接入网常见的有ADSL、FTTH、电话线和专线等。
·网络包通过接入网路由器传输到运营商路由器
这里我们以ADSL为例
我们主要关注红框的部分。
互联网接入路由器(后面简称为接入路由器)就是我们所说的路由表中的默认网关,是局域网通向互联网的出入口(具体来说是通向运营商路由器的出入口),上节介绍的将私有地址转为公有地址就是由接入路由器完成的。对于家庭而言,我们家里摆放的路由器就是接入路由器,家里连接到这个路由器的设备就是一个局域网内的客户端设备。
BAS是宽带接入服务器(本质也是一种路由器),用于用户认证和配置下发。
用户认证:首先接入路由器需要配置运营商分配的用户名和密码。计算机连网的时候会发送网络包经过接入网路由器时,接入网路由器会将用户名和密码信息封装到PPPoE和PPP头部中带给BAS服务器,BAS就可以对其进行认证。
配置下发:BAS服务器在认证用户后会下发分配给计算机的IP地址以及下发本地DNS服务器的IP地址以及默认网关的IP地址给客户端计算机。
隧道是一条连接BAS和运营商路由器的通道,网络包要按照运营商规定的规则封装头部再通过隧道传输。
隧道是一种抽象概念,并不是一条真正的通道。隧道有多种实现方式,一种方式是通过在BAS和运营商路由器之间建立TCP连接,通过两台设备的套接字作为端口传输数据;还有一种方式是基于封装,将网络包封装到另一个包传输。
·网络包在运营商内部
运营商内部的网络由POP(入网点)和NOC(网络运行中心)的众多路由设备组成,如下图所示:
上面我们说到网络包从局域网中的接入路由器传输到运营商路由器,此时网络包就算到达了运营商内部。
运营商路由器存放于网络运营商的入网点(POP),每一个POP会包含很多与用户接入网路由器相连的运营商设备,运营商路由器就是其中之一。
POP中的运营商路由器根据接入网类型的不同而不同,如下所示:
红框部分即用户接入网与之连接的运营商路由器,一个POP内的这样的路由器有很多很多,一个运营商路由器会配备大量的端口和线路连接到多个用户的接入路由器。多个运营商路由器会连接到POP的一个(或多个)骨干网路由器,并且会把他们接收到的网络包转发给骨干网路由器,骨干网路由器负责将该POP入网点的所有用户网络包转发给NOC网络运行中心。骨干网路由器处理和转发的网络包远比与用户接入路由器相连的运营商路由器多,因此其性能也要求比它们高。
运营商的NOC接收与之相连的所有POP入网点转发过来的包,并且会把这些包转发到运营商内其他的POP(如果包的目标主机也在本运营商的服务下)或者转发到其他运营商的NOC(如果包的目标主机在其他运营商下)。NOC也可以配备连接用户接入路由器的路由器,很多情况下NOC和POP是共用的。
总而言之,POP和NOC实质上就是大量运营商的高性能路由器的集合。而且这些高性能路由器之间会使用传输速度更快的光纤来连接和传递网络包。
·路由信息交换
运营商的路由器可以和其他路由器交换路由信息并从而更新自己的路由表,通过这一功能路由信息实现自动化管理。
POP根据包中的目标IP判断下一跳路由,可能会转发到NOC也可能转发到相邻的POP。
对于服务器和客户端所在运营商为同一个运营商的情况,NOC会保存自己运营商下所有的路由信息,因此将包传递给位于同一运营商的服务器主机不是问题。
但对于服务器和客户端所在运营商不是同一个运营商的情况也不必担心,因为不同运营商之间的路由器也会交换路由信息。运营商之间的NOC会连接,并交换双方的路由信息,而且不用担心某个运营商A没有与另一个运营商B交换路由而导致包发送不到目标地址的情况,运营商在进行路由交换时会避免这种情况出现,如果一个运营商走不过去可以走 另一个运营商,总之无论网络包要发送到什么地方,都会确保能够获取相应的路由信息。如果某个运营商做不到这一点,那它也就该倒闭了。
对于图中运营商C和D这种一对一连接,现在也会有这种使用方式,但是如果运营商间都一对一连接,那么线路会非常的多,因此需要设置一个中心设备,通过连接到中心设备来减少线路数量,这个中心设备被称为IX。
IX的核心是具有大量高速以太网端口的二层交换机。
总而言之,运营商之间可以直接连接也可以通过IX连接,无论哪种方式,网络包都会最终到达服务器所在的运营商,通过POP进入服务器端的网络。