目录
架构体系及相关知识
·三层架构:
·四层架构:
·常见的应用的模式:
OSI模型
分层
数据链路层
TCP/IP模型
TCP和UDP都是传输层的协议
TCP三次握手、四次次分手
URL&HTTP协议详解
网址URL 结构化
报文行
报文头
空行
报文体
Content-Type
user-agent:
portocol:协议
domain:域名
·port:端口,是由服务器所设定的,用于监听和接收客户端请求的端口。
·path:路径,是跟在端口之后的部分。
get和post方法的联系和区别:
·request headers:请求头,是指请求数据包中从第二行到第一个空行截至的部分。
·Content-Type:是用来告知服务器,请求主体中的数据组织格式的。
·request body:请求主体。是指请求数据包中从第一个空行开始到最后的所有内容。
·http response:http响应,是指服务器处理请求之后的返回数据。
状态码是三位长度的数字,根据首位数字的不同,可以分为5类。
·response headers:响应头,是指响应数据包第二行开始到第一个空行截至的部分。
·response body:响应主体,是指响应数据包中第一个空行之后的所有内容。
Webservice的优点?
http协议与webservice协议的区别?
架构体系及相关知识
·三层架构:
典型的系统设计都是三层架构
·client 客户端
·server 服务器
·database 数据库
·四层架构:
在web应用中演变为四层架构:
·客户端
·web服务器
·应用服务器
·数据库
·常见的应用的模式:
·B/S模式:browser/server(浏览器/服务器),又叫web应用
·C/S模式:Client/Server(客户端/服务器),客户端是指专属客户端。
·P2P模式:point to point(peer to peer),点对点,即无中心(服务器)模式。
OSI模型
分层
应用层:http/https 协议 ssh协议 smtp协议 ftp 文件传输(所有的应用程序都工作在应用层)
表示层:是用来数据处理的。
会话层:建立通信会话(连接)。
传输层:tcp udp(user datagram protocol)协议。 ssl或TLS协议是在传输层的。
网络层:ip 协议。 用于在网络中查找主机。
数据链路层:用来实现物理和逻辑的映射。(·MAC地址的分配 ·交换机)
物理层:牵网线等等。
数据链路层
规定了前**位是地址,**位是数据,
以太网协议:一组电信号,构成一个数据包也称为帧。每一帧分为报头和数据
报头:固定18个字节,发送者6个字节,接受者6字节,数据类型6个字节。
数据:最短46个字节,最长1500个字节。包含了具体发送的内容。
mac地址:
以太网协议中的地址。
mac地址是每台计算机唯一的物理地址,被写在网卡上。
以太网协议规定,每一台可以发送和接收数据的设备都必须装有网卡。接收地址和发送地址指的是网卡地址
查看物理地址
win+r打开cmd命令行,输入cmd。输入ipconfig /all 查看物理地址
mac地址前三位厂家号,后三位流水号
交换机
用来构成电脑之间的局域网,研究的是mac地址,可以识别网卡山过的mac地址。有了mac地址,就可以实现通信。没有网络是可以通过广播通信。
缺点:数据量特别大时,互相传递信号时,造成数据干扰,称为广播风暴。
TCP/IP模型
分为四层:应用层、传输层、网络层、网络接口层
分为五层:应用层、传输层、网络层、数据链路层、物理层
-
TCP和UDP都是传输层的协议
TCP:面向连接协议。虚电路协议
UDP:面向无连接协议。用户报协议
TCP三次握手、四次次分手
TCP三次握手、四次次分手(ACK:确认,SYN:同步,SEQ:序列号,FIN:断开)
三次握手:基于双向确定原则(ACK:确认,SYN:同步,SEQ:序列号)
A请求B连接(SYN=1,seq=x)
B同意建立连接,并返回消息给A(ACK=1,SYN=1, seq=y,ack=x+1)
A告知B已经收到确定消息(ack=1 syn=x+y)
四次分手::基于双向确定原则 (ACK:确认,FIN:断开)
A先B发送断开连接请求FIN
B向A发送同意(ACK=FIN+1)
B向A发送断开连接的请求FIN1
A向B发送同意 (ACK1=FIN1+1)
URL&HTTP协议详解
网址URL 结构化
https://www.cnblogs.com/breka/p/11635540.html
接口报文分为:请求和返回。
HTTP报文格式
请求报文【请求行、请求头部、空行、请求体】
响应报文【状态行、响应头部、空行、响应体】
报文分为:请求和返回。固定格式是:报文行 报文头 空行 报文体
返回行:协议版本 状态码 状态码说明。
请求行:http方法 url地址 协议版本。
四大天王: 查 增 改 删
http方法:get post put delete
请求行:由请求方法、URL、HTTP协议版本字段 3 个部分组成,之间使用空格隔开。
请求头:请求头部由关键字/值对组成 常见(User-Agent、Host、cookie)
空行:最后一个请求头之后是一个空行,发送回车符和换行符,通知服务器以下不再有请求头;
请求体:请求包体不在 GET 方法中使用,而是在POST 方法中使用。(content-type)
请求关注四要素:http方法 url地址、请求头、请求体 、content-type请求格式为重
URL:统一资源定位符,是很多协议用来实现去请求服务器的方式。
示例: http://192.168.2.104/phpwind/read.php?tid=9139
一般来说,一个URL地址会包含五个部分:
·protocol
·domain
·port
·path
·URL paramters
Http协议格式为:报文行、报文头、空行、报文体
http请求报文格式(请求行、请求头、空行 和 请求包体)和响应报文格式(状态行、响应头部、空行 和 响应包体) - 鹿野之城 - 博客园
接口报文分为:请求和返回。
HTTP报文格式
请求报文【请求行、请求头部、空行、请求体】
响应报文【状态行、响应头部、空行、响应体】
报文分为:请求和返回。固定格式是:报文行 报文头 空行 报文体
返回行:协议版本 状态码 状态码说明。
请求行:http方法 url地址 协议版本。
四大天王: 查 增 改 删
http方法:get post put delete
请求行:由请求方法、URL、HTTP协议版本字段 3 个部分组成,之间使用空格隔开。
请求头:请求头部由关键字/值对组成 常见(User-Agent、Host、cookie)
空行:最后一个请求头之后是一个空行,发送回车符和换行符,通知服务器以下不再有请求头;
请求体:请求包体不在 GET 方法中使用,而是在POST 方法中使用。(content-type)
请求关注四要素:http方法 url地址、请求头、请求体 、content-type请求格式为重
报文行
请求行:由请求方法、URL、HTTP协议版本字段 3 个部分组成,之间使用空格隔开。
报文头
请求头:请求头部由关键字/值对组成 常见(User-Agent、Host、cookie)
空行
空行:最后一个请求头之后是一个空行,发送回车符和换行符,通知服务器以下不再有请求头;
报文体
请求体:请求包体不在 GET 方法中使用,而是在POST 方法中使用。(content-type)
Content-Type
Content-Type:请求体的格式。是由服务器和客户端共同约定
常见的:
application/x-www-form-urlencode: 指定请求体格式为
url编码格式:键=值&键=值
application/json:json格式传参 {"键":值,"键":值}
text/xml: xml格式的请求体。 <键>值</键>
multipart/form-data: 文件上传的常用格式。
text/plain text/html:其实就是表示对应格式的文本。
user-agent: 指定客户端版本,有时候某些接口必须指定相应客户端。
cookie: 在cookie机制下用来记录用户的状态。
user-agent:
user-agent:指定客户端版本,有时候某些接口必须指定相应客户端。
cookie:
cookie:在cookie机制下用来记录用户的状态。
portocol:协议
portocol:协议:所谓协议就是指通信的双方对于数据的组织格式、含义、规程等所做的一个约定。
TCP/IP模型中每一层都会有一些专门的协议来保障通信的实现。
理论上来说,性能测试(接口)脚本的实现是可以在任意一层去模拟实现的。
从实现难度来说,越接近于用户的越容易实现。因此一般我们都是从应用层的协议着手去实现。
常见的应用层协议有:
·http
·https: http+ssl
·ftp
·ssh
·smtp
·pop3
·mysql
·oracle
·MS SQL
domain:域名
domain:域名,是指我们要访问的服务器的地址or名称。
域名是://之后的部分。
域名可以是真实的机器名,也可以是IP地址,也可以是虚拟的域名。
示例:
www.baidu.com
192.168.2.104
·port:端口,是由服务器所设定的,用于监听和接收客户端请求的端口。
端口可以通过修改服务器的配置文件来进行变更。
可用端口是0--65535.
一般我们可以通过命令:netstat -an来查询本地端口的使用情况。
端口和域名的写法是固定的:
domain:port
PS:
·如果服务器的监听端口和其所提供的服务所采用的通信协议是默认的对应关系,则用户在使用URL访问服务器时,端口部分是可以省略不写的。
常见的应用层协议及其默认通信端口对应关系如下:
·http 80
·ssl 443or8443
·ftp 21
·ssh 22
·SMTP 25
·pop3 110
·oracle 1521
·mysql 3306
·MS SQL 1433
·path:路径,是跟在端口之后的部分。
是我们要访问的资源(静态、动态)在服务器的容器目录下的路径(不包含容器目录)。
一般来说,path的名称和我们要访问的资源有关或者和我们要访问的服务(接口)有关。
·URL parameters:URL地址参数,是指以?作为连接符,拼接在path之后的部分。
·URL地址参数本身采用的是键值对应的方式来传输数据。即 key=value的格式。
·不同的键值之间使用&作为分隔符。
·严格来说,URL地址参数也是算作path的一部分的。
·HTTP协议:HypeText Transfer Protocol,超文本传输协议。
·http协议的特点:
·http协议是一种基于request(请求)和response(响应)的协议。
http协议适用于任何的C/S架构的产品。
·http协议是一种简单、灵活的协议。
·http协议是一种快速的协议。
http1.0及以前的版本,http协议是一种短连接的协议。
http1.1及以后,http协议是一种长连接的协议。
·短连接:
一个http请求的建立会申请一个tcp连接,http请求结束之后,tcp连接会被关闭。
·长连接:
一个http请求会申请一个tcp连接,但是http请求结束之后,tcp连接不会关闭,可以在当前tcp连接的基础上去实现更多的http请求的建立。
是通过http请求头:Connection:keep-alive来实现的。
·http协议是一种无状态的协议。
在web2.0时代,为了保障交互设计的实现,引入了session和cookie机制来实现状态的记录。
·http协议详解:
http协议分为两个部分:http request、http response
·http request:http请求,影响的是我们的性能测试脚本的实现。
http请求分为三个部分:
·request line:
·request headers:
·request body:
·request line:请求行,是指请求数据包中的第一行内容。
示例:
GET /phpwind/read.php?tid=9139 HTTP/1.1
请求行包含以下信息:
request method、request path、protocol/version
·protocol/version:协议和版本。
·request path:请求路径,是指url中的path和URL地址参数。
·request method:请求方法。所有的http请求都需要指定请求方法,如果没有指定,则默认的请求方法为get。
常见的请求方法有:get、post、put、delete、patch、trace、options等。
PS:
·(接口)请求使用何种方法是由接口、产品本身来决定的,是由服务的开发者、提供者来决定的。
get和post方法的联系和区别:
get和post方法都是请求方法。
get和post方法都可以向服务器发送、传递参数。
- get方法传递参数时,参数是以URL地址参数的方式来实现。
- post方法传递参数时,参数是默认封装在request body中的,又叫data数据部分。
- 一旦request body有值,则一定要指定请求头Content-Type,用来告知服务器,请求的主体的数据组织格式是什么样子。
- 因为浏览器本身的限制(非协议限制),URL地址长度是有上限的,且URL传值是必须做urlencoding的处理的。导致很多web应用在传递复杂、大量的数据的时候,都会采用post方法,而不采用get方法。
- 因为get方法获取的数据在客户端默认是缓存的,而post方法获取的数据在客户端默认是不缓存的,这就导致post方法比get方法更加安全。
·request headers:请求头,是指请求数据包中从第二行到第一个空行截至的部分。
·请求头是客户端用来和服务器进行控制信息、交互信息的交互的,通常和业务本身无关。
·请求头是键值对应的,格式:
请求头名称: 请求头的值。
·标准的请求头都是有其特定的含义的。
·User-Agent:简称UA头,是客户端用来告知服务器,客户端的一些标准配置信息。作用有两个:
·服务器可以根据UA头的不同来做来源判断和响应适配。
·UA头会影响到session和cookie的处理。
一般建议:将真实抓包中的UA作为全局请求头放在脚本中。
·Accept-Encoding:是用来告知服务器,客户端所支持的压缩格式有哪些。
如果请求头中包含Accept-Encoding,则服务器会压缩响应再返回。
如果请求头中没有Accept-Encoding,则服务器不会对响应进行压缩。
·Content-Type:是用来告知服务器,请求主体中的数据组织格式的。
如果请求主体中有值,则该信息头必加。
该信息头的值是由接口、抓包来决定,而不是由测试人员来决定。
对于请求主体的抓包处理,一定要切记在raw或者source模式下进行。
·状态相关的头:比如说cookie、token、author...
这种除了标准的cookie头不需要处理,其它一般都需要做关联处理。
·request body:请求主体。是指请求数据包中从第一个空行开始到最后的所有内容。
·请求主体一般来说,就是非get方法由用户发送给服务器的数据。
·一旦请求主体有值,则一定要指定请求头Content-Type的值。要求一致。
·请求主体的数据组织格式、Content-Type的值由接口本身决定,我们不能自行修改。
·http response:http响应,是指服务器处理请求之后的返回数据。
http响应包含三个部分:
·response line:
·response headers:
·response body:
·response line:响应行,是指响应数据包中的第一行内容。
示例:
HTTP/1.1 200 OK
包含以下信息:
protocol/version、response code、 response message
·protocol/version:协议/版本
·response code:响应代码,又叫status code,状态码。
是服务器返回给客户端的,用来告知客户端,服务器对于请求的处理状态。
处理状态只代表通信逻辑层面的状态,和业务状态无直接关系。
状态码是三位长度的数字,根据首位数字的不同,可以分为5类。
·1xx:表示连接建立过程中的交互信息。
·2xx:典型的就是200,表示服务器对于请求的处理是成功的。
·3xx:表示重定向。
PS:1xx、2xx、3xx都表示请求是成功的。
·4xx:表示客户端错误。
404:path出问题。
·5xx:表示服务器端错误。
PS:4xx和5xx都是表示脚本不成功。在调试阶段,绝大多数情况下,都是因为脚本本身的处理不当导致。
PS:状态码只是逻辑层面的对和错,业务是建立在通信逻辑基础之上的。
我们的接口测试工具基本上都会自动对状态码进行检测,1xx、2xx、3xx会标识为成功,45xx、5xx会标识为失败。我们只需要对业务进行检测即可。一般建议检测key,而不是value。
·response message:响应信息,即ok这种。
是服务器用来描述响应代码的文字信息,没有任何实际的意义。
·response headers:响应头,是指响应数据包第二行开始到第一个空行截至的部分。
一般来说,响应头中包含的就是服务器反馈给客户端的一些服务器信息等交互信息。
·set-cookie:服务器是通过该响应信息头来返回cookie给客户端。
对于该信息头来收,Jmeter只需要添加配置元件--http cookie管理器即可自动处理。
·其它的携带状态信息的响应信息头,则需要进行关联处理。
·response body:响应主体,是指响应数据包中第一个空行之后的所有内容。
一般来说,响应主体是指服务器对请求的处理结果。
对于响应主体,我们主要需要考虑的就是响应的编码及解析问题。
通常我们要判断请求是否成功(业务层面),就需要对响应主体做出判断。
Webservice的优点?
(1)接口中实现的方法和要求参数一目了然。
(2)不用担心大小写问题。
(3)不用担心中文 urlencode 问题。
(4)代码中不用多次声明认证(账号,密码)参数。
(5)传递参数可以为数组,对象等。
http协议与webservice协议的区别?
(1) 获取信息的方式不一样
(2) 传输的信息不一样
windows 关闭自动更新功能
https://product.pconline.com.cn/itbk/top/1589/15890764.html
首先需要通过快捷键【win】+【R】键打开运行对话框,输入gpedit.msc,打开本地组策略,在本地组策略中依次展开【计算机配置】-【管理模板】-【Windows组件】-【Windows更新】,将右侧的【配置自动更新】设置为禁用,然后再找到【删除使用所有Windows更新功能的访问权限】,点击启用,后点击确定即可。
https://zhuanlan.zhihu.com/p/561087294
同时按下键盘Win+R,打开命令行对话框,执行services.msc命令,点击【确定】。在【服务(本地)】右侧界面中,选择【Windows Update】后,右键此选项选择【属性】。在属性界面下,选择【常规】-【服务状态】-【停止】。继续在属性界面下,选择【恢复】-【第一次失败】-【无操作】-【确定】。