十分钟理解透http常见面试题

1、简述什么是http请求
http是计算网络通信的规则
http是一种无状态的协议

2、简述http请求的7个步骤
1、 建立TCP连接
2、 Web浏览器发送请命令
3、 Web浏览器发送请求头信息
4、 Web服务器应答,(应答第一部分是协议的版本号和应答状态码)
5、 Web服务器向浏览器发送应答头信息(发送被请求的文档和自己的数据)
6、 Web服务器向浏览器发送数据(发送头信息后,会发送一个空白行来表示头信息的发送到此结束,接着就以Content-Type应答头信息描述的格式发送用户请求的实际数据)
7、 Web服务器关闭TCP连接

注: 一般情况系,服务器在发送数据之后就会关闭TCP连接,然后如果浏览器或者服务器在其头部信息加入 Connection:keep-alive TCP连接在发送后仍然保持打开状态,于是,浏览器可以通过想用的链接发送请求,节省新建立连接所需时间,节省带宽。

3、简述浏览器输入地址按回车键之后浏览器的执行操作

1、 建立tcp连接
2、 找到域名对应的ip
访问首先要找出其对应的ip地址,查找过程:在浏览器缓存中查找,然后在系统缓存查找,前面的请求发送给路由器,一般路由器会有自己的DNS缓存,系统缓存中没有就回去路由器缓存中查找,然后去ISP缓存的DNS服务器中查找,都找不到的时候
3、 向服务器发送http请求请求头请求体
4、 服务器检查处理请求
5、 服务器发送应答头
6、 服务器发送数据
7、 服务器关闭tcp
8、 浏览器读取数据
9、 解析成dom生成虚拟的dom树
10、 建立别的http请求下载css js图片其他文件
11、 渲染页面
12、 重绘页面

4、简述http请求的组成部分,和应答体的组成部分
http请求信息由URL 、Post or get方法 、 请求头 和 请求体组成
http的应答信息由请求行、请求头部,空行和请求数据组成
在这里插入图片描述

5、简述Post和get的区别
post和get作为http请求的两种方式,在本质上都是在TCP的基础上进行数据的传输,只是其数据传送的方式不一样。做的事情是一样的,只是通常情况下用get方法,TCP会产生一个数据包,但是用post方法,TCP会产生两个数据包。所以get方法请求是直接把信息和参数等内容加到url上面,进行数据传输,这样首先参数会已明文的形式在请求栏里展示不安全,其次一次性传输的量也会有限制一般是2k,而post方法是先发送请求头,然后在发送数据,这样的话传送的数据大小没有限制,而且也不会以明文的当时展示在地址栏里面。
但是需要注意的是get一次性把数据传送过去并不代表他更高效,实验证明在网络情况好的时候数据分两次发送和一次性发送在性能上并没有多大区别,而且在网络差的时候分两次发送更加保险一些。
需要注意的是:
1、post和get都有自己的语义,不好混合使用
2、并不是所有的浏览器post方法都分开发送内容,post请求方法在火狐上就只发送一次

如果想回答的官方一些,你可以用以下的几条回答这个问题:
1、 Get方法参数包含在URL中,post通过request body方法传递参数
2、 Get在浏览器中回退时是无害的,而POST会再次发送提交申请
3、 Get产生的URL地址可以被Bookmark,而POST不可以
4、 Get请求会被浏览器主动cache,但post不会,除非手动设置
5、 post请求传递内容大小没有限制,get有限制,约为2k
6、 get请求只能通过url编码,Post请求支持多种编码方式
7、 get请求的参数会被完整的保存在浏览器历史记录里,而post中的参数不会被保留

猜你喜欢

转载自blog.csdn.net/Alive_tree/article/details/86530845