主 题: GPRS私有IP地址被外界访问问题?
作 者: volvoxc90 ()
GPRS终端拨号上网分配临时地址IPa,对应GGSN网关地址IPb+端口P访问外部如果外部IPb知道IPb和P,与之通讯是否就是直接与IPa通讯????? IPa怎样主动得知IPb和P呢?如果有多层代理,IPa有没有办法得知最后的(即直接连接公网的)代理中相应的地址与端口呢?端口P是有时效的,IPa超时无通讯会被视为不在线,P被释放,既然GPRS号称永远在线,应该在拨号上网到主动下网之间IPa不变,端口P不变吧??
回复人: hecrics(路飞) ( ) 信誉:100 2004-3-18 17:40:52 得分:0
据我所知(不知正确与否): 1、拨号上网后,网关会保存一个ip与端口对的列表,数据不可能直接从外面进来,一定要终端先访问外面,得到一个端口+IP对后,外面的数据从原路返回,终端才能收到数据。(具体为什么要这样就不清楚了) 2、IPa得到IPb是在PPP协议中得到的吧
回复人: shoumingli1224() ( ) 信誉:99 2004-3-19 13:55:53 得分:0
我理解的永远在线应该是指动态IP的不变。我从我作实验的结果得到的,开始光听说GPRS永远在线,但不知道到底是什么概念。我用的手机当上线后会有标志的。而此时已经获得了IP。即此时进入了数据传输状态(但不是IP数据传输状态)。我长时间不发数据,会得到NO CARRIER的回应。但我手机上却一直是在线的状态标志。用AT查发现IP没有变化。当然也许我观察的时间较短。我会继续验证的。
回复人: coolgh007() ( ) 信誉:115 2004-3-21 15:08:00 得分:0
长时间不发数据就会掉线了,ip是在,可是发送和接收不了了,就需要有个数据包在不断的发送和接收,问过移动的了 回复人: MyNetworks(华为CTO) ( ) 信誉:100 2004-3-22 11:34:58 得分:0 楼主说的有些混乱,我的理解是不是就是如下关系: IPa <----> IPb,P <----> IPc 如果是这样的话,IPa需要主动和IPc联系,这样IPc才可能知道IPb和P,因为IPb和P都是动态的,每次拨号上网的时候都不一样,IPc无法预知。多次代理是一样的道理,IPc得到的就是最后一次代理的IP和Port。还有需要注意的是,IPa一般是不可能知道IPb和P的,对它看来,自己就是在和IPc直接通信,并不知道有个端口映射的处理。 GPRS规范中常说的永远在线是指IPa不变,并不是IPb和P,PDP上下文激活之后,MS得到一个动态的、内部的IPa,只要PDP没有去活,这个IPa永远不会变,用户可以抗着IP到处跑。至于IPb和P,就象上面有朋友讲的那样,GGSN有超时机制,如果一定时间内对于端口P没有数据流量,会取消这个映射,这样IPc就不能访问到IPa了,只能等到IPa重新发送一个IP包激活一个新的端口映射。所以如果要实现IPa和IPc之间持续的通信的话,IPa需要每隔一定时间就发包维持端口映射,就象在LAN中使用QQ一样。
回复人: fyhui(一只小猫) ( ) 信誉:100 2004-3-27 10:44:26 得分:0
有一个解决办法,就是GPRS上线以后先发一个注册信息到数据中心.这样数据中心就有了网关对应的IP地址和端口号,但是这个端口号是有时效的.这样内网的GPRS终端就需要每隔一段时间发送一次注册信息到数据中心,间隔时间要够短.这样网关应该可以保持端口不变.
回复人: kitty781027(靖靖) ( ) 信誉:100 2004-4-5 10:36:36 得分:0
一点体会我用G20来上公网与外界连接如果用UDP协议的话,端口大约每35秒就变化了如果用TCP协议的话,端口一般可以保持,测试时,我大约10分钟的时候会发一包数据。
回复人: sss2002() ( ) 信誉:100 2004-4-13 20:43:42 得分:0
由于 GPRS 本身是数据分组模式,所以,当某设备不使用端口时,将被其他设备占用,所以端口的时间长短并不固定。 另外,IP 地址是由 GPRS 网关动态分配的,所以 IP 地址也是不确定的,如果要公网访问 GPRS 设备,那么需要该 GPRS 设备先连接到公网设备 IP ,这样公网设备才知道 GPRS 设备的临时 IP 和端口(注意,这个IP 实际是 GPRS)
回复人: sss2002() ( ) 信誉:100 2004-4-13 20:46:22 得分:0
由于 GPRS 本身是数据分组模式,所以,当某设备不使用端口时,将被其他设备占用,所以端口的时间长短并不固定。 另外,IP 地址是由 GPRS 网关动态分配的,所以 IP 地址也是不确定的(10 开头),如果要公网访问 GPRS 设备,那么需要该 GPRS 设备先连接到公网设备 IP ,这样公网设备才知道 GPRS 设备的临时 IP 和端口(注意,这个IP 实际是 GPRS 网关的IP,211开头),如果是 TCP 连接,那么只要反向发送数据即可,如果是 UDP 方式,只需要向该 IP 和 端口发送数据即可。 此时,GPRS 网关实际就是带有端口映射的路由器。
回复人: kitty781027(靖靖) ( ) 信誉:100 2004-4-16 11:43:41 得分:0
端口能够保持的时间的确不是一个确数。我测试时,曾间隔10分钟,20分钟,30分钟,40分钟,50分钟发送数据上下通信可以保持超过一个小时数据无法通信不过在程序仿真的时候,设置50分钟上报一次数据时往往是与中心无法通信而且经常是打开了一个SOCKET,也发送了数据,但是中心不能收到,一段时间之后模块会接收到SOCKET已关闭的命令。不知道这个原因是由模块引起的还是由网络