顾老师新书《全栈软件测试工程师宝典》css
https://item.m.jd.com/product/10023427978355.htmlhtml
之前两本书的网上购买地址:web
《软件测试技术实战设计、工具及管理》:数据库
https://item.jd.com/34295655089.html跨域
《基于Django的电子商务网站》:浏览器
https://item.jd.com/12082665.html安全
来源:51testing
服务器
今天给你们分享的内容是接口测试必备的网络基础知识:osi七层模型与tcp/ip协议,http协议及状态码,cookie、session与token机制。微信
OSI7层模型与TCP/IP协议cookie
OSI7层模型是由国际化标准化组织OSI定义。
由上至下:应用层,表示层,会话层,传输层,网络层,数据链路层,物理层。
TCP/IP协议
tcp/ip体系结构:分为应用层、传输层、网络层和数据链路层。
TCP:是一种面向链接的、可靠的、基于字节流的传输层通讯协议。
TCP三次握手
目的是确认客户端与服务器的发送与接收是否正常。
发送方:喂,听获得吗?
接收方:听获得,你听获得我吗?
发送方:听到了,咱们能够说话了。
TCP四次挥手
发送方:我全部东西都说完了
接收方:我已经所有听到了,可是等等我,我还没处理完
接收方:好了,我处理了
发送方:好的,咱们通讯结束!
UDP协议
UDP用户数据报协议,是一种无链接、不可靠的传输层协议。
当报文发送以后,是没法得知其是否安全完整到达的。
“ping”命令来测试两台主机之间TCP/IP通讯是否正常,向对方主机发送UDP数据包。
IP协议
IP因特网协议,IP只为主机提供一种无链接、不可靠的、尽力而为的数据报传输服务。
http协议
http超文本传输协议,位于应用层,当你上网浏览网页的时候,浏览器和Web服务器之间就会经过http在Internet上进行数据的发送和接收。
http是一个基于请求/响应模式的、无状态的协议。即咱们一般所说的Request/Response。
在浏览器中输入URL地址到显示主页的过程
1.DNS解析:浏览器查询DNS,获取域名对应的IP地址;
2.TCP链接:浏览器得到域名对应的IP地址之后,浏览器向服务器请求创建连接,发起三次握手;
3.发送HTTP请求:TCP链接创建起来后,浏览器向服务器发送HTTP请求;
4.服务器处理请求并返回HTTP报文:服务器接收到这个请求,并根据路径参数映射到特定的请求处理器进行处理,并将处理结果及相应的视图返回给浏览器;
5.浏览器解析渲染页面:浏览器解析并渲染视图,若遇到对js文件、css文件及图片等静态资源的引用,则重复上述步骤并向服务器请求这些资源;浏览器根据其请求到的资源、数据渲染页面,最终向用户呈现一个完整的页面;
6.链接结束。
B/S架构与C/S架构的比较
1.B/S架构主要是浏览器,网页,不须要在客户端安装软件;
2.B/S考虑浏览器的兼容性;
3.C/S架构须要客户端安装相应的APP;
4.C/S架构考虑版本的兼容性,安装与卸载。
GET请求和POST请求的区别
若是是get请求的话,直接在浏览器里输入就好了,只要在浏览器里面直接能请求到的,都是get请求,若是是post的请求的话,就不行了,就得借助工具来发送。
1.GET使用URL或Cookie传参,而POST将数据放在BODY中;
2.GET的URL会有长度上的限制,则POST的数据则能够很是大;
3.POST比GET安全,由于数据在地址栏上不可见;
4.通常get请求用来获取数据,post请求用来发送数据。
http状态码
每发出一个http请求以后,都会有一个响应,http自己会有一个状态码,来标示这个请求是否成功,常见的状态码有如下几种:
1.2xx的都表示这个请求发送成功,最多见的就是200,就表明这个请求是ok的,服务器成功处理请求;
2.3xx的表明重定向,最多见的是302,把这个请求重定向到别的地方;
3.4xx表明客户端发送的请求有语法错误,401表明访问的页面没有受权,403表示没有权限访问这个页面,404表明没有这个页面;
4.5xx表明服务器有异常,500表明服务器内部异常,504表明服务器端超时,没返回结果。
cookie&session&token
因为http是无状态协议,cookie、session与token,就是为了实现带有状态的“会话控制”。
Token
令牌,是用户身份的验证方式。最简单的token组成:uid(用户惟一的身份标识)、time(当前时间的时间戳)、sign(签名)。
对Token认证的五点认识
1.一个Token就是一些信息的集合;
2.在Token中包含足够多的信息,以便在后续请求中减小查询数据库的概率;
3.服务端须要对cookie和HTTPAuthrorizationHeader进行Token信息的检查;
4.基于上一点,你能够用一套token认证代码来面对浏览器类客户端和非浏览器类客户端;
5.由于token是被签名的,因此咱们能够认为一个能够解码认证经过的token是由咱们系统发放的,其中带的信息是合法有效的。
Token优势
1.服务器变成无状态了,实现分布式web应用受权;
2.能够进行跨域受权,再也不局限父子域名;
3.token设计决定了它自己能够携带更多不敏感数据,例如最经常使用的JWT;
4.安全性更高,密钥保存在服务器。若密钥被窃取,能够统一从新下发密钥。
Session
Session以K-V数据格式来保存状态。
Key:也称SessionID,保存在客户端浏览器。
Value:也称“Session”,保存在服务端。
客户端只须要存储SessionID,需借助cookie来实现。具体映射的数据结构放在了服务端,所以跳出了仅仅浏览器cookie只能够存储string类型的限制。
会话:表明服务器与浏览器的一次会话过程,这个过程是连续的,也能够时断时续。
1.cookie中存放着一个sessionID,请求时会发送这个ID;
2.session由于请求(request对象)而产生;
3.session是一个容器,能够存放会话过程当中的任何对象;
4.session的建立与使用老是在服务端,浏览器历来都没有获得过session对象;
5.session是一种http存储机制,目的是为武装的http提供持久机制。
cookie
cookie由服务器生成并发送给浏览器,以K-V形式将数据存储在用户本地终端上,下次请求统一网站给服务器。
session与token
做为身份认证,token安全行比session好。
Session认证只是简单的把User信息存储到Session里,由于SID的不可预测性,暂且认为是安全的。这是一种认证手段。而Token,若是指的是OAuthToken或相似的机制的话,提供的是认证和受权,认证是针对用户,受权是针对App。其目的是让某App有权利访问某用户的信息。
token与cookie
Cookie是不容许垮域访问的,可是token是支持的,前提是传输的用户认证信息经过HTTP头传输。
token就是令牌,好比你受权(登陆)一个程序时,他就是个依据,判断你是否已经受权该软件;cookie就是写在客户端的一个txt文件,里面包括你登陆信息之类的,这样你下次在登陆某个网站,就会自动调用cookie自动登陆用户名;session和cookie差很少,只是session是写在服务器端的文件,也须要在客户端写入cookie文件,可是文件里是你的浏览器编号.Session的状态是存储在服务器端,客户端只有sessionid;而Token的状态是存储在客户端。
cookie与session区别
1.cookie数据存放在客户端上,session数据放在服务器上;
2.cookie不是很安全,且保存数据有限;
3.session必定时间内保存在服务器上,当访问增多,占用服务器性能;
4.session数据结构灵活;
5.单个cookie保存的数据不能超过4K,不少浏览器都限制一个站点最多保存20个cookie;
6.建议:将登陆等重要信息存放为session,其余信息能够放在cookie中。
—————————————————————————————————
顾老师课程欢迎报名
软件安全测试
https://study.163.com/course/courseMain.htm?courseId=1209779852&share=2&shareId=480000002205486
接口自动化测试
https://study.163.com/course/courseMain.htm?courseId=1209794815&share=2&shareId=480000002205486
DevOps 和Jenkins之DevOps
https://study.163.com/course/courseMain.htm?courseId=1209817844&share=2&shareId=480000002205486
DevOps与Jenkins 2.0之Jenkins
https://study.163.com/course/courseMain.htm?courseId=1209819843&share=2&shareId=480000002205486
Selenium自动化测试
https://study.163.com/course/courseMain.htm?courseId=1209835807&share=2&shareId=480000002205486
性能测试第1季:性能测试基础知识
https://study.163.com/course/courseMain.htm?courseId=1209852815&share=2&shareId=480000002205486
性能测试第2季:LoadRunner12使用
https://study.163.com/course/courseMain.htm?courseId=1209980013&share=2&shareId=480000002205486
性能测试第3季:JMeter工具使用
https://study.163.com/course/courseMain.htm?courseId=1209903814&share=2&shareId=480000002205486
性能测试第4季:监控与调优
https://study.163.com/course/courseMain.htm?courseId=1209959801&share=2&shareId=480000002205486
Django入门
https://study.163.com/course/courseMain.htm?courseId=1210020806&share=2&shareId=480000002205486
啄木鸟顾老师漫谈软件测试
https://study.163.com/course/courseMain.htm?courseId=1209958326&share=2&shareId=480000002205486
本文分享自微信公众号 - 软件测试培训(iTestTrain)。
若有侵权,请联系 support@oschina.cn 删除。
本文参与“OSC源创计划”,欢迎正在阅读的你也加入,一块儿分享。