loadrunner下websocket协议性能测试(二)
loadrunner下websocket协议性能测试(二)文章目录loadrunner下websocket协议性能测试(二)前言一、loadrunner中data.ws对首次握手报文组装二、loadrunner中data.ws对websocket报文的组装总结前言第一章简单介绍了websocket性能测试中会用到的基本只是,本章讲一下websocket发送报文的组装一、loadrunner中dat
loadrunner下websocket协议性能测试(二)
文章目录
前言
第一章简单介绍了websocket性能测试中会用到的基本只是,本章讲一下websocket发送报文的组装
一、loadrunner中data.ws对首次握手报文组装
组装前报文:
GET / HTTP/1.1\r\n
Host: 127.0.0.1:8080\r\n
Connection: Upgrade\r\n
Pragma: no-cache\r\n
Cache-Control: no-cache\r\n
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/96.0.4664.45 Safari/537.36\r\n
Upgrade: websocket\r\n
Origin: http://www.jsons.cn\r\n
Sec-WebSocket-Version: 13\r\n
Accept-Encoding: gzip, deflate\r\n
Accept-Language: zh-CN,zh;q=0.9\r\n
Sec-WebSocket-Key: qLMMVPoUmsjl5U3PxypGbQ==\r\n
Sec-WebSocket-Extensions: permessage-deflate; client_max_window_bits\r\n
\r\n
data.ws组装后报文
send buf0 244
"GET / HTTP/1.1\r\n"
"Host: 127.0.0.1:8080\r\n"
"Connection: Upgrade\r\n"
"Pragma: no-cache\r\n"
"Cache-Control: no-cache\r\n"
"User-Agent: Mozilla/5.1 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/92.0.4515.107 Safari/537.36\r\n"
"Upgrade: websocket\r\n"
"Origin: http://coolaf.com\r\n"
"Sec-WebSocket-Version: 13\r\n"
"Accept-Encoding: gzip, deflate\r\n"
"Accept-Language: zh-CN,zh;q=0.9\r\n"
"Sec-WebSocket-Key: qLMMVPoUmsjl5U3PxypGbQ==\r\n"
"Sec-WebSocket-Extensions: permessage-deflate; client_max_window_bits\r\n"
"\r\n"
详解:
send: 表示这是一条发送的报文
buf0:报文的唯一标识,后续lrs_send中,使用该标识进行发送
244:代表发送报文的长度,要与实际相符
下面为头信息,在key-value对两侧加引文双引号,\r\n不可以省略
二、loadrunner中data.ws对websocket报文的组装
websocket组装前报文(头部分):
websocket组装前报文(body部分):
封装后报文
send buf1
"\x81\x7e\x03\x57"
"this is a test(后续字符串太多不再粘贴)"
send: 表示这是一条发送的报文
buf1:报文的唯一标识,后续lrs_send中,使用该标识进行发送
头信息部分:
详解:
\x81: 原报文直接复制过来即可
\x7e: 第二位原报文为\xfe,对应二进制为11111110,其中Mask对应的值为1,此时代表发送报文需要掩 码加密处理,由于处理起来麻烦,所以我们把Mask的值改为0,改后二进制为01111110,转换为十六进制后为7e
注意:此处因为报文长度超过了126所以payload length被设置为了126,实际报文长度用Extended payload length来表示,如果长度小于126则长度即为payload length的实际值,无需Extended payload length,这时报文头部应该为\x81\xnn(nn代表实际值)
规则:
当payload实际长度超过126(包括),但在2^16-1长度内,则将payload len置为126,payload的实际长度由长为16bit的extended payload length来表达。(所以上图出现了payload len和extended payload length都为126的奇怪表达方式,哈哈,本来可以只用payload len一个字节表达的,结果变为了3个字节)
当payload实际长度超过2^16(包括) ,但是2^64-1长度内,则将payload置为127,payload的实际长度由长为64bit的extended payload length来表
\x03\x57: Extended Payload length的长度,为实际报文的长度
大家会发现头部分a6c8dda8,并没有写入loadrunner中data.ws的头部分,这是因为上面我们把Mask的值已经调整为0,所以无需掩码处理,所以Masking-key可以直接忽略掉
body部分直接放在下一行的双引号中间即可,注意:放直接在json.cn对实际的报文进行转义处理
总结
本章讲了websocket报文在loadrunner中的组装,ws协议主要关注的点有Mask的值和payload length的值,下一章会讲解webscoket写loadrunner中脚本的编写
更多推荐
所有评论(0)