软件测试面试题-HTTP相关部分

收集了一些最近面试碰到的面试题答案,回答不妥的请大家补充或留言哦

1.http的连接的三次握手:

(1)首先由客户端发起一个含有同步序列号标志位的数据(SYN)给服务端,告诉它我已经准备好了,你可以用哪个序列号作为起始数据回应我

(2)服务端收到SYN包以后,会返回一个带有确认ack包和SYN包的数据,告诉客户端,我已经收到了你的请求,你可以发送数据了;你要用 哪个序列号作为起始回应我

(3)客户端收到后,再次发送ack确认包,告诉服务器,我收到了你的回复,现在要开始传输数据了

2.http的4次挥手

(1)主机A通知TCP数据已经发送完成,TCP向主机B发送一个fin标志的报文

(2)主机B收到这个报文以后,向主机A发送一个确认包。并告诉自己的程序,对方要关闭连接

(3)主机B的应用程序告诉TCP:我要彻底的关闭连接,TCP向主机A送一个FIN报文段

(4)主机A收到fin报文以后,向主机B发送一个ACk,彻底断开连接

3.HTTP的常用的响应代码和含义

200:请求成功,成功的意义与请求类型有关系:

    GET: 资源已经被提取,并作为响应体传回客户端

    POST: 服务器已经处理了客户端传来的数据,适合的资源作为响应体传回客户端

301:永久重定向

302:临时重定向

304:未修改,可以从缓存里获取

400:访问的页面域名不存在或者请求错误

401:没有访问权限,需要进行身份认证

403:资源不可用,没有权限,服务端拒绝访问

404:服务器找不到所请求的资源,

500:服务器内部错误,比如说请求数量过多,处理不过来

502:网关错误

503:服务器忙

505:服务器不支持客户端发送的HTTP请求中所使用的HTTP协议版本.

4.get和post的区别

(1)传参方式的区别

get 方法会把请求的数据以key-value的形式放在url里,以?分割url和参数,参数之间用&来连接,所以相对不安全;而post方法,则是把数据放在请求体里面,相对比较安全,但是是明文的,抓包就可以抓到,其实也不安全

(2)发送数据大小区别

get请求受限于浏览器和web服务器,数据大小有限

post发送数据受限于服务端设置,比GET长得多

(3)安全性区别

(4)设计用途的区别

get一般用来获取数据,不操作数据,参数少

post一般用来修改数据,新增,修改,需要更安全,参数多

(5)性能上

get会把数据缓存起来,加载静态资源(如图片、js这类)都是用get请求

post则不会缓存,相对来说慢点

5.http和https的区别

http:超文本传输协议,用明文传输。用80端口

https:安全套接字层超文本传输协议,在Http的基础上加入了ssl+证书,加密传输数据,用443端口。要用到ca证书,需要一定费用

6.cookie 和session的区别

cookie是以文本格式存在客户端的,存储数量有限,用户看得见,不安全;

session是存在服务端的,可以存无限多个,但是要频繁从服务器读取,比较耗服务端内存.但是比cookie更可靠。

7.HTTP请求报文与响应报文格式

请求报文:请求行(请求方法,URI,http版本信息),请求头,空行,请求体

响应报文:响应行(包括http版本,状态码),响应头,空行,响应体

8.一般请求的header里有什么字段

Host:请求资源所在服务器

accept:客户端可以接受的body格式,application/json 就是json格式;text/plain 纯文本格式;text/html html格式;*/* 所有格式。逗号隔开,有顺序,如果没有这个字段,默认接收所有

accept-Encoding:指定浏览器支持的返回编码类型

accept-Language:可接受的自然语言

Connection:是否需要持久连接,keep-alive,如果是http1.1则默认是持久连接

cookie:这是最重要的请求头信息之一

user-agent:当前请求的客户端类型

Authorization:授权信息

Content-Length:消息正文的长度

9.一次完整的http请求事务包含的环节

1.客户端和服务端建立连接

2.客户端向服务端发送请求

3.服务器收到后给与响应信息

4.客户端将返回的内容解析呈现,断开连接

你可能感兴趣的:(软件测试面试题-HTTP相关部分)