为什么拨号得到的32位掩码的IP可以上网?

为什么拨号得到的32位掩码的IP可以上网?
2008-04-17 23:00

ADSL自动分配的是私网IP,而且子网掩码是32位的

PPPOE拨号后得到的地址是32位掩码,网关与IP地址相同都是正确的,原因和BAS(接入服务器)的工作原理有关。BAS的主要功能有两个
1)终结PPPOE的session,给发送请求的主机分配IP地址。
2)转发上网流量
我们分析一下PPPOE用户上网的过程,首先用户会在主机上运行PPPOE拨号程序(如ETHERNET600或XP自带的拨号程序),拨号的主要目的就是拿到IP地址,请求到达BAS后,在BAS上会配置的PPPOE Server负责回应请求,进行认证检查(最基本的就是看用户名密码是否正确),决定是否给发送请求的主机分配IP地址。认证通过后BAS就从IP POOL(IP地址池)中挑选一个地址发给主机,这个地址就是你看到的掩码32位的地址。
马上回答你的第一个问题,掩码为什么是32位,网关为什么是自己?
前面提到了主机地址是从IP POOL中得到的,IP POOL一般都配成一段地址,如一个或半个C类地址等等。
所有的PPPOE拨号主机的地址都从IP POOL中分配,对于主机来讲32位掩码地址已经足够,并不影响正常通讯,打个比方,router的Loopback0地址是32位掩码的,我们经常用这个地址作为telnet,Ftp的通讯地址,主机用32位掩码地址的道理与Loopback0地址类似,它并不影响服务。还有就是为了节约地址资源,大家知道如果掩码是30位的话,4个地址中要浪费两个地址作为网络地址和广播地址,主机地址只能用另外两个。32位掩码节约了大量的地址资源。至于网关和地址为什么一样,我想它没法不一样,呵呵。

主机得到地址后,网关是自己,那它如何通讯呢?
这就是BAS的基本功能了,主机拨号得到地址后,就相当于与BAS直连的一个虚端口,BAS上面增加一条针对主机地址的直连路由。然后我们分析上网的过程,主机开始发送数据包,数据包到达BAS,BAS此时就象一个router,它检查从主机过来的数据包中的目的地址,如果路由表中有针对此目的地址的条目,那么BAS将数据包发送到下一跳,如果没有,BAS按照缺省路由指定的下一跳转发。通常主机发送的数据包都是按照缺省路由转发的,除非是连到同一个BAS的两个PPPOE主机之间的通讯。
现在我们知道主机发出的数据包如何被转发了,那么回到主机的数据包怎么办呢?
很简单,通常来讲,BAS上面就是router,在router上面做一条针对IP POOL的静态路由,指到BAS,然后将它发布到internet。这样,目的地址是某PPPOE主机的数据包首先会到达BAS,然后BAS会按照32位掩码地址将其转发给指定的主机。
路由器的POS接口地址掩码是30位是因为它需要和对端互通,30位掩码是最合适的,够用而且不浪费。
ARP表中不显示应该是因为POS接口是点对点通讯,不象ethernet是点到多点的通讯,需要知道每个MAC地址与IP地址的捆绑关系。有的设备POS接口是有MAC地址的,但是在ARP表中只会显示本地POS接口和IP地址的捆绑关系,不象ethernet接口,即有本地接口的MAC地址与IP地址的捆绑关系,又有通过ARP学习到的对端地址的MAC地址与IP地址的捆绑关系。

你可能感兴趣的:(工作原理,程序,上网,主机,IP地址)