研究PPPOE+LAN之间的切换
在之前我发过一篇pppoe+lan之间切换的文章http://bbs.routerclub.com/thread-17912-1-1.html..在cmd里ping .然后在pppoe和lan之间的切换..是不掉包的..最后测试发现..在玩着游戏..然后把pppoe断开..游戏是断开的..了解到.pppoe断开后..在不到一秒中的时间..lan立即连了...意思就是说这不是切换..而是断了pppoe然后立即连上lan使用.....理论上 游戏服务器 是不知道你的内网IP他只认你的外网IP 既然外网IP没有改变,在切换时又掉线..应该问题出在路由上,
请大家研究一下..希望能找出原因?
[ 本帖最后由 zooyo 于 2006-11-14 14:49 编辑 ] 你再研究一下就会发现,会有一部分游戏会和你说的一样,而另一部分则不是。
通讯比你想像的要复杂一点,例如这里就有可能涉及该通讯属于同步连接还是异步连接。 楼主不要仅仅关心游戏服务器,你自己的电脑也是要接收数据的,断线了,本来该PPPOE SERVER发过来的数据,变成了另外一个服务器发过来的数据了,你要知道,你是经过NAT转发的! .......专卖的理解应该是错的吧,我们来讨论一下。
首先应该知道,无论nat存在与否(包括其他情况例如ppoe、vpn的存在与否),源地址和目的地地址都是不变的。
其次,在本例中ppoe和lan之间切换的变化,究竟是什么变化?是路由的变化,这个也不存在异议吧?
所以应该不存在专卖说的“本来该PPPOE SERVER发过来的数据,变成了另外一个服务器发过来的数据了”,专卖描述的情况,的确存在,但对于客户机来说是不可知的,源地址和目的地地址并没有改变(我这里假设ppoe的ip和lan的ip一样)。线路的改变,作为客户机可以获知的只有路由的改变,但这并不影响通路(但不是不影响通讯,下面会讨论到)。
我2楼描述的情况,实际和编程有关系,编程的时候,打开一个端口通讯,会有两种情况(可选项有很多,我这里描述的只是其中一种),同步连接和异步连接。所谓同步连接,大多数游戏都是用同步连接,大约的意思就是客户机发出一个请求,那么必然要等到服务器返回结果才进行下一步操作(我只能大约描述,实际情况要比这复杂),否则超时,而这种连接模式也叫静态连接(或者别的什么名字),通讯过程中是不可中断的。而所谓异步连接,你可以想像qq的模式,客户机开放端口之后,无论客户机是否发出请求,都有可能收到服务器的消息,而这种连接,即使中途有短暂断开,只要在超时内,依然有效。 学习中,哈哈 不知道这样理解是否恰当。
你的pppoe获得的ip肯定和lan得ip不同,当你pppoe的ip不存在了。那么数据报要通过 以太网协议的 反向arp 来寻找你的mac地址对应得ip地址, 找到之后 nat肯定会有所变化,所以就会断吧?
-
说到nat...路由的pppoe和lan本来同时存在nat ..客户机lan和pppoe同时存在..大家在拨号前和拨号后用route print看一下在这里发现metrci里的值的变化拨号后路由nat给pppoe和lan同时存在..同时工作.lan其实你用不用pppoe,nat都向lan工作.说明.当pppoe断之前.lan都在工作,在客户机切换时为什么断网..有没有可能出现在windows里的协议切换之间..他们基于不同协议的转换.. 希望可以查出原因出在那里~~~这思路不错的~~~ ros和客户机之间的连接方式的变化可能会是一个问题,所以在我后面的解释中,特别加了一句(我这里假设ppoe的ip和lan的ip一样).说实话,我并不确认这部分我的认知是否正确。
不过有几个是基本可以肯定的
1.在lan、pppoe同时存在的情况下,虽然lan可以工作,但所有通讯默认会走pppoe(除非目的地地址在lan子集内)。
2.“当pppoe断之前.lan都在工作,在客户机切换时为什么断网”,对于系统来说,这些ppp协议等于为系统添加了一张有很高优先的虚拟网卡,当他们断开连接的时候,等于实时pnp拔出这张虚拟网卡,基于上一条,所有同步连接当然会全部掉。 假设 LAN 设置固定 IP 为192.168.1.10
PPPoE 从 ROS 那里得到的 IP 为 192.168.1.20
假设开始时使用的是 PPPoE 这条链路,在访问外网时,ROS 做 NAT 时必然要在缓存记录下源 IP 地址 192.168.1.20 ,以便当外网的回应数据回来时可以正确转发给内网中的客户机
如果这时 PPPoE链路断了,LAN 顶上,这个时候客户机的 IP 是 192.168.1.10 ,而 ROS 转发给内网的数据包的目的 IP 是192.168.1.20
-
难处理 肯定会断啊,虽然目的地址,即游戏服务器的IP和端口没变,但是源地址的端口会变啊比如 PPPOE连接是对应的是 192.168.0.100:1600(内网源IP)-211.89.128.119:1700(源公网IP)202.101.224.69:6020(目的公网IP)
PPPOE断线后,LAN的连接会是 192.168.0.100:1400(内网源IP)-211.89.128.119:1500(源公网IP)202.101.224.69:6020(目的公网IP)
经过PPPOE出去的数包,回来,找不到原来的端口,就会断线
除非,你能让你 内网IP和源公网IP的端口保持不变,PPPOE断线后,LAN接着工作,就不会掉线 肯定会断的走的不是一条路啊 你想想.....上面的讲的对 端口不一样的
页:
[1]