参考资料:
https://www.cnblogs.com/EricaMIN1987_IT/p/3837436.html
HTTP协议
- HTTP协议(超文本传输协议),是一种建立在TCP/IP协议之上的应用曾协议
- HTTP协议默认端口80
- HTTP协议是一种面向链接的,无状态协议
- 面向链接是指:在进行一次Http请求的过程中,会首先建立TCP/IP链接,请求结束后,链接断开,从HTTP/1.1开始,默认都开启了keep-alive字段,即在进行一次HTTP请求之后,不会立刻断开TCP/IP链接,短时间内,如果再次发起HTTP请求,会继续使用之前的链接,keep-alive不会永久保持链接,他有一个保持时间
- 无状态是指:先后两次发送的HTTP请求之间,没有任何联系,服务器不会记录任何状态
HTTP常见状态码
304:缓存可用
206:进行range请求时,如果可以不分加载,返回206,否则返回200,并且返回全部文件
416:进行range请求时,如果bytes参数有误,则返回416
HTTP请求消息Request
HTTP请求消息包括:请求行,请求头,请求体
- 请求行包含的信息有:请求方法,请求的资源路径,协议版本号
- 请求头会包含一些HTTP请求的参数,比如cookie,connection,host
- 请求体包含需要添加的数据
HTTP响应消息Response
HTTP响应消息包含:响应行,响应头,响应体
- 响应行:HTTP协议版本号,状态码,状态消息
- 响应头:包含一个附加信息,类似于请求头
- 响应体:需要传输的数据
HTTP请求头常用参数
Host:包含主机的域名和端口号
Connection:例如connection:keep-alive,HTTP/1.1默认开启
Content-Length:表示请求消息正文的长度
Rang:可以请求一个完整文件,或者文件的一部分(可以用于实现断点续传和分片下载)
Cookie: HTTP协议是一种无状态协议,可以使用cookie来保存状态,比如:通过cookie实现自动登录
HTTP响应头常见参数
Last-Modified:资源上次被修改的时间
**Set-Cookie:**用于设置cookie
HTTP缓存相关
Expires:HTTP1.0缓存过期时间,由服务器生成,但是由于客户端和服务器有时间误差,导致缓存命中有误差, HTTP1.1换成Cache-Control
Cache-Control:
- max-age=70:缓存的内容将在70秒后过期
- no-store:客户端不进行缓存
- no-cache:需要使用对比缓存来验证缓存数据
如果第二次请求的时间小于max-age则强制缓存,不会走对比缓存,也就是说,强制缓存的优先级高于对比缓存
对比缓存
两个重要的参数对:
第一组
响应Header:Last-Modified:上次修改的时间
请求Header:If-Modified-Since:客户端将服务器上次返回的Last-Modified上传给服务器,服务器判断是否被修改过,如果没有返回304,表示客户端使用缓存,如果修改过,返回新的数据内容,客户端更新缓存
第二组(优先级高于第一组)
响应Header:Etag返回一个资源的唯一标识,类似MD5
请求Header:If-None-Match客户端将上次的Etag返回给server,server判断如果Etag没有没修改,则返回304,表示可以使用缓存,都则返回新的数据,客户端更新缓存
HTTPS协议
参考资料:https://blog.csdn.net/hherima/article/details/52469267
HTTPS(安全超文本传输协议),HTTPS是基于HTTP协议,添加数据加密,完整性校验和身份认证的功能,从而保证了用户的信息安全问题
- 数据加密:通过非对称加密算法交换对称加密的密钥,然后使用对称加密的密钥加密数据
- 完整性校验:常见的有MD5校验
- 身份认证:客户端A在和服务器B使用RSA算法进行商定对称加密的密钥的前提是,服务器的身份是合法的,如果A和B在进行密钥商定的过程,一直都被M所拦截,所以M就有可能拿到对称加密的密钥,从而破解数据,因此,服务器需要先在第三方权威机构认证自己的合法性,并且获得证书,客户端在发起请求之前需要先验证服务器证书的真假,就是身份认证,详细内容参考身份认证
证书中包含的信息有:服务器的公钥,申请者和颁发者信息,签名