Android开发-Http协议

参考资料:
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就有可能拿到对称加密的密钥,从而破解数据,因此,服务器需要先在第三方权威机构认证自己的合法性,并且获得证书,客户端在发起请求之前需要先验证服务器证书的真假,就是身份认证,详细内容参考身份认证
    证书中包含的信息有:服务器的公钥,申请者和颁发者信息,签名
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值