15K测试岗位必问面试题——什么是HTTP协议
什么是HTTP协议,我想15K以上的测试岗位都会问这个问题,这个问题在测试岗位是经常被提及的网络协议相关问题,单这个问题就有不少变种
什么是http协议?
http和https协议的区别是什么?
http在哪一层?
什么是 Http 协议无状态协议?
怎么解决http协议无状态协议?
本文就带你完完全全了解什么是http协议
HTTP协议是什么?有什么特点?
HTTP是一个属于应用层的面向对象的协议,由于其简捷、快速的方式,适用于分布式超媒体信息系统。它于1990年提出,经过几年的使用与发展,得到不断地完善和扩展。目前在WWW中使用的是HTTP/1.0的第六版,HTTP/1.1的规范化工作正在进行之中,而且HTTP-NG(Next Generation of HTTP)的建议已经提出。
HTTP协议的主要特点可概括如下:
1.支持客户/服务器模式。
2.简单快速:客户向服务器请求服务时,只需传送请求方法和路径。请求方法常用的有GET、HEAD、POST。每种方法规定了客户与服务器联系的类型不同。由于HTTP协议简单,使得HTTP服务器的程序规模小,因而通信速度很快。
3.灵活:HTTP允许传输任意类型的数据对象。正在传输的类型由Content-Type加以标记。
4.无连接:无连接的含义是限制每次连接只处理一个请求。服务器处理完客户的请求,并收到客户的应答后,即断开连接。采用这种方式可以节省传输时间。
5.无状态:HTTP协议是无状态协议。无状态是指协议对于事务处理没有记忆能力。缺少状态意味着如果后续处理需要前面的信息,则它必须重传,这样可能导致每次连接传送的数据量增大。另一方面,在服务器不需要先前信息时它的应答就较快。
HTTP之URL篇
HTTP使用统一资源标识符(Uniform Resource Identifiers, URI)来传输数据和建立连接。URL是一种特殊类型的URI,包含了用于查找某个资源的足够的信息
URL,全称是UniformResourceLocator, 中文叫统一资源定位符,是互联网上用来标识某一处资源的地址。以下面这个URL为例,介绍下普通URL的各部分组成:
http://www.aspxfans.com:8080/news/index.asp?boardID=5&ID=24618&page=1#name
从上面的URL可以看出,一个完整的URL包括以下几部分: 1.协议部分:该URL的协议部分为“http:”,这代表网页使用的是HTTP协议。在Internet中可以使用多种协议,如HTTP,FTP等等本例中使用的是HTTP协议。在”HTTP”后面的“//”为分隔符
2.域名部分:该URL的域名部分为“www.aspxfans.com”。一个URL中,也可以使用IP地址作为域名使用
3.端口部分:跟在域名后面的是端口,域名和端口之间使用“:”作为分隔符。端口不是一个URL必须的部分,如果省略端口部分,将采用默认端口
4.虚拟目录部分:从域名后的第一个“/”开始到最后一个“/”为止,是虚拟目录部分。虚拟目录也不是一个URL必须的部分。本例中的虚拟目录是“/news/”
5.文件名部分:从域名后的最后一个“/”开始到“?”为止,是文件名部分,如果没有“?”,则是从域名后的最后一个“/”开始到“#”为止,是文件部分,如果没有“?”和“#”,那么从域名后的最后一个“/”开始到结束,都是文件名部分。本例中的文件名是“index.asp”。文件名部分也不是一个URL必须的部分,如果省略该部分,则使用默认的文件名
6.锚部分:从“#”开始到最后,都是锚部分。本例中的锚部分是“name”。锚部分也不是一个URL必须的部分
7.参数部分:从“?”开始到“#”为止之间的部分为参数部分,又称搜索部分、查询部分。本例中的参数部分为“boardID=5&ID=24618&page=1”。参数可以允许有多个参数,参数与参数之间用“&”作为分隔符。
常见的接口协议
- http 超文本文件传输协议
- https 安全超文本传输协
- FTP 文件传输协议
- TCP 网络控制协议
- IP 互联网协议
- UDP 用户数据协议
http协议栈中的位置
HTTP、HTTPS、TCP、SSL/TSL、IP、数据链路程按如下排列:
HTTP HTTPS
TCP SSL/TSL
IP
数据链路层
http协议响应码
1xx:信息响应类,表示接收到请求并继续处理,通常时间很短
2xx:处理成功类响应,表示动作被成功接收、理解和接受
3xx:重定向响应类,为了完成指定动作,必须接受近一步处理
4xx:客户端错误,客户请求包括语法错误或者是不能正确执行(常见的响应码404:我们请求的资源不存在)
5xx:服务端错误,服务端不能正确执行一个正确的请求
http协议响应模型(一次请求的生命周期或简单的软件分层)
—API——OB——API——Client—
场景:程序登录页面
1、客户端发起请求到api层
1.1、用户在客户端填写用户名和密码,点击登录,发送请求
2、api接收到客户端发起的用户请求
2.1、api对业务逻辑进行验证
2.1.1、验证用户名密码是否合法
比如:用户名要求必须为真实的手机号(11位,1开头)
如果验证失败,即用户名不合法,那么需要给客户端返回响应码
比如码值为:1,2,3
1:用户名格式错误
2:用户名或密码错误
3:密码格式错误
3、如果验证成功,api会将用户输入的数据发给DB层
DB层会做Create(增)、Read(读、查)、Update(改)、Delete(删)的操作
Select * from User where UserName = ‘’ and PassWord = ‘’;
3.1、数据库查询成功则返回1,查询失败则返回0
4、DB会将返回的查询数据库的条目数给api
5、api返回成功或失败的状态码给客户端
6、客户端将返回信息提示给用户
扩展:
一、客户端 【 功能测试、性能测试、自动化测试】
二、接口层 【接口测试、功能测试、性能测试、自动化测试】
三、数据库层 【可以将开发人员使用到的SQL单独拿出来进行性能测试】
常用http请求的协议方式
get请求
post请求
get请求与post请求最简单的区别?
例如:
Get:http://127.0.0.1:8080?username=zhangsan&passwod
http://127.0.0.1:8080
结语
相信你掌握了这些之后,再碰到HR问你什么是http协议时,你就好好地找他唠半个小时,让他对http协议也全面了解,文明的传递就是知识的传递(dog)
最后想了解更多自动化测试的知识可以关注一波哦,也可以入群一起交流学习,需要资料的可以直接私聊我哒
上面是我收集的一些视频资源,在这个过程中帮到了我很多。如果你不想再体验一次自学时找不到资料,没人解答问题,坚持几天便放弃的感受的话,可以加入我们扣扣群【313782132 】,里面有各种软件测试资源和技术讨论。
软件测试是IT相关行业中最容易入门的学科~不需要开发人员烧脑的逻辑思维、不需要运维人员24小时的随时待命,需要的是细心认真的态度和IT相关知识点广度的了解,每个测试人员从入行到成为专业大牛的成长路线可划分为:软件测试、自动化测试、测试开发工程师 3个阶段。
如果你不想再体验一次自学时找不到资料,没人解答问题,坚持几天便放弃的感受的话,可以加我们的软件测试交流群,里面有各种软件测试资料和技术交流。