面试 | 你要懂得http相关

前言

前端在面试过程当中,也会遇到网络层面的一些问题,这些有的可能会在平时业务中用到,有的可能就是单纯造火箭。下面我汇总了一些我在面试中遇到的,以及我复习的一些面试相关的东西。html

http缓存(高频考点,送分题)

http缓存基本面试中都会考到,主要记忆点为强缓存、协商缓存。前端

加分点:web

强缓存:from memory cache,from disk cache什么区别?Expires和Cache-Control的区别面试

协商缓存:两个标志位的区别。chrome

参考答案

http缓存分为强缓存和协商缓存。强缓存就是浏览器缓存,资源直接从浏览器中获取。协商缓存就是资源会从cdn去获取。浏览器

强缓存的判断标志有两个,Expires这个标识实在http1.0以前用的,表示的是过时时间,可是客户端和服务端时间存在不一样步问题,因此在http1.1以后加入了Cache-Control,这个表示的是距离请求发出时的时间,是一个相对时间比较精确。缓存

强缓存即为浏览器缓存,分为两类from memory cache,from disk cache,返回的状态码都为200.二者的区别是from memory cache是从内存中取。from disk cache是从硬盘中取。若是是刷新当前页面,且内存环境比较充裕的状况下,返回from memory cache。可是若是是返回上一个页面或者当前内存环境不充裕的状况下,返回的是from disk cache。安全

协商缓存的判断标识:Last-Modified和ETag。ETag是文件每次生成的hash,是惟一的准确性高,可是比较繁琐以及消耗性能。而Last-Modified是以秒级为单位的文件生成时间,比较不精确。由于1s中文件可能屡次生成。判断的优先标准是ETag。其次是Last-Modified。服务器

http缓存的判断过程:先判断Cache-Control的值,这里不细讲,好比max-age=300,那么在五分钟以内都会触发强缓存。若是已通过了5分钟以后,会进入协商缓存阶段。发出去的http请求中会带有两个标示位, If-Modified-Since(来自第一次请求返回头中的Last-Modified)和If-None-Match(来自第一次请求返回头中的ETag)。两个标示位的区别我在上面已经说了,根据标示位判断文件是否更新,若是更新返回状态码200以及资源。若是没有更新,只返回状态码304网络

TCP握手过程和分手过程

参考答案

TCP握手过程:客户端发送ACK包给服务端。当服务端接收到ACK包以后,向客户端发送ACK+SYN包。客户端接收到ACK+SYN包以后,向服务端返回SYN包。

三次握手是识别客户端发送和接收能力的最小安全次数。

四次挥手过程:

一、客户端像服务端发送fin包,以后客户端不能发送数据,只能读取数据。

二、服务端收到fin包以后,像客户端发送ACK包,此时服务端只能发送数据,不能接收数据。

三、当数据发送完毕以后,服务端会发送fin包给客户端。此时服务端不能读取数据也不能接收数据

四、当客户端收到fin包时,将发送ack包给服务端,本身等待足够多的时间,便进入closed状态。服务端接收到ack包的时候,也会进入到closed状态。

为何挥手过程要4次?

由于TCP是双工通道,服务端和客户端都可以发送和接收数据。两边是同时运转的。

https的握手过程

参考答案

https的握手过程分为两步:证书校验和数据传输

一、客户端访问web服务器,服务器返回数字签名(公钥,证书信息,服务端信息,hash值)。

二、客户端经过证书机构颁发的私钥对数字签名进行解密。校验证书信息和服务端信息以后,生成随机数,用公钥进行加密。

三、数据返回给服务端以后,服务端使用相应的私钥进行解密,获得随机数。

四、以后服务端与客户端就经过随机数的对称加密方式进行交互。

HTTPS 握手过程当中,客户端如何验证证书的合法性

参考答案

拿到服务端给的数字签名以后,客户端会根据机构颁发的私钥对数字签名的东西进行解密。解密出来,内部会含有服务端信息和证书的信息。

证书信息须要校验如下几方面:

一、颁发证书的第三方机构(CA)是否受客户端的信任。

二、对比系统时间校验证书是否在有效期。

三、经过CRL或者OCSP的方式校验证书是否被吊销。

四、经过校验对方是否存在证书的私钥,判断证书的网站域名是否与证书颁发的域名一致。

https的对称加密和非对称加密了解多少

参考答案

对称加密的加解密钥匙是同一个,密钥在传输过程当中容易被第三方截取,安全性相对较低。

非对称加密一共有一对钥匙,分为公钥和私钥。公钥进行加密过程,私钥用于解密过程。性能上相对于对称加密来的低。

非对称加密和对称加密在https中的应用:因为性能缘由,https只有在第一次创建的时候会使用非对称加密,以后的过程都是走随机数的对称加密方式。

https的中间人攻击

参考答案

中间人攻击就是在没有ca证书以前,公钥在传输过程当中也能够被截获。

中间人截获公钥以后,将公钥替换成本身的公钥。

而后客户端收到伪造公钥以后,用其进行加密操做以后,返回给服务端。

在返回过程当中,中间者再次将数据截获,用私钥进行解密。

解密完成以后,将数据在用真公钥进行加密,返回给服务端。

全部数据至关于在明文传输。

http2和http1.1之间的区别

参考答案

主要区别在如下4个点:

一、二进制传输:http2.0的数据是以二进制的形式传输的,最小单位是帧,多个帧组成数据流的形式传输。而http1.1如下是以明文文本格式传输的。明显二进制传输方式更加高效

二、头部压缩:http1.1的时候在每次请求都会携带大量重复头部信息。可是在http2.0的时候,只须要发送改变的头部信息就行。

三、服务器推送:服务端能够在发送html的时候主动推送其余资源,不须要等浏览器在请求到相应位置的时候再去请求。

四、多路复用,详细能够看下面一个问题

简单讲解一下http2的多路复用

参考答案

http/1每次请求都会创建一次tcp连接,也就是咱们说的三次握手四次挥手。这个过程是很是耗时的,尽管能够开启keep-alive去避免屡次链接的问题。可是仍是存在一下两个问题:

一、串行的文件传输方式。文件传输的过程是,当a文件传输时,b文件只能等待。而a文件在传输过程当中,须要经历链接服务,服务器处理文件,以及断开服务等三个过程。假设每一个过程耗时1s,那么a文件耗时就是3s,那么b文件传输完成就是6s

二、链接数过多。当客户端发起多个请求时,浏览器会对请求的并发数作一个限制,chrome的最大并发数是6个,那么第7个请求的时候就须要等前面的请求完成以后,才能拿到相应的结果。

而http2以后,改为了二进制传输,也就多了帧和流的概念。

数据在一个tcp链接中按流的形式传输,帧就是其中最小的传输单位,而帧中带有标示位,能够识别是从哪一个流中来的,到服务端以后,服务端会将帧数据从新整合成流,也就是所说的多路复用。

http的请求报文由什么组成

参考答案

http报文分为请求报文和相应报文。他们分别分为4个部分:

一、请求行/响应行:请求行由方法,URL,http版本组成。好比:GET /index.html HTTP/1.1。响应行由http版本和状态码组成,好比:HTTP/1.1 200ok

二、请求头部/响应头部:头部由一些key:value的字段组成

三、空行:做用主要是用来分割头部和实体。

四、请求体/响应体:请求体主要携带post时候的一些参数。响应体主要携带服务端返回的一些数据。

http的状态码有哪些

这里就介绍一些经常使用的状态码

参考答案

1XX:临时响应

2XX:成功

  • 200 OK:表示请求被服务端处理并正确返回
  • 206 Partial Content,进行范围请求。

3XX:重定向

  • 301 moved permanently,永久性重定向,表示资源已被分配了新的 URL
  • 302 found,临时性重定向,表示资源临时被分配了新的 URL
  • 304 not modified,表示服务器容许访问资源,但因发生请求未知足条件的状况

4XX:客户端错误

  • 400 bad request,请求报文存在语法错误
  • 403 forbidden,表示对请求资源的访问被服务器拒绝
  • 404 not found,表示在服务器上没有找到请求的资源

5XX:服务端错误

  • 500 internal sever error,表示服务器端在处理请求时发生了错误

http的经常使用字段有哪些

参考答案 通用字段:
  • Cache-Control 控制缓存
  • Connection 链接管理、逐条首部
  • Transfor-Encoding 报文主体的传输编码格式

请求字段:

  • Accept 客户端或者代理可以处理的媒体类型
  • If-None-Match 比较实体标记(ETage)
  • If-Modified-Since 比较资源更新时间(Last-Modified)
  • Range 实体的字节范围请求
  • Authorization web的认证信息
  • Host 请求资源所在服务器
  • User-Agent 客户端程序信息

响应字段:

  • Location 令客户端重定向的URI
  • ETag 可以表示资源惟一资源的字符串
  • Server 服务器的信息
相关文章
相关标签/搜索