前端须要了解的http知识

1、五层协议
1. OSI(Open System Interconnection 开放式系统互联)七层协议
1)应用层 2)表示层 3)会话层 4)传输层 5)网络层 6)数据连接层 7)物理层
2. TCP/IP四层网络协议 (Transmission Control Protocol 传输控制协议)
1)应用层 2)运输层 3)网络层 4)网络接口层
3. 折中后的五层协议
1)应用层(dns,http) DNS解析成IP并发送http请求
2)传输层(tcp,udp) 创建tcp链接(三次握手)
3)网络层(IP,ARP) IP寻址
4)数据链路层(PPP) 封装成帧
5)物理层(利用物理介质传输比特流) 物理传输(而后传输的时候经过双绞线,电磁波等各类介质)
简括:
从应用层的发送http请求,到传输层经过三次握手创建tcp/ip链接,再到网络层的ip寻址,再到数据链路层的封装成帧,最后到物理层的利用物理介质传输。
segmentfault

2、HTTP状态码
1XX 用于指定客户端相应的某些动做
2XX 用于表示成功
3XX 用于已经移动的文件而且被包含在定位头信息中指定心的地址信息(重定向,为了完成请求,必须进一步执行的动做)
4XX 用于指出客户端错误
5XX 用于支持服务器错误浏览器

100 继续;101 分组交换协议
200 ok;201 被建立;202 被采纳;203 非受权信息;204 无内容;205 重置内容;206 部份内容;
300 多选项;301 永久地传递;302 找到;303 参见其余;304 未改动;305 使用代理;307 暂时重定向;
400 错误请求(多是get请求写成post请求);401 未受权;402 要求付费;403 禁止;405 不容许的方法;406 不被采纳;407 要求代码受权;
408 请求超时;409 冲突;410 过时的;411 要求的长度;412 前提不成立;413 请求实例太大;
414 请求url太大;415 不支持的媒体类型;416 没法知足的请求范围;417 失败的预期;
500 内部服务器错误;501 未被使用;502 网关错误;503 不可用的服务;504 网关超时;505 HTTP版本未被支持;缓存

3、http 1.1 与 http 1.0 的区别
1. http 1.0 对于每一个链接都得创建一次链接, 一次只能传送一个请求和响应, 请求就会关闭, http1.0 没有 Host 字段,而 http1.1 在同一个链接中能够传送多个请求和响应, 多个请求能够重叠和同时进行, http1.1 必须有 host 字段
2. http1.1 中引入了 ETag 头, 它的值 entity tag 能够用来惟一的描述一个资源. 请求消息中可使用 If-None-Match 头域来匹配资源的 entitytag 是否有变化
3. http1.1 新增了 Cache-Control 头域(消息请求和响应请求均可以使用), 它支持一个可扩展的指令子集
4.http1.0 中只定义了 16 个状态响应码, 对错误或警告的提示不够具体. http1.1 引入了一个 Warning 头域, 增长对错误或警告信息的描述. 且新增了 24 个状态响应码安全

4、TCP三次握手和四次挥手
1. 三次握手:
首先 Client 端发送链接请求报文,Server 段接受链接后回复 ACK 报文,并为此次链接分配资源。Client 端接收到 ACK 报文后也向 Server 段发生 ACK 报文,并分配资源,这样 TCP 链接就创建了。
2. 四次挥手:
因为TCP链接是全双工的,所以每一个方向都必须单独进行关闭。这个原则是当一方完成它的数据发送任务后就能发送一个FIN来终止这个方向的链接。收到一个 FIN只意味着这一方向上没有数据流动,一个TCP链接在收到一个FIN后仍能发送数据。首先进行关闭的一方将执行主动关闭,而另外一方执行被动关闭。服务器

5、HTTP与HTTPS的区别
1. Http 协议运行在 TCP 之上,明文传输,客户端与服务器端都没法验证对方的身份;Https 是身披 SSL(Secure Socket Layer)外壳的 Http,运行于 SSL 上,SSL 运行于 TCP 之上,是添加了加密和认证机制的 HTTP。两者之间存在以下不一样:
2. 端口不一样:Http 与 Http 使用不一样的链接方式,用的端口也不同,前者是 80,后者是 443;
3. 资源消耗:和 HTTP 通讯相比,Https 通讯会因为加减密处理消耗更多的 CPU 和内存资源;
4. 开销:Https 通讯须要证书,而证书通常须要向认证机构购买;
6. Https 的加密机制是一种共享密钥加密和公开密钥加密并用的混合加密机制。cookie

6、HTTP的几种请求方法的用途
1. GET 方法:发送一个请求来取得服务器上的某一资源
2. POST 方法:向 URL 指定的资源提交数据或附加新的数据
3. PUT 方法:跟 POST 方法很像,也是想服务器提交数据。可是,它们之间有不一样。PUT 指定了资源在服务器上的位置,而 POST 没有
4. HEAD 方法:只请求页面的首部
5. DELETE 方法:删除服务器上的某资源
6. OPTIONS 方法:它用于获取当前 URL 所支持的方法。若是请求成功,会有一个 Allow 的头包含相似“GET,POST”这样的信息
7. TRACE 方法:TRACE 方法被用于激发一个远程的,应用层的请求消息回路
8.CONNECT 方法:把请求链接转换到透明的 TCP/IP 通道网络

7、Socket 链接与 HTTP 链接的联系与区别
1. 因为一般状况下 Socket 链接就是 TCP 链接,所以 Socket 链接一旦创建,通讯双方便可开始相互发送数据内容,直到双方链接断开。但在实际网络应用中,客户端到服务器之间的通讯每每须要穿越多个中间节点,例如路由器、网关、防火墙等,大部分防火墙默认会关闭长时间处于非活跃状态的链接而致使 Socket 链接断连,所以须要经过轮询告诉网络,该链接处于活跃状态。
2. 而 HTTP 链接使用的是“请求—响应”的方式,不只在请求时须要先创建链接,并且须要客户端向服务器发出请求后,服务器端才能回复数据。
3. 不少状况下,须要服务器端主动向客户端推送数据,保持客户端与服务器数据的实时与同步。此时若双方创建的是 Socket 链接,服务器就能够直接将数据传送给客户端;若双方创建的是 HTTP 链接,则服务器须要等到客户端发送一次请求后才能将数据传回给客户端,所以,客户端定时向服务器端发送链接请求,不只能够保持在线,同时也是在“询问”服务器是否有新的数据,若是有就将数据传给客户端。并发

8、http(tcp) 报文结构
例如一个 100kb 的 HTML 文档须要传送到另一台计算机,并不会整个文档直接传送过去,可能会切割成几个部分,好比四个分别为 25kb 的数据段。而每一个数据段再加上一个 TCP 首部,就组成了 TCP 报文。 TCP 报文 (Segment),包括首部和数据部分。dom

9、http 报文大小限制
如前所述,一个 HTTP 报文包含起始行,头域和消息体,HTTP 协议自己并无对报文中任一部分的长度作限制,也就是说,理论上一个请求 URI 能够无限长,头域能够无限多,请求体能够无限大。但在实际场景下,请求 URI 的长度会受到浏览器的限制,若是在浏览器中输入过长的 URL,那么浏览器会自动进行截断。而服务器出于安全性和效率的考虑,也会对头域和消息体的大小做出必定的限制。tcp

10、HTTP 的缓存机制
Http 的缓存主要利用 header 里的两个字段来控制,经过 Cache-control 和 Etag 的配合来实现 Http 的缓存机制。
1. Cache-control主要包含以及几个字段:
private:则只有客户端能够缓存
public:客户端和代理服务器均可以缓存
max-age:缓存的过时时间
no-cache:须要使用对比缓存来验证缓存数据
no-store:全部内存都不会进行缓存
2. ETag:即用来进行对比缓存,Etag 是服务端资源的一个标识码
当客户端发送第一次请求时服务端会下发当前请求资源的标识码 Etag,下次再请求时,客户端则会经过 header 里的 If-None-Match 将这个标识码 Etag 带上,服务端将客户端传来的 Etag 与最新的资源 Etag 作对比,若是同样,则表示资源没有更新,返回 304。

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

12、HTTP 长链接、短链接
在 HTTP/1.0 中默认使用短链接。也就是说,客户端和服务器每进行一次 HTTP 操做,就创建一次链接,任务结束就中断链接。当客户端浏览器访问的某个 HTML 或其余类型的 Web 页中包含有其余的 Web 资源(如 JavaScript 文件、图像文件、CSS 文件等),每遇到这样一个 Web 资源,浏览器就会从新创建一个 HTTP 会话。
而从 HTTP/1.1 起,默认使用长链接,用以保持链接特性。使用长链接的 HTTP 协议,会在响应头加入这行代码:
Connection:keep-alive
在使用长链接的状况下,当一个网页打开完成后,客户端和服务器之间用于传输 HTTP 数据的 TCP 链接不会关闭,客户端再次访问这个服务器时,会继续使用这一条已经创建的链接。Keep-Alive 不会永久保持链接,它有一个保持时间,能够在不一样的服务器软件(如 Apache)中设定这个时间。实现长链接须要客户端和服务端都支持长链接。
HTTP 协议的长链接和短链接,实质上是 TCP 协议的长链接和短链接。

十3、cookie
Cookie 就是用来在本地缓存记住一些状态的,一个 Cookie 通常都包含 domin(所属域)、path、Expires(过时时间)等几个属性。服务端能够经过在响应头里的 set-cookies 来将状态写入客户端的 Cookie 里。下次客户端发起请求时能够带上cookie。

参考: 1. https://mp.weixin.qq.com/s?__biz=MzAxODE2MjM1MA==&mid=2651555258&idx=1&sn=7db72c92735bb4cbe7a769eb1f10cee7 2. https://segmentfault.com/a/1190000013662126#articleHeader13

相关文章
相关标签/搜索