探索接入网和网络运营商——接入网中使用的PPP和隧道

1、用户认证和配置下发:

ADSL和FTTH接入网中,都需要先输入用户名和密码(运行商分配给用户的),登录之后才能访问互联网,而BAS就是登录操作的窗口。BAS使用PPPoE(Point-to-Point Protocol over Ethernet,以太网的点对点协议)方式来实现这个功能(也有一些运营商使用PPPoA方式)。

PPPoE是由传统的电话拨号上网上使用的PPP协议发展而来的。在使用电话线或者ISDN拨号上网时,PPP的工作方式如下图所示:

TA :连接ISDN的一种终端设备

TA的功能就是使得现有的非ISDN标准终端(例如模拟话机、G3传真机、分设备、PC机)能够在ISDN上运行,为用户在现有终端上提供ISDN业务。TA设备还提供接口和PC机相连,类似外置modem,为PC机提供64K/128K数码信道。TA和ISDN卡的区别就像外置Modem和内置Modem的区别。外置的就是TA,内置的就是ISDN卡。

在拨号连接时,可以根据电话号码来改变接入点,而不同的接入点具有不同的IP地址,因此无法事先在计算机上设置这个地址。

2、在以太网上传输PPP消息:

在ADSL和FTTH中,用户和BAS之间是通过电缆或光纤固定连接在一起的,因此没有必要验证用户身份,也就不需要PPP的所有这些功能。然而,通过用户名和密码登录的步骤可以根据用户名来切换不同的运营商,这很方便。因此,接入网运行商在ADSL和FTTH中一般也会使用PPP(也有一些运营商使用DHCP方式来向客户端下发IP地址等配置信息)。当然拨号上网的PPP是无法直接用于ADSL和FTTH的。

在此之前,先来了解PPP协议是如何传输的。传输PPP消息的思路和将IP包装入以太网包中传输是一样的。PPP协议中没有定义类似以太网中的报头和FCS等元素,也没有定义信号的格式,因此无法直接将PPP消息转换成信号来发送。要传输PPP消息,必须有一个包含报头、FCS、信号格式等元素的“容器”将PPP消息装在其中。在拨号接入中PPP借用了HDLC协议(High-level Data Link Control,高级数据联接控制)作为容器,而HDLC协议原本是为在专线中传输网络包而设计的,拨号接入方式对这一规格进行了一些修正。最终,PPP消息传输就如下图所示:

对于ADSL和FTTH而言,由于不能使用HDLC,因此需要寻找另一个机制作为替代HDLC来装载PPP协议。此外,以太网和PPP在设计上有所不同,为了弥补这些问题就重新设计了一个新规格,这就是PPPoE。

3、通过隧道将网络包发送给运营商:

所谓隧道,就类似于套接字之间建立的TCP连接。如果在BAS和运营商路由器之间的ADSL/FTTH接入服务商的网络中建立一条隧道,将用户到BAS的接入网连接起来,就形成了一条从用户到运营商路由器的通道,就可以进入互联网内部了,这样的机制就类似于将接入网一直延伸到运营商路由器。

隧道的实现方式有很多种,TCP连接就是其中的一种。除此之外还有例如基于封装的隧道实现方式,这种方式是将包含头部在内的整个包装入另一个包中传输到隧道的另一端。

4、接入网的整体工作过程:

接入网的工作从用户端的互联网接入路由器进行连接操作开始。首先,接入路由器中需要配置运营商分配的用户名和密码。然后,接入路由器会根据PPPoE的发现机制来寻找BAS。这一机制和ARP一样是基于广播来实现的,通过该机制得到BAS的MAC地址。上面的这个过程就相当于拨号上网中拨通电话的动作。

接下来,就进入用户认证和下发配置的阶段。这里主要分为两个重点,第一个重点是用户名和密码如何发给BAS。这里有两种方式,一种是将密码进行加密的CHAP(Challenge Handshake Authentication Protocol,挑战握手认证协议)方式,另一种是不加密的PAP(Password Authentication Protocol,密码验证协议)方式。进行加密的CHAP方式显然更加安全,但是PAP方式也不一定就立刻会被窃取,除非在路由器和ADSL Modem中间进行窃听,或者爬到电线杆上安装窃听装置拾取电缆中泄漏的电磁波(这对于光纤是没用的,因为光纤不会泄漏电磁波)。第二个重点是在校验密码之后BAS如何向用户下发TCP/IP配置信息。这里下发的配置信息包括分配给上网设备的IP地址、DNS服务器的IP地址以及默认网关的IP地址。

接着,客户端就会开始发送用来访问互联网的网络包,只不过在通过路由表判断转发目标之后,包不是按照以太网规则转发,而是按照PPPoE规则转发。PPPoE包如下图所示:

最后,网络包会到达BAS,而BAS会将MAC头部和PPPoE头部去掉,去除PPP头部以及后面的部分,然后通过隧道机制将包发送出去。PPP包会沿隧道到达另一端的出口,也就是网络运营商的路由器。

5、不分配IP地址的无编号端口:

当采用一对一连接,也就是两台路由器的端口用一根线直接连接起来的情况下,一端发送的包肯定会到达另一端,那么这种情况下就没必要按照路由表查询默认网关来判断转发目标地址了。那么,网关的地址也就没什么用了;那么,目标路由器的端口也用不着分配IP地址了(PPPoE是工作在以太网上的协议,可以通过集线器与路由器和BAS连接,因此从物理层面的连接形态来看并不是一对一的。不过,通过发现机制开始和BAS通信后,逻辑层面上就是一对一通信)。

以前,即便是在上面的场景中,还是会为每个端口分配IP地址,然而,当公有地址越来越少时,就提出了一个特例,即一对一连接的端口可以不分配IP地址。这种方式称为无编号。这种情况下,BAS下发配置信息时就不会下发默认网关的IP地址。

6、互联网接入路由器将私有地址转换成公有地址:

前面提到过,BAS会向用户端下发TCP/IP的配置信息,如果将这些信息配置在计算机上,就相当于计算机拥有了公有地址,这种情况下不需要进行地址转换也可以访问互联网。TCP/IP原本的设计就是这样的。然而,如果使用路由器来上网,BAS下发的参数就会被配置在路由器上,而且公有地址也是分配给路由器的。这样一来,计算机就没有公有地址了。

这时,计算机会被分配一个私有地址,计算机发送的包需要通过路由器进行地址转换然后再转发到互联网中。Web和邮件等应用程序不会受到地址转换的影响,但有些应用程序会因为地址转换无法正常工作,这是因为有些应用程序需要将自己的IP地址告知通信对象或者控制服务器,但在有地址转换的情况下这些操作可能无法完成。

7、除PPPoE之外的其他方式:

首先,我们先来看看使用PPPoA(Point-to-Point Protocol over ATM)方式的ADSL接入网。ADSL使用PPPoE方式时,是先将PPP消息装入以太网包中,然后再将以太网包拆分并装入信元(如下图所示)。

与PPPoE最本质上的区别也就是加不加MAC头部和PPPoE头部的区别。由于PPPoA没有MAC头部,所以PPP消息是无法通过以太网来传输的,这就意味着需要和BAS收发PPP消息的设备,也就是计算机和路由器,必须和ADSL Modem是一体的,否则PPP机制就无法工作了。

一般我们将ADSL Modem和路由器整合成一台设备。当然,也有使用USB接口连接的方式,只是最终没有普及。

正如我们之前提到的,当由于地址转换产生问题时,这种方式就不容易处理了,因为我们无法抛开路由器用计算机直接上网。

当然,PPPoA相比PPPoE也有一些优势。PPPoE方式在传输信息时,需要添加PPPoE头部和PPP头部,这意味着MTU就相应变小了,这可能会降低网络效率。而PPPoA不使用以太网包来传输PPP消息,因此不会发生MTU变小的问题。

PPPoE会降低网络效率,PPPoA也有ADSL Modem和路由器无法分离的限制,这两个问题其实都是由PPP引起的。因此,有一些运营商不适用PPP,他们使用DHCP协议(Dynamic Host Configuration Protocol,动态主机配置协议)从BAS向用户端下发TCP/IP配置信息。

首先,客户端请求配置信息,然后DHCP服务器下发配置信息。非常简单,不需要像PPP那样需要多个步骤,也不需要验证用户名和密码。没有用户名和密码,就意味着无法通过用户名来切换运营商网络,但这种方式也有优势,它可以单纯地直接传输以太网包,不需要添加额外的PPP头部,因此不会占用MTU(如下图所示)。

此外,DHCP的运营商使用的ADSL Modem也和PPPoE、PPPoA方式不同,这种ADSL Modem不使用信元,而是直接将以太网包调制成ADSL信号,因此没有ADSL Modem和路由器无法分离的问题。

猜你喜欢

转载自blog.csdn.net/qq_38386085/article/details/100996380