从HTTP讲起

从HTTP讲起

零蚀

  1. HTTP 是什么
  2. HTTP 工作原理

HTTP 是什么

  • Http简介
    1. 日常生活中,我们觉得它是网址,是IP地址是
    2. Android中我们认为它是一种请求,当我们发送请求时,返回对应的内容
    3. 百度说:http是一个简单的请求-响应协议,它通常运行在TCP之上

    从字面上解释HTTP是HyperText Transfer Protocol 超文本传输协议,
    协议的存在的价值,是为了双方的沟通的rule。

    1. HyperText 超文本,是使用超链接的方式将不同空间的文字信息组建在一起的网状文本(就是一个能点击跳转的的链接文本)。一般超链接=超文本
    2. HyperText = < html >,是一种文本格式。

HTTP 工作原理

  • Http 视图
    1.请求的数据
    2.响应的数据
    3.处理响应
    客户端
    客户端
    应用内核

Http结构

  • URL

    日常用的网址【https 😕/ www . baidu .com / s?wd=超文本&rsv_spt=1…】 http:是协议类型,www.baidu.com是服务器地址,s?wd=超文本&rsv_spt=1…是服务器接收的路径。

  • Http格式
    1. 请求报文格式 Request :请求行:[GET /users HTTP/1.1/ ] (方法,路径,http版本) Headers:[Host:www .baidu.com…Content-type…]body:[content]
    2. 响应报文格式Response :状态行:[http/1.1 200 ok(状态码和状态信息)] Headers:[格式同请求头基本一致],body:[content]
  • Http 请求方法
    1. GET 获取资源,没有body。
    2. POST 增加修改内容,有body。链接中会出现s?wd=超文本&rsv_spt=1的增加内容
    3. PUT 只用来修改,有body,幂等GET
    4. DELET 删除资源,没有body 案例:[DELETE users/1 HTTP/1
    5. HEAD 类似GET 区别在于服务器请求,有返回内容但不包括body。常用于下载
    6. TRACE 诊断
    7. OPTION 查看服务器性能
    8. CONNECT 将链接改为管道方式的代理服务器
  • 状态码
    1. 1XX: 临时信息,(分段传输)
    2. 2XX: 成功
    3. 3XX: 重定向,发现链接被改动,浏览器会自动再次去请求正确网址,比如,http的请求方式被改动,利于搜索引擎优化。刷新(304内容没有改变)
    4. 4XX: 客户端错误、请求有问题、
    5. 5XX: 服务器错误
  • Header

    Header用来传递http的元数据(metadata) , 数据的数据,比如说,数据的长度,数据的样式,数据的压缩量,数据的格式,象征着数据属性的这一类数据叫做元数据。

    • host 服务器地址,报文在拼接好信息(请求头host)已经开始寻址了,通过DNS(域名)返回的ip地址进行寻址,而ip地址服务器下面可能会有多个服务器,一个服务器下面可能有很多主机,很多虚拟主机,而它们公用同一个IP地址,无法转达到具体的主机。所以要附送主机地址。

    • content-length 内容的长度。

    • content-type 例如application/json 返回的网页的格式,不同的格式展示的样式不同。 第一种 text/html 文本,用于浏览器的页面响应, 第二种 application/x-www-form-urlencoded 普通表单(提交信息网页),encoded code 格式,只能传文本或者二进制数据。Retrofit中的@FormRrlEncode注解也是由来于此。 第二种的另一类multiparty/from-data 多部分形式,比如说二进制文件。boundary=----WXXXX是分界线,使用方法对应Retrofit中的@Multipat注解。

    • Chunked Transfer Encode

      分块传输编码,有时候服务器提供给个护短的数据,暂时只能给一部分内容,不知道具体内容的content-length,所以Body无法确定,一般没有长度的内容解析,会出现问题,所有使用分段传输这种方式,数据内容读到 0\n 位置表示内容结束。

    • Location

      表示重定向目标URL,例如返回301的,重新定位的内容就是在location之中。

    • User-Agent (用户代理)

    • Range/Accept-Range

      指定Body的内容范围,当浏览器支持分段获取数据时候,支持分段续传,多线程下载。

    • Accept 客户端能接受的数据类型

    • Accept-Charset 例如text/html

    • Accpet-Encoding 压缩编码类型,如gzip

    • Content-Encoding 压缩类型

  • Cache 和 Buffer
    • cache 缓存,cache映射表结构是【有效位| 标记块|快內数据】,因为CPU的速度是远远大于主存的,所以需要用到cache来更快的访问到在主存中访问的数据,所以应用将主存信息映射到cache中。一般用于循环的数据,将加载过的数据存放在cache中,以便查表再找。

    • Buffer 缓冲, 针对工作流,有上下游的关系,也是硬件的速度不均的问题导致缓冲的出现。例如:下载大文件时,如果下载速度和写入硬盘的速度不均衡,可以把多出来的先存缓冲中再写入。

  • Cache-Control(了解----Header)
    • no-cache 可以缓存,再次使用时需要来问资源是否失效,可以缓存。
    • no-store 不缓存
    • max-age 到失效期之前,绝对有效
    • last-Motified 最近改变的时间
    • if-Motified-Since 是否改动过
    • Etag 服务器提取的指纹信息
    • private/public 服务器提示是否需要缓存的定制化个性信息。
  • REST(具体内容见下)

    作用是约束了整个Http的风格架构(里面的参数也是常用限制http的参数,像传个数据,得返回个响应回来etc.),RESTful HTTP (这里就是‘正确使用HTTP’的意思,并没有链接里面说的辣么复杂)具体内容见下链接:

    🔗REST、RESTful与HTTP

    网络篇后续正式内容:加密,,授权(Https,TCP/IP),,从Retrofit看HTTP ,Ok,热更新,Rx etc.穿插专题,网络篇的后续内容将不开放,大概在20天左右结束。


🔗 前言
🔗 Android 网络列表
🔗 NO1.加密-授权-协议
🔗 NO2.Retrofit和Http
🔗 NO3.从OkHttp看Http
🔗 NO4.剖析RxJava2

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

零蚀zero eclipse

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值