引言
接口测试是测试系统组件间接口的一种测试,主要用于检测外部系统与系统之间以及内部各个子系统之间的交互点。
一、什么是协议?
双方沟通之后达成的约定
网络协议
通信计算机需要遵循的一组约定,只有遵循了这些约定,才能够正常通信。
通信是数据从源到目的的传输,体现在的网络上就是数据包。
二、OSI分层模型
国际标准化组织ISO提出的概念模型,开放系统互连参考模型。
目的:保证不同系统的计算机能够相互通信
为什么要分层?
网络传输本身非常复杂,为了解决复杂问题,采用分层的概念,每一层负责独立具体的功能,再把这些分层组合起来,最终实现模块化,复杂问题简单化。每一层为上层提供服务,使用下层的服务。
OSI七层模型详解
- 应用层:为网络用户提供应用程序
- 常见协议:HTTP,FTP,SMTP
- 示例:我在咸鱼上架了一个人体工学椅
- 表示层:数据转化,压缩和加密解密
- 常见协议:ASCII,JPEG
- 示例:把椅子拆解,包装起来,带上一份组装说明书
- 会话层:建立、管理和终止会话连接
- 常见协议:SQL,RPC
- 示例:有人下单了,会话开始,等到对方收获,会话结束
- 传输层:建立端口和端口之间的连接,为会话层提供可靠传输。
- 常见协议:TCP,UDP
- 示例:快递公司,负责把货物从西安送到上海。
- 网络层:建立主机与主机之间的连接,为数据传输进行网络路由选择(选择主机到主机间最短/最快的路径)
- 常见协议:IP,ICMP
- 示例:快递公司确定了起始点和终点,选择出最短/最快的路径进行包裹发送
- 数据链路层:物理寻址,为网络层提供传输服务
- 常见协议:HDLC,PPP
- 示例:快递员通过电话和姓名联系到我们,取走快递,交给快递点。。。。到了目的地之后,快递员取走快递,交给对方。
- 物理层:数据传输介质,进行实际的数据传输
- 常见协议:RJ45,RS-232
- 示例:快递飞机,火车,小三轮等设备
TCP/IP模型
由OSI模型简化而成,并不是只有TCP、IP协议,只是说因为TCP/IP协议比较有代表性所以如此命名
- 应用层:对照的是OSI模型的应用层、表示层和会话层,为网络用户提供应用程序,负责一切与应用程序相关的功能
- 协议:HTTP,SMTP,FTP
- 传输层:为应用层提供可靠的数据传输
- 协议:TCP,UDP
- 网络层:实现网络间的寻址和数据传输
- 协议:IP,ICMP
- 网络接口层:确定数据传输的物理设备,进行实际的数据传输
OSI模型与TCP/IP模型的比较
- OSI七层模型,TCP/IP四层模型
- OSI模型复杂,TCP/IP模型相对简单
- OSI模型先提出模型,后由协议;TCP/IP模型现有协议和应用,后来参照OSI模型提出TCP/IP模型
- OSI模型理想化,一直未被完整实现;TCP/IP模型是现行互联网的标准模型
三、HTTP协议
超文本传输协议,属于应用层协议,是Web通信的基础
URL:
统一资源定位符
格式:http://(协议)1. www.baidu.com(主机, 也可以是IP地址)1. :80(端口)1. /path(资源路径)1. ?k=v&k=v(查询参数)1. #hash(锚点)
请求响应模型
浏览器访问页面,或者点击页面上的按钮,会发送请求到服务器,服务器根据请求参数返回响应给浏览器,这就是请求响应模型。
请求过程(从浏览器输入URL点击回车,到浏览器显示内容,中间发生了什么?)
1. 浏览器输入URL,点击回车
2. 域名解析(DNS解析):将域名转化为IP地址
- 先去查找浏览器DNS缓存
- 查找本地计算机的hosts映射记录
- 查看DNS服务器获取
3. 建立TCP连接(三次握手)
4. 浏览器发送HTTP请求给服务器,服务器根据请求参数进行逻辑处理,然后返回结果给浏览器
5. 根据实际情况断开或者维持TCP连接(connection:keep-alive)
6. 浏览器根据响应内容,渲染页面
7. ajax异步请求,根据结果局部刷新页面
HTTP报文
- 请求报文
- 请求行(请求方式 URL 协议版本 回车换行)
- 请求头(字段名:字段值 回车换行)
- 空行
- 请求正文
- 响应报文
- 响应行(协议版本 响应码 响应码的描述 回车换行)
- 响应头(字段名:字段值 回车换行)
- 空行
- 响应正文
HTTP特点
- 客户端/服务器模式(请求响应模式)
- 简单快速:请求只需要请求方式和请求URL,结构简单,响应快速
- 灵活:支持多种数据格式,只要声明Content-Type值
- 无连接:每次连接只处理一个请求,服务器收到客户端的应答之后,就会断开连接
- 无状态:每次请求服务器都会把它当作一个独立请求,不会记录之前的连接信息
- 明文传输:HTTP不支持数据加密,会带来安全问题
有状态的HTTP(HTTP状态保持)
cookie:在客户端保存用户信息
客户端携带登录信息发送请求到服务器,服务器验证通过之后生成用户cookie返回给客户端,客户端将cookie存储下来,在之后的请求中携带cookie数据,达到身份验证的目的。
缺点:
1. 存储在浏览器本地的cookie可能泄露用户信息
2. cookie数据过多会影响网络传输效率
session:在服务端保存用户信息
客户端携带登录信息发送请求到服务器,服务器验证通过之后在服务端生成用户的session,然后将sessionid返回给客户端,客户端将sessionid存储下来,在之后的请求中携带sessionid,服务端通过服务器存储的session信息验证用户身份。
缺点:
1. 用户登录信息过多时,会影响服务器性能
2. 后台服务多个实例运行的情况下,需要考虑共享session的问题
token:令牌
客户端携带登录信息发送请求到服务器,服务器验证通过之后会生成一个token字符串,然后将token字符串返回给客户端,客户端将token存储下来,在之后的请求中携带token,服务端可以验证token是否可用,如果token可用,就返回正常响应结果。