吊打面试官系列之http你需要知道的事,5分钟成为老鸟

Posted 打工人何苦为难打工人

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了吊打面试官系列之http你需要知道的事,5分钟成为老鸟相关的知识,希望对你有一定的参考价值。

静态概念类:
什么是Http协议
客户端和服务器端之间数据传输的格式规范,格式简称为“超文本传输协议”。HTTP协议是Hyper Text Transfer Protocol(超文本传输协议)的缩写。超文本传输协议可以进行文字分割:超文本(Hypertext)、传输(Transfer)、协议(Protocol)。随着网络世界演进,HTTP 协议已经几乎成为不可替代的一种协议,在了解了 HTTP 的基本组成后,下面再来带你进一步认识一下 HTTP 协议。就如同各大邮箱使用电子邮件传送协议 SMTP 一样,浏览器是使用 HTTP 协议的主要载体。特征主要有
1、支持客户/服务器模式;
2、简单快速;灵活
3、无连接;无状态;。

Http协议首部字段
a、通用首部字段(请求报文与响应报文都会使用的首部字段)
Date:创建报文时间
Connection:连接的管理 》设置为:keepAlive可以保持长连接。
Cache-Control:缓存的控制
Transfer-Encoding:报文主体的传输编码方式

b、请求首部字段(请求报文会使用的首部字段)
User-agent: 客户单操作系统和浏览器信息 发给服务器
Cookie: 存储在客户端的扩展字段
Host:请求资源所在服务器
Accept:可处理的媒体类型
Accept-Charset:可接收的字符集
Accept-Encoding:可接受的内容编码
Accept-Language:可接受的自然语言

c、响应首部字段(响应报文会使用的首部字段)
Server:HTTP服务器的安装信息
Accept-Ranges:可接受的字节范围
Location:令客户端重新定向到的URI
 

HTTP状态码,你知道哪些
200:请求被正常处理
302:临时重定向
403:请求的对应资源禁止被访问
404:服务器无法找到对应资源
500:服务器内部错误

如何理解HTTP协议是无状态的
HTTP协议是无状态的,指的是协议对于事务处理没有记忆能力,服务器不知道客户端是什么状态。也就是说,打开一个服务器上的网页和上一次打开这个服务器上的网页之间没有任何联系。HTTP是一个无状态的面向连接的协议,无状态不代表HTTP不能保持TCP连接,更不能代表HTTP使用的是UDP协议(无连接)
 

session与cookie的区别
(1)Cookie以文本文件格式存储在浏览器中,而session存储在服务端它存储了限制数据量。它只允许4kb它没有在cookie中保存多个变量。
(2)cookie的存储限制了数据量,只允许4KB,而session是无限量的
(3)我们可以轻松访问cookie值但是我们无法轻松访问会话值,因此它更安全
(4)设置cookie时间可以使cookie过期。但是使用session-destory(),我们将会销毁会话。

总结:如果我们需要经常登录一个站点时,最好用cookie来保存信息,要不然每次登陆都特别麻烦,如果对于需要安全性高的站点以及控制数据的能力时需要用会话效果更佳,当然我们也可以结合两者,使网站按照我们的想法进行运行。
 

Http协议中有哪些请求方式?
URI:可以分为URL,URN或同时具备locators 和names特性的一个东西。URN作用就好像一个人的名字,URL就像一个人的地址。换句话说:URN确定了东西的身份,URL提供了找到它的方式。

GET:用于请求访问已经被URI(统一资源标识符)识别的资源,可以通过URL传参给服务器

POST:用于传输信息给服务器,主要功能与GET方法类似,但一般推荐使用POST方式

PUT:传输文件,报文主体中包含文件内容,保存到对应URI位置

HEAD:获得报文首部,与GET方法类似,只是不返回报文主体,一般用于验证URI是否有效

DELETE:删除文件,与PUT方法相反,删除对应URI位置的文件

OPTIONS:查询响应URI支持的HTTP方法

Get和POST方法的区别
1、传送方式:get通过地址栏传输,post通过报文传输。

2、传送长度:get参数有长度限制(受限于url长度),而post无限制

3、GET产生一个TCP数据包;POST产生两个TCP数据包。

对于GET方式的请求,浏览器会把http header和data一并发送出去,服务器响应200(返回数据)

而对于POST,浏览器先发送header,服务器响应100 continue,浏览器再发送data,服务器响应200 ok(返回数据)。

因为POST需要两步,时间上消耗的要多一点,看起来GET比POST更有效。因此Yahoo团队有推荐用GET替换POST来优化网站性能。但这是一个坑!跳入需谨慎。为什么?

GET与POST都有自己的语义,不能随便混用。
据研究,在网络环境好的情况下,发一次包的时间和发两次包的时间差别基本可以无视。而在网络环境差的情况下,两次包的TCP在验证数据包完整性上,有非常大的优点。
并不是所有浏览器都会在POST中发送两次包,Firefox就只发送一次。
建议:
1、get方式的安全性较Post方式要差些,包含机密信息的话,建议用Post数据提交方式;
2、在做数据查询时,建议用Get方式;而在做数据添加、修改或删除时,建议用Post方式;

案例:
一般情况下,登录的时候都是用的POST传输,涉及到密码传输,而页面查询的时候,如文章id查询文章,用get 地址栏的链接为:article.php?id=11,用post查询地址栏链接为:article.php, 不会将传输的数据展现出来。

什么是HTTP长连接
长连接定义:
client方与server方先建立连接,连接建立后不断开,然后再进行报文发送和接收。这种方式下由于通讯连接一直存在。此种方式常用于P2P点对点的通信。

长连接的操作步骤是:建立连接——数据传输...(保持连接)...数据传输——关闭连接
》如何实现长连接?(实战题)

浏览器或者服务器在其头信息加入了这行代码:Connection:keep-alive
TCP连接在发送后将仍然保持打开状态,于是,浏览器可以继续通过相同的连接发送请求。保持连接节省了为每个请求建立新连接所需的时间,还节约了网络带宽。

长连接适用场景:(了解)
监控系统:后台硬件热插拔、LED、温度、电压发生变化;
即时通信系统:其它用户登录、发送信息;
即时报价系统:后台数据库内容发生变化;
像以上这些连接,如果每次操作都要建立连接然后再操作的话处理速度会降低。所以操作时第一次连接上以后,以后每次直接发送数据就可以了,不用再建立TCP连接。
再比如:数据库的连接用长连接,如果用短连接频繁的通信会造成socket错误,频繁的socket创建也是对资源的浪费。

什么是HTTP短连接
短连接定义:
Client方与server每进行一次报文收发交易时才进行通讯连接,交易完毕后立即断开连接。此方式常用于一点对多点通讯。

短连接的操作步骤是:建立连接——数据传输——关闭连接...建立连接——数据传输——关闭连接

短连接的适用场景:
短连接多用于操作频繁,点对点的通讯,而且连接数不能太多的情况。每个TCP连接的建立都需要三次握手,每个TCP连接的断开要四次握手。
web网站的http服务一般都用短连接。因为长连接对于服务器来说要耗费一定的资源。像web网站这么频繁的成千上万甚至上亿客户端的连接用短连接更省一些资源。
试想如果都用长连接,而且同时用成千上万的用户,每个用户都占有一个连接的话,可想而知服务器的压力有多大。所以并发量大,但是每个用户又不需频繁操作的情况下需要短连接。总之:长连接和短连接的选择要视需求而定。

以上是关于吊打面试官系列之http你需要知道的事,5分钟成为老鸟的主要内容,如果未能解决你的问题,请参考以下文章

前端经典面试题 | 吊打面试官系列 之 说说你对TypeScript 和 JavaScript的理解

《吊打面试官》系列-消息队列基础

《吊打面试官》系列-HashMap

吊打面试官之一文吃透JS事件循环EventLoop

《吊打面试官》系列-Redis基础

《吊打面试官》系列-ConcurrentHashMap & Hashtable(文末送书)