Jmeter测试TCP协议,不知道怎么测

本文主要介绍如何使用JMeter对TCP协议进行测试

一、TCP概念

二、TCP协议的三次握手

三、TCP取样器参数介绍

四、Wireshark抓包和开发TCP脚本

--------------------------------------------------------------------------------------------------------------------------

一、TCP概念

1. TCP(Transmission Control Protocol 传输控制协议)是一种面向连接的、可靠的、基于字节流的传输层通信协议,在简化的计算机网络OSI模型中,它完成第四层传输层所指定的功能,用户数据报协议(UDP)是同一层内另一个重要的传输协议。数据传输时,应用程序向TCP层发送数据流,TCP就会将接受到的数据流切分成报文段(会根据当前网络环境来调整报文段的大小),然后经过下面的层层传递,最终传递给目标节点的TCP层。为了防止丢包,TCP协议会在数据包上标有序号,对方收到则发送ACK确认,未收到则重传。这个步骤就是我们通常所说的TCP建立连接的三次握手。同时TCP会通过奇偶校验和的方式来校验数据传输过程中是否出现错误。

二、TCP协议的三次握手

1. 第一次握手:客户端发送syn包(seq=x)到服务器,并进入SYN_SEND状态,等待服务器确认;
2. 第二次握手:服务器收到syn包,必须确认客户的SYN(ack=x+1),同时自己也发送一个SYN包(seq=y),即SYN+ACK包,此时服务器进入SYN_RECV状态;
3. 第三次握手:客户端收到服务器的SYN+ACK包,向服务器发送确认包ACK(ack=y+1),此包发送完毕,客户端和服务器进入ESTABLISHED状态,完成三次握手。
4. 握手过程中传送的包里不包含数据,三次握手完毕后,客户端与服务器才正式开始传送数据。理想状态下,TCP连接一旦建立,在通信双方中的任何一方主动关闭连接之前,TCP 连接都将被一直保持下去。

 

5.实际抓包验证:

三、TCP取样器参数介绍

1.打开jmeter,点击测试计划>>添加>>配置元件>>TCP取样器配置

 

 

 2.TCP Sampler提供了3个报文编码类型的实现,分别是

 TCPClient classname:

  代表了你发出去的TCP报文是什么格式的,Jmeter自己提供的是实现了三类:

  TCPClientlmpl: 以文本编辑中所编辑的纯文本为内容进行发送。这是最简单的实现类,就是基础的文本,可以设置他的编码格式。一般用来发json串。

  BinaryTCPClientlmpl:这个是用来发送十六进制报文的时候,在classname里设置成BinaryTCPClientlmpl,他能将十六进制报文转换成二进制,

  LengthPrefixedBinaryTCPClientlmpl在BinaryTCPClientlmpl基础上默认以发送内容的长度为字节前缀进行填充。

3.1)Re-use connection:如果选中,连接会一直处于打开状态,否则读取到数据之后就关闭。

 2)Close connection:如果选中,在TCP Sampler运行完毕之后就会关闭。

   3)SO_LINGER:该配置项用于控制在关闭连接之前是否要等待缓冲区中的数据发送完成。如果SO_LINGER选项指定了
值,则在得到关闭连接的请求之后还会等待指定的秒数以完成缓冲区中数据的发送,在指定的SO_LINGER秒数完成后,
关闭连接。因此,如果你把该选项设置成0,那么所有连接在收到关闭连接的时候都会立即关闭,避免产生很多处于
TIME_WAIT状态的套接字。

   4)End of line(EOL) byte value:响应数据的最后2位,转换为10进制的值。取值区间[-128,127]

 5)Connect Timeout:与服务器套接字应用连接超时时间(毫秒)。
    6)Response Timeout:响应超时时间(毫秒),这个值的设置跟End of line(EOL) byte value有
关系,如果End of line(EOL) byte value中的值设置不正确,会导致JMeter一直在等待无法结束,
但是如果指定了Response Timeout这个值的话,在到达这个值的时候就关闭连接。
    7)设置无延迟:是否需要使用该选项,需要跟实际的业务情况结合。

 

posted on 2020-07-24 17:02  星空6  阅读(1948)  评论(0编辑  收藏  举报

导航