HTTP接口和UDP接口流量差异比较
来源:互联网 发布:淘宝怎么抢网红现货 编辑:程序博客网 时间:2024/05/18 21:08
有个手机软件需要很频繁的调用服务器端接口,你知道的,每个字节都是钱呀,钱呀钱,命相连呀。本来已经有个现成的tomcat的http(get/post)的接口,但是担心流量消耗太大,需要做个评估,看是采用http接口,还是使用多线程的socket udp接口,于是就有了下面这一出。
相关工具:
序号
工具
描述
1.
Nc
Linux下的著名socket调试瑞士军刀,系统自带
2.
Tcpdump
Linux下抓包工具,系统自带,不过需要root权限
3.
Wget
Linux下http的调用工具,系统自带
4.
Sockettools
Wins绿色版本的socket调试工具,这个在上次讲loadrunner的socket脚本录制里面提到过使用方法
5.
WiresharkPortable.exe
Wins下的抓包及分析工具,我只下载了一个绿色版本的分析工具,不能抓包
6.
WinSCP.exe
Ssh连接linux,使用sftp协议传回抓包文件
第一部分:
SOCKET(UDP)通讯过程消耗字节数测试方案:
1. Linux上开启抓包:sudotcpdump -i eth0 -n -vv -v -s 0 -w xxxx.cap
2. Linux(nc)启动udp服务器端:nc -4 -u-l 2389
3. Window7家庭版32bit启动sockettools.exe启动udp客户端建立连接;
4. 客户端发送24个字节;例如:[ 0319B38ED7, 056243F315, 1A56AEF715]
5. 客户端中断连接;
6. 停止抓包
7. 使用winscp传回数据包进行分析。
来,看看结果吧:
用WiresharkPortable.exe打开数据包,先得过滤一下:
过滤条件表达式:ip.src == xxx and ip.dst == yyy and ip.proto == 17
ip.proto == 17 这个就是udp协议,将xxx和yyy替换成你的源和目标地址
结果:
就一个udp数据包:52+24=76个字节,也就是说如果你发送24个字节,附带上包头什么的一共76个字节,没数据就52个字节。
第二部分:
HTTP通讯过程消耗字节数测试方案:
1. Linux上进行抓包:sudotcpdump -i eth0 -n -vv -v -s 0 -w xxxx.cap
2. Linux上wget调用url:wget url
3. 停止抓包;
4. 使用winscp传回数据包进行分析
结果:
过滤条件表达式1:ip.src == xxx and ip.dst == yyy
TCP发出7个包,有1个数据包(因为是附带的HTTP包头,所以不能省略):
SYN:74
ACK:66
PSH,ACK:241
ACK:66
ACK:66
FIN,ACK:66
ACK:66
合计:
74+66+241+66+66+66+66=645
过滤条件表达式2:ip.src == yyy and ip.dst == xxx
TCP 收到5个包,有两个数据包:
SYN,ACK:74
ACK:66
PSH,ACK:1090:数据包:假定只带和上次一样的http包头,计为241个字节
PSH,ACK:785:数据包
FIN,ACK:66
合计(如果不包含数据):
74+66+241+66=447
如果不包含数据总共:645+447=1092
最后结论:
http接口底层是tcp协议的,设计就是稳定可靠的传输,加上包上了http一层,每次调用的流量比简单的udp调用要大很多,简单的说就是:1092/52=21,刚好21倍。调用1次http接口相当于调用21次udp接口。
假定手机每5秒调用一次接口,一分钟12次,每天调用2个小时,那么每个月消耗:
UDP: 52*12*60*2*30=2246400=2.246m
HTTP: 2246400*21=47174400=47.174m
如果你的手机软件打算节约流量,就用多线程的udp做后台服务吧;
如果你的手机软件打算尽可能多的消耗流量,就别用udp了。
这个是纯理论推导的,可能真到用的时候,电量消耗比流量消耗还要命。
- HTTP接口和UDP接口流量差异比较
- HTTP接口跟UDP接口流量差异比较
- webServcie 接口和http接口
- 接口和委托比较
- http接口和webservice接口的区别
- C#比较接口和排序
- 抽象类和接口比较
- Comparable和Comparator接口比较
- TCP和UDP差异
- 部署和访问HTTP接口
- HTTP接口
- http接口
- Java平台中接口和抽象类的差异分析
- RESTful和REST-RPC接口风格的差异与实现
- 处理IHttpHandler和IHttpModule接口来做流量分析系统
- UDP套接口相关
- UDP套接口编程
- USocket UE4TCP UDP接口
- 设计模式C++实现(3)——建造者模式
- SQL— CONCAT(字符串连接函数)
- SQL SERVER Protocals
- 把序列 调整成堆 的代码
- Silverlight 中Binding 的使用
- HTTP接口和UDP接口流量差异比较
- signal()设置信号的处理
- unix编程艺术
- android 中如何监听耳机键消息
- poj 2404 中国邮递员
- foreach(int i in a);for(int i : a);
- jqGrid 各种参数 详解
- 获得样式属性和外联样式
- 织梦DEDECMS dede:arclist,dede:list获取附加表字段内容