HTTP介面和UDP介面流量差異比較

2021-06-11 17:06:09 字數 2355 閱讀 6253

有個手機軟體需要很頻繁的呼叫伺服器端介面,你知道的,每個位元組都是錢呀,錢呀錢,命相連呀。本來已經有個現成的tomcat的http(get/post)的介面,但是擔心流量消耗太大,需要做個評估,看是採用http介面,還是使用多執行緒的socket udp介面,於是就有了下面這一出。

序號工具

描述1.          

nclinux下的著名socket除錯瑞士軍刀,系統自帶

2.          

tcpdump

linux下抓包工具,系統自帶,不過需要root許可權

3.          

wget

linux下http的呼叫工具,系統自帶

4.          

sockettools

wins綠色版本的socket除錯工具,這個在上次講loadrunner的socket指令碼錄製裡面提到過使用方法

5.          

wiresharkportable.exe

6.          

winscp.exe

ssh連線linux,使用sftp協議傳回抓包檔案

第一部分:

socket(udp)通訊過程消耗位元組數測試方案:

1.        linux上開啟抓包:sudotcpdump -i eth0 -n -vv -v -s 0 -w ***x.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 == *** and ip.dst == yyy and ip.proto == 17

ip.proto == 17 這個就是udp協議,將***和yyy替換成你的源和目標位址

結果:就乙個udp資料報:52+24=76個位元組,也就是說如果你傳送24個位元組,附帶上包頭什麼的一共76個位元組,沒資料就52個位元組。

第二部分:

http通訊過程消耗位元組數測試方案:

1.        linux上進行抓包:sudotcpdump -i eth0 -n -vv -v -s 0 -w ***x.cap

2.        linux上wget呼叫url:wget url

3.        停止抓包;

4.        使用winscp傳回資料報進行分析

結果:過濾條件表示式1:ip.src == *** 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 == ***

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做後台服務吧;

如果你的手機軟體打算盡可能多的消耗流量,就別用udp了。

這個是純理論推導的,可能真到用的時候,電量消耗比流量消耗還要命。

http介面和webservice介面的區別

什麼是web service?soap請求是http post的乙個專用版本,遵循一種特殊的xml訊息格式content type設定為 text xml任何資料都可以xml化。為什麼要學習web service?大多數對外介面會實現web service方法而不是http方法,如果你不會,那就沒有...

webservice介面與HTTP介面

推薦文章 真的寫的很詳細 webservice介面與http介面區別 http介面走http協議,通過路徑來區分呼叫方法,請求報文一般是key value形式的,返回報文一般是json串,常用的是get和post方法來請求。webservice介面走的soap協議,通過http傳輸,請求報文和返回報...

介面和http協議(一)

一 介面 硬體介面和軟體介面 軟體介面 前台和後台傳遞資料的通道 api web api http api 和 其他api 我們通常所說的api就是web api http api,需要聯網,需要使用web協議,而其他api不需要聯網,不需要使用web協議,比如os.path.abspath 此處就...