【面试必备】HTTP

URI与URL的关系

 

【面试必备】HTTP_第1张图片

 

请求报文格式

 

【面试必备】HTTP_第2张图片

请求行,请求头,正文

 

响应报文格式

 

【面试必备】HTTP_第3张图片

状态行,响应头,正文

 

请求方法

 

GET(获取资源 的方法)

POST(传输实体的方法)

PUT(用于上传文件)

HEAD(获取首部的方法)

DELETE(删除文件的方法)

OPTIONS(询问支持的方法)

TRACE(追踪请求的方法)

CONNECT(使用安全连接的方法)

 

状态码

 

【面试必备】HTTP_第4张图片

 

通用HTTP首部

 

【面试必备】HTTP_第5张图片

 

常用请求头

 

【面试必备】HTTP_第6张图片

 

响应首部

 

【面试必备】HTTP_第7张图片

 

实体首部

 

【面试必备】HTTP_第8张图片

 

长连接与短连接

 

长连接是在一次连接建立后保持,在本次连接过程中持续进行多次HTTP请求。

短连接是在建立连接获取资源后就立即断开,每次发起HTTP请求会建立一个新的连接。

流水线即在建立连接后,采用异步的方式进行并发请求的方法。

【面试必备】HTTP_第9张图片

 

Cookie

 

是一种客户端存储技术主要用于客户端信息的持久化,随着本地存储形式的多种支持的出现,客户端的信息存储对cookie的依赖性大大降低。

主要用于跟踪状态,用于辅助服务端识别当前访问的用户是谁。

服务端发送set-cookie新建cookie到请求头中,cookie一般针对于某一个站点,还具有存活时间,也就是有效时间。

Domain指定哪些域名下是可以使用的,path是对请求使用cookie的url具体限制的细化。

为了避免跨站脚本攻击一般把cookie设置为HttpOnly,防止js获取到cookie

浏览器禁用cookie的话需要采用url重写技术实现session id的传递。

 

Session

 

session是服务端存储技术,主要用于状态的维护。sessionId由服务端生成,服务端生成后,存储在内存或redis中,用于再次到达的请求的再识别。

 

缓存

 

缓存可以缓解服务器的压力,降低获取资源的延迟性,读取速度更快。

客户端可以实现缓存,代理服务器也可以实现缓存。

 

Cache-Control用于控制缓存

 

Cache-Control:no-store不允许缓存

Cache-Control:no-cache需要先向服务器确认是否有效,有效才能进行缓存

Cache-Control:private只能为单个用户使用

Cache-Control:public作为公共资源进行缓存

Cache-Control:max-age=31536000在请求中用于指定可接受的缓存间隔时间,在响应中用于指定该资源的最大缓存保存时间。

Expires也可以指定过期时间,是过期的具体的时间点。

HTTP1.1优先处理max-age,HTTP1.0中max-age会被忽略。

 

ETag: "82e22293907ce725faf67773957acd12"

ETag主要用于比对版本号进行判断缓存的有效性,将其放置在If-None-Match请求头中,用于判断有效性。有效将返回304Not Modified

Last-Modified也用于缓存有效性验证,一般存在响应头中,用于表明最近一次修改时间,

客户端请求带上If-Modified-Since可以用于判断基于时间的资源有效性,有效返回304Not Modofied,否则返回200修改后的资源。
 

内容协商

 

客户端与服务端进行各种配置的协商,例如语言。编码方式,内容显示格式等等。

客户端可以使用Accept、Accept-Charset、Accept-Encoding、Accept-Language等请求头请求指定的资源。

代理缓存:可以在请求后服务端指定Vary:Accept-Language用于指定相同语言类型的可以返回缓存。否则需要重新请求资源。

内容编码:采用协商的编码格式减少数据量。Accept-Encoding与Content-Encoding

 

部分数据

 

可以通过使用请求头Range指定获取资源的范围

成功将返回206Partial Content,不支持将返回200,范围越界将返回416 Requested Range Not Satisfiable

服务端使用Accept-Ranges:bytes告知可以获取部分数据,Accept-Ranges:none表示不支持部分数据

 

数据转发

 

正向代理用于代替客户端发起请求,主要用于缓存提高效率,统一请求管理等。

反向代理主要用于请求的日志记录,负载均衡等,在服务器端

网关主要用于协议的转换

隧道主要用于加密请求。

 

HTTPS建立过程

 

对称加密:双方采用相同的秘钥进行加解密。

【面试必备】HTTP_第10张图片

非对称加密:双方采用不同的公钥与私钥进行加解密。非对称加密也可以用于验签:使用私钥进行加密,使用公钥解密验签。

【面试必备】HTTP_第11张图片

 

先使用非对称加密的方式传输对称秘钥,接着采用对称加密的方式进行数据传输。

 

 

你可能感兴趣的:(JAVA面试必备)