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了。

 

这个是纯理论推导的,可能真到用的时候,电量消耗比流量消耗还要命。