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个阶段。

如果你不想再体验一次自学时找不到资料,没人解答问题,坚持几天便放弃的感受的话,可以加我们的软件测试交流群,里面有各种软件测试资料和技术交流。

猜你喜欢

转载自blog.csdn.net/weixin_50271247/article/details/109184094