性能测试基础---URL和HTTP协议
·URL和HTTP协议:
·URL构成:
URL是web应用进行资源访问的主要方式。一般来说,由五个部分构成:
示例:http://192.168.2.212/phpwind1/searcher.php?keyword=phpwind&type=thread
jdbc:mysql://localhost:3306/testingedu?enableUnicode=true
·协议:protocol,一般来说,在一个URL的起始部分,必然是协议,通常是冒号之前的内容。
一般来说,协议通常都是应用层的协议。
常见的应用层的协议有:
·http
·https http+ssl
·ftp
·smtp
·pop3
·mysql
·oracle
·sql server
·域名:domain、要访问的服务器的名称或者地址。
比如说:www.baidu.com
14.215.177.38
localhost
192.168.2.212
·端口:port、一般来说是跟在域名之后,格式为:"域名:端口"
端口是由服务器决定的,在服务器的配置文件中通常都会指定Listen属性,表示服务器通过该端口提供服务给客户来访问。
PS:如果服务器所用的端口和其所使用的通信协议是默认相关的,则用户在访问的时候,是可以不输入端口的。
常见的协议及其对应的默认端口为:
http 80
https 443or8443
ftp 21
smtp 25
pop3 110
PS:一般来说,此时我们通过URL地址访问到的就是服务器的容器路径。
比如说Apache的DocumentRoot、Tomcat的docBase属性所指定的地址。
我们平时所谓的部署,就是指将开发写好的应用(代码)放到服务器的容器路径下,然后就可以通过URL地址进行访问啦。
·路径:path,通常是指跟在端口之后的内容,有的时候又叫URI。
通常来说就是我们要访问的资源在服务器的根目录(容器目录)下的地址.
一般来说,通过path我们就可以知道我们做了什么事情,比如说是访问了什么资源,还是做了什么逻辑操作。
·URL地址参数:通常以问号作为连接符拼接在URL的最后。通常来说,在很多工具中,该部分是归类在URL或者URL的path部分的。
示例:?keyword=phpwind&type=thread
PS:该部分是键值对应的
采用的是&符号进行连接的。
除了少量的符号,其它特殊字符都是要做urlencode处理的。
浏览器对于URL是有长度限制的。
·HTTP协议详解
·HTTP:超文本传输控制协议。HypeText Transfer protocol
表示我们可以通过该协议传输任何文件的字节信息。
·http协议的特点:
·http协议是一种基于request(请求)和response(响应)的协议。
·http协议是一种简单、快速的协议。
·http协议是一种无连接的协议。
http2.0及以下版本,都是基于tcp协议来实现的。
所谓的无连接是指,http连接关闭,则对应的tcp连接也关闭。
http0.9及http1.0就是无连接的,又叫短连接的。。一个http连接对应一个tcp连接。
http1.1开始,默认就是长连接的,即一个http连接关闭时,对应的tcp连接是可以不关闭的。这个是通过信息头:Connection:keep-alive来实现的。
·http协议是一种无状态的协议。
但是随着人的需求的提升,对于应用我们赋予了更多的含义,不仅仅满足于资源这个定义。请求和请求之间开始建议依赖,最终就引入了类似于Session和Cookie这样的技术来实现状态的记录。
PS:最新的小心,http3.0将会基于UDP协议来进行通信。
·http协议的构成:
http协议由两个部分构成:http request、http response。
·http request:http请求,通常是由三个部分构成:request line、request headers、request body。
·request line:是指请求包的第一行内容,包含以下信息:
request method、request path、protocol/version
示例:GET /phpwind/ HTTP/1.1
·request method:请求方法,是http请求的必选的部分,如果不指定,则使用默认的请求方法get。常用的请求方法有:get、post、put、patch、delete、options、head、trace等。
如果使用的是get方法,则通常parameter会以键值对的方式封装在URL地址参数部分。
如果使用的是post方法,则通常parameter会以键值对的方式封装在request body 部分。
·request path:就是URL的path部分,标识资源或者操作的。
·protocol/version:协议和版本。
请求和响应使用的协议和版本必须一致。
·request headers:请求头,是指从第二行开始到第一个空行为止的部分。
PS:
·请求头的作用是客户端用来发送一些控制和交互信息给服务器的。
·请求头是键值对应的,格式为: "key:value1,value2"
·标准的请求头都是有自身的含义和作用的。
常用的请求头:
·User-Agent:用来告知服务器,客户端的环境的。通常服务器会通过该信息头来识别客户端是否是同一个客户端。而且session和cookie的存储也是和该信息头有关的。如果牵涉到请求之间的依赖,则该请求头建议添加。
·Cookie:cookie本身就是信息头的一部分,只是因为cookie的特殊作用,导致很多抓包工具将之独立出来。
·Content-Type:该信息头是用来告知服务器,客户端所发送的请求主体的数据组织格式。
该信息头的默认值为:application/x-www-form-urlencoded,即请求主体是标准的键值对格式:key1=value1&key2=value2....
目前来说,在实际工作中,除了该类型的数据,比较常见的有:
·application/json
·application/xml;charset=utf-8、text/xml
·multipart/form-data; boundary=---------------------------7e339301d063e
混合表单数据格式,多用于上传文件的情况。boundary叫分隔符,分隔符的值比实际的分隔符要少两个下划线。
对于该类型数据的处理,分为两种情况:
1、工具自己实现参数的封装,然后自动加该信息头,则我们只需要关注数据即可。
2、我们自己实现数据的封装,并且自己指定分隔符。
·request body:请求主体,即我们发送给服务器的body data。
通常来说就是第一个空行之后的所有内容。
内容和格式最终是由产品(应用)自身决定。我们只能去模拟,不能去改变格式。
a=1&b=2 和 {"a":1,"b":2}从技术角度来说这个是一样的,但是根据服务器来制定的规格来说,传的格式不一致,一个是键值对一个是json
·http response:http响应,通常也是由三个部分构成:response line、response headers、response body。
·response line:叫响应行,是指响应数据包中的第一行数据。包含以下信息:
protocol/version、response code、response message
示例:HTTP/1.1 200 OK
·response code:响应代码,又叫状态码(status code),是服务器用来标识服务器对于请求的处理状态的。该状态码仅仅反映的是服务器对于请求的处理的逻辑状态。
PS:状态码通常是由三位长度的数字构成,不同的状态码表示不同的含义,通常来说是以首位数字作为大的分类标识。
1xx:表示一些传递和交互的信息,多见于处理的中间过程,通常不可见。
2xx:表示成功,典型的就是200。
目前来说,绝大多数的应用,为了提升用户体验,都会在服务器端做状态判断处理,不论服务器实际的返回结果是什么,最终返回给客户端的可能都是200.
3xx:表示重定向,
典型的就是301、302、304等。
PS:1xx、2xx、3xx都表示服务器对于请求的处理,在逻辑上是正确的。换一句话说,就是服务器都是正常工作的,没有问题的。
4xx:表示客户端错误。
典型:
·400 发送的数据有问题(格式或者数据本身)
·401 认证,一般来说和token(auth头)等信息头的缺失有关。
·403 权限,一般来说是服务器或者资源的访问权限。
(服务器的配置,操作系统的文件访问权限)
·404 无法找到。
5xx:表示服务器错误。
PS:如果客户提交错误的请求方法、发送了错误的请求信息,其实都是有可能导致5xx的,因此一定要判断到底是封装的请求有问题还是服务器真的有问题。
·response message:响应信息,没有实际的意义,就是用来解释响应代码的。
·response headers:响应头,通常是第二行到第一个空行截止的部分。
格式、作用和请求头类似。
·response body:响应主体,通常是第一个空行之后的所有内容。
表示服务器响应给客户端的主体内容。
cookie为发送的数据,set-cookie为返回的cookie数据
·总结:
URL和http请求的构成影响的主要就是抓包和封装请求。
http响应的构成影响的是脚本的后续处理,比如说关联、比如说断言等。
PS:对于抓包工具来说,往往都会帮我们对抓到的数据包做解析,这只是为了更好的展示数据而已。。。如果要根据抓包数据去封装请求,建议看source或者raw格式的数据。
性能测试基础---URL和HTTP协议的更多相关文章
- django基础(web框架,http协议,django安装)
学习Django之前我们先来看什么是OSI七层模型: 应用层 表示层 应用层(五层模型中把这三层合成一个应用层) http协议 会话层 传输层 提供端口对 ...
- java web基础 --- URL重定向Filter
java web基础 --- URL重定向Filter httpRequest.getRequestDispatcher("/helloWorld").forward(httpRe ...
- Confluence 6 通过 SSL 或 HTTPS 运行 - 为 HTTPS 修改你的 Confluence 基础 URL
在你的浏览器中,进入 > 基本配置(General Configuration). 单击 编辑(Edit). 修改服务器的基础 URL 为 HTTPS.请参考文档 configuring t ...
- 基础url、相对url、绝对url
#基础url.相对url.绝对url #HTTP权威指南 34页 •绝对URL:包含了访问资源所需的全部信息,如:http://www.163.com/new.html •相对URL:去除基础的部分, ...
- 风炫安全web安全学习第三十三节课 文件包含漏洞基础以及利用伪协议进行攻击
风炫安全web安全学习第三十三节课 文件包含漏洞基础以及利用伪协议进行攻击 文件包含漏洞 参考文章:https://chybeta.github.io/2017/10/08/php文件包含漏洞/ 分类 ...
- JMeter之Http协议接口性能测试--基础
一.不同角色眼中的接口 1.1,开发人员眼中的接口 1.2,测试人员眼中的接口 二.Http协议基本介绍 2.1,常见的接口协议 1.:2. :3. :4.:5.: 6. 2.2,Http协议栈 ...
- 性能测试基础-SOCKET协议用例
1.首先在进行性能测试的时候,我们要了解软件的通信协议是什么,我们使用什么协议,如何去模拟.SOCKET协议主要应用于在C/S模式的系统. 作者本人已当初做过的C/S架构的系统做的脚本录制,在上面做脚 ...
- URL和HTTP协议(无图片)
URL...... 示例: http://localhost/phpwind/searcher.php?keyword=phpwind&type=thread 协议部分:一般是指URL中第一个 ...
- JMeter性能测试基础 (1) - 安装及简单使用
Apache JMeter是一款开源性能测试工具,全部功能使用Java编写,可用于进行性能测试.JMeter最初被设计用于Web应用测试,之后被扩展至多个测试领域. Apache jmeter 可以用 ...
随机推荐
- EF Core 多个DbContext迁移命令
如果涉及多个项目,注意保持DbContext所在项目和启动项目关于数据库的包引用版本一致 注意设置不同的DbContext迁移文件目录不同 1.Enable-migrations EntityFram ...
- [LeetCode] 622.Design Circular Queue 设计环形队列
Design your implementation of the circular queue. The circular queue is a linear data structure in w ...
- 【Spring Boot学习之七】自定义参数&多环境配置&修改端口号&yml
环境 eclipse 4.7 jdk 1.8 Spring Boot 1.5.2 一.自定义参数通过注解直接获取配置文件application.properties中配置key的value1.appl ...
- jquery ajax分页写法
jquery ajax分页写法我用的是laypage插件 前端代码<pre> function demo(curr) { $.getJSON('/home/index/getinfo', ...
- Golang-使用mysql
一.安装mysql-driver驱动 go get github.com/go-sql-driver/mysql 二.安装完毕之后,就可以通过go语言操作mysql了 const ( _selectU ...
- MSSQLSERVER 服务运行内存设置较小导致启动服务失败
问题产生原因: 手动设置MSSQLSERVER 运行内存,设置值未达到MSSQLSERVER 服务运行内存最低值(max server memory 所允许的最小内存量是 128 MB.),导致MSS ...
- arc079
D. Decrease (Contestant ver.) 大意: 每次操作选一个最大数$-n$,其余数全$+1$. 要求构造一个序列$a$, 使得恰好$k$次操作后最大值不超过$n-1$. 只要让$ ...
- 打印从1到n位数的最大值
题目: 输入数字n,按顺序打印从1到最大的n位十进制数,如输入3,则打印从1.2.3一直到最大的3位数999 参考大数运算的方法.考虑到位数会很大,所以采用字符串的形式解决.对输入的n,创建一个长度为 ...
- WPF 的 VisualBrush 只刷新显示的视觉效果,不刷新布局范围
原文:WPF 的 VisualBrush 只刷新显示的视觉效果,不刷新布局范围 WPF 的 VisualBrush 可以帮助我们在一个控件中显示另一个控件的外观.这是非常妙的功能. 但是本文需要说其中 ...
- Quartz基础调度框架-第一篇控制台
Quartz基础调度框架 Quartz核心的概念:scheduler任务调度.Job任务.Trigger触发器.JobDetail任务细节 结构 Conf 在这个基本结构里 是用来存放配置 publi ...