HTTP
URL和URI的区别:URL是URI的子集,在URI的基础上增加了定位能力,URI还有URN,无法定位资源.
PUT不带验证机制,一般不使用,且只能完全替换资源,而PATCH允许部分修改,OPTIONS查询支持的方法,查询指定的URL能够支持的方法。CONNECT要求与代理服务器通信时建立隧道,使用SSL和TLS协议把通信内容加密后经过网络隧道传输,TRACE追踪路径,会把通信路径返回。
- 状态码:1XX为信息性状态码。接收的请求正在被处理,2XX为请求正常处理,3XX为重定向,附加操作以完成请求,4XX客户端错误,5XX服务器错误。
记住几个经典的:304 Not Modified:如果请求报文首部的一些条件不满足时返回。400请求报文中存在语法错误,401请求认证失败,500请求时发生错误,503服务器超负载或者停机维修.
连接管理:
- 短连接与长连接: 在请求访问时会有多张图片的传输,此时使用长连接,此时使用
Connection : Keep-Alive
. - 流水线:默认情况下,是按顺序发送请求,在同一长连接中,可以连续发送多个请求,不等待响应返回。
Cookie:新的方式可以用storage和IndexedDB放本地,使用Cookie时会放在请求首部字段发送给服务器,存在两种Cookie,持久性(过期后才删除)和会话期(关闭浏览器自动删除),Domain标识符指定哪些主机可以接受Cookie,标记为HttpOnly的Cookie不能被Js调用,一定程度上避免XSS攻击,标记为Secure的Cookie只能通过HTTPS加密的请求使用。
Session:可以存在服务器端,优点是效率更高且可以存各种类型的数据,登录时提交用户名和密码,验证正确后把用户信息存储在Redis中,在Redis中的Key为SessionID,响应报文中的Set-Cookie首部字段包含这个SessionID,并存进浏览器中,之后请求时使用这个SessionID在Redis中取出信息即可。
缓存:服务器和客户端都可进行缓存,cache-control为no-store时不进行任何缓存,no-cache时需要先确认缓存有效性,private规定资源作为私有缓存(在浏览器中),public为公有缓存(存在代理服务器中).
缓存验证:把缓存资源中的ETag存在If-None-Match首部,判断缓存资源和最新ETag是否一致,如果一致缓存资源有效,返回304 Not Modified
内容协商:根据内容协商返回最合适的内容:
- 服务器驱动型:服务器根据HTTP首部字段返回特定的资源,实现复杂,信息冗长
- 代理驱动型:客户端发送包含Accept-Language字段请求后,源服务器返回的响应包含Vary:Accept-Language内容,缓存服务器对这个响应进行缓存后,在下一次访问同一个URL资源时,Accept-Language与缓存中对应值相同时才返回缓存。
内容编码:将实体主体进行压缩,减少传输的数据量,浏览器发送的Accept-Encoding包含支持的算法,服务器使用Content-Encoding告诉浏览器使用了哪种算法。
范围请求:网络出现中断时,服务器只发送了一部分数据,客户端可以只请求未发送部分,方法有:
- Range:在请求报文中加入
Range: bytes=0-1023
设置请求范围。 - Accept-Ranges:使用
Accept-Ranges: bytes
告知客户端是否可以处理范围请求. - 响应状态码一般使用206,如果返回200代表不支持范围请求。
分块传输编码:可以将数据分割成多个块,让浏览器逐步显示。
多部分对象集合:一个报文主体可有多种类型的实体同时发送,用boundary分开,Content-Type: multipart/form-data; boundary=AaB03x
。
虚拟主机:采用虚拟主机让一台服务器拥有多个域名,可看成多个服务器.
通信数据转发:
- 代理的作用:缓存,负载均衡,网络访问控制,访问日志记录。
- 网关:把HTTP转为其它协议通信,请求非HTTP服务器的服务。
- 隧道:采用SSL建立一条安全的通信线路。
HTTPS
让HTTP和SSL通信,再由SSL和TCP通信,从而实现加密,认证,网站性保护.
加密:
- 对称密钥加密:加密解密使用同一密钥,可是不够安全。
- 非对称加密:公钥所有人可见,发送方拿到公钥进行加密,接收方拿到后用私钥解密。
- HTTPS采用的加密:首先使用非对称加密传输对称加密的密钥,即先非对称加密,再对称加密。
认证:
申请CA后,CA会在判明申请者的身份后对已经申请的公钥做数字签名,把公钥放进证书绑定,然后服务器把证书发送给客户端,客户端拿到公钥后使用数字签名验证,验证通过就可以进行通信了。
完整性保护:HTTP也有MD5摘要功能,但内容篡改后无法意识到,而HTTPS结合了加密和认证,如果报文被篡改,也很难重新计算摘要,因为无法轻易获得明文。
HTTP/2.0的特点:
- 只有一个TCP连接
- 一个数据流有一个唯一标识符和可选优先级。
- 消息是与逻辑请求和响应对应的完整的一系列帧。
- 帧是最小通信单位,来自不同的数据流的帧可以交错发送,收集后使用标识符进行组装。
首部压缩:
HTTP/2.0要求客户端与服务端维护更新同一个之前见过的首部字段表,所以可以基于之前的表:
安全的方法:GET,HEAD,OPTIONS.不安全的方法有:POST,PUT,DELETE.
幂等性,同样的请求执行一次和执行多次结果相同,服务器状态相同。
标签:加密,缓存,HTTP,请求,服务器,客户端 From: https://www.cnblogs.com/mengyiqwq/p/16856199.html