51学通信技术论坛

 找回密码
 立即注册
搜索
查看: 7988|回复: 5
打印 上一主题 下一主题

移动的私有代理协议X-Online-Host [复制链接]

Rank: 9Rank: 9

懒

跳转到指定楼层
楼主
发表于 2011-6-3 19:57:52 |只看该作者 |倒序浏览
一键分享 一键分享
   众所周知,在国内的GPRS网络环境下,用户以cmwap接入点上网的情况居多。cmwap是中国移动的GPRS代理上网,因此在创建连接的时候,必须采用代理的方式进行连接。
假设我连接的URL为:
http://wap.uc.cn/
在标准代理中,是这样子的:
Conection to 10.0.0.172:80
GET
http://wap.uc.cn/ HTTP/1.1
Host: wap.uc.cn

   但是在J2ME中,程序并不能控制到TCP层,因此中国移动定义了一个私有协议字段:X-Online-Host。从移动要求的规范来看,我们只需要这样即可正常进行联网:
Conection to 10.0.0.172:80
GET / HTTP/1.1
Host: 10.0.0.172
X-Online-Host: wap.uc.cn
   实际上对于程序来说,我们只需要将原来连接的url及http header中的host替换成10.0.0.172,并添加一个http header字段:X-Online-Host,值为原来的host。然后继续采用直连的方式即可正常进行联网。

   这样问题就来了,很明显这是一个不标准的代理协议,不标准的地方在于:
GET / HTTP/1.1
   因为在标准的代理协议规范中,定义了请求的必须是完整的URI。
   这个问题在平常并不会出现,但是当请求的URL比较特殊时,问题就很明显了。
假设我连接的URL为:
http://wap.baidu.com/logo.gif?img=http://wap.uc.cn/uc.png
使用X-Online-Host协议的联网:
Conection to 10.0.0.172:80
GET /logo.gif?img=http://wap.uc.cn/uc.png HTTP/1.1
Host: 10.0.0.172
X-Online-Host: wap.baidu.com
   这样的请求到达移动网关之后,会被误发至
http://wap.uc.cn/uc.png。但是实际上我们想要请求的是http://wap.baidu.com/logo.gif (?之后的表示变量)。
   因为,移动网关实际上就是一个HTTP的代理服务器,它对于X-Online-Host协议是这样处理的:
   截取请求头中的URL字段:
1)如果没有http://字段的话,则将该字段作为相对URI,同X-Online-Host字段进行补全;
2)如果有http://字段的话,则将该字段作为绝对URI,将host替换为X-Online-Host的值。

www.gprshome.com: GPRS及移动通信技术学习交流分享平台。

Rank: 3Rank: 3Rank: 3

沙发
发表于 2012-2-29 23:04:35 |只看该作者
这样的请求到达移动网关之后,会被误发至http://wap.baidu.com/uc.png。但是实际上我们想要请求的是http://wap.baidu.com/logo.gif (?之后的表示变量)。
因为,移动网关实际上就是一个HTTP的代理服务器,它对于X-Online-Host协议是这样处理的:
截取请求头中的URL字段:

使用道具 举报

Rank: 4Rank: 4Rank: 4Rank: 4

板凳
发表于 2012-4-10 17:57:10 |只看该作者
本帖最后由 Mr_Muscle 于 2012-4-10 18:09 编辑

在理论分析的基础上加上个数据包,希望能有助于大家的理解。


附件: 你需要登录才可以下载或查看附件。没有帐号?立即注册
生活是一段一段的~

使用道具 举报

Rank: 7Rank: 7Rank: 7Rank: 7Rank: 7Rank: 7Rank: 7

版主

地板
发表于 2012-8-22 02:07:48 |只看该作者
Mr_Muscle 发表于 2012-4-10 17:57
在理论分析的基础上加上个数据包,希望能有助于大家的理解。

兄弟,第一个包下不来。

使用道具 举报

Rank: 2Rank: 2

5#
发表于 2013-8-1 14:22:34 |只看该作者
爱总 第一个包不能下载啊,我想看第二种情况的 插入x-online-host的情况

点评

admin  好像是下不下来哦。不过真抱歉,目前没办法解决。这个包不是我发的哦。  发表于 2013-8-3 21:49:24

使用道具 举报

Rank: 6Rank: 6Rank: 6Rank: 6Rank: 6Rank: 6

6#
发表于 2014-5-28 16:31:56 |只看该作者
有几个疑问:
1.是不是说用户一旦使用CMWAP并设置10.0.0.172作为代理,X-Online-Host字段就是必选的?
2.用户在使用WAP上网时,http get请求消息是如何判断是否携带X-Online-Host字段,是浏览器智能判断吗?
3.在X-Online-Host字段存在时,Request URI字段的内容是否有“http://”

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

站长邮箱|Archiver|51学通信 ( 粤ICP备11025688 )

GMT+8, 2024-11-26 14:57 , Processed in 0.028050 second(s), 15 queries .

Powered by Discuz! X2

© 2001-2011 Comsenz Inc.

回顶部