Android网络请求HTTP协议

Android网络请求HTTP协议

作者:黑衣侠客


一、简介:

HTTP协议是Hyper Text Transfer Protocol(超文本传输协议)的缩写,是用于从万维网(WWW:World Wide Web)服务器传输超文本到本地浏览器的传送协议。
HTTP是一个基于TCP/IP通信协议来传输数据的。数据包括:HTML文件、图片文件、查询结果等。

二、HTTP的工作原理及特点:

1.典型的HTTP事务处理有如下四个过程:

(1)客户与服务器建立连接
(2)客户向服务器提出请求
(3)服务器接受请求,并根据请求返回相应的文件作答
(4)客户与服务器关闭连接

HTTP协议工作于客户端-服务器的框架上,即客户端向web服务器发送请求,web服务器接收到请求后,向服务器端发送响应信息。
2.HTTP的特点:
HTTP协议有如下特点:

1.HTTP是无连接的:无连接的含义是,限制每次连接值处理一个请求,服务器处理完客户的请求后,并受到客户的应答后,即断开连接。
2.HTTP是媒体独立的:这说明,只要客户端和服务器知道如何处理数据内容,任何类型的数据类型都可以通过HTTP协议发送,客户端和服务器端知道使用合适的MIMR-type内容类型。
3.HTTP是无状态的:HTTP协议是无状态协议。无状态协议是指协议对事物处理没有记忆能力。

三、HTTP的响应步骤:

1.建立TCP连接

在HTTP协议工作开始之前,Web浏览器首先要通过网络与Web服务器建立连接,该连接是通过TCP来完成的,该协议与IP协议共同创建Internet,即著名的TCP/IP协议族,因此,Internet又被称作是TCP/IP网络。
HTTP是比TCP更高层次的应用层协议,根据规则,有底层协议的建立之后,才能进行更高的协议连接,因此,首先要建立TCP连接,一般TCP连接的端口号是80。
TCP/IP连接就是我们比较熟悉的Java中的三次握手。

2.Web浏览器向Web服务器发送请求命令

一旦建立了TCP连接,Web浏览器就会向Web服务器发送请求命令

3.Web浏览器发送请求头信息

浏览器发送器请求命令后,还要以头信息的形式向Web服务器发送一些别的信息,这些信息用来描述浏览器自己,之后,浏览器会发送一空白行来响应服务器,表示它已经结束了该头信息的发送,若是post请求,还会在发送完请求头信息之后发送请求体。

4.Web服务器的应答

客户机向服务机发出请求后,服务器会向客户机发送应答。

例:HTTP/1.1 200 OK

其中,应答的第一部分是协议的版本号和应答状态码

5.Web服务器发送应答头信息

正如客户端会随同请求发送关于自身的信息一样,服务器也会随同应答请求,向用户发送关于它自己的数据及被请求的文档。最后以一个空白行来表示头信息发送到此结束。

6.Web服务器向浏览器发送数据

Web服务器向浏览器发送头信息后,它就以Content-Type应答头信息所描述的格式,发送用户所请求的实际数据。

7.Web服务器关闭TCP连接

一般情况下,一旦Web服务器向浏览器发送了请求数据,它就要关闭TCP连接,如果浏览器或者服务器在其头信息加入了这行代码
Connection:keep-alive
TCP连接在发送后将仍然保持打开状态,于是,浏览器可以继续通过相同的连接发送请求,保持连接,节省了为每个请求建立新的连接所需要的时间。

四、HTTP的发展史(协议版本):

HTTP发展至今一共经历了四个版本,第一个HTTP 0.9 诞生于1989年3月。

1.HTTP 0.9

HTTP 0.9 是第一个版本的HTTP协议。它的组成级其简单,只允许客户端发送GET这一种请求,且不支持请求头。由于没有协议头,造成了HTTP 0.9协议只支持一种内容,即纯文本。不过网页仍然支持用HTML语言格式化,同时无法插入图片。
一次HTTP 0.9的传输首先要建立一个由客户端到Web服务器的TCP连接,由客户端发起一个请求,然后由Web服务器返回页面内容,然后连接会关闭。如果请求的页面不存在,也不会返回任何错误码。
HTTP 0.9具有典型的无状态性,每个事务独立进行处理,事务结束时就释放这个连接。但 HTTP 0.9 早已过时。

2.HTTP 1.0

相对于 HTTP 0.9 增加了以下特性:

(1)请求和响应支持头域
(2)响应对象不止限于超文本
(3)开始支持POST方法,支持GET,支持HEAD方法
(4)支持长连接(但是默认还是短连接)、缓存机制以及身份认证

3.HTTP 1.1

HTTP协议的第三个版本是HTTP1.1,是目前使用最为广泛的协议版本。
HTTP 1.1引入了许多关键的性能优化:

1.keepalive 连接
2.chunked编码传输
3.字节范围请求
4.请求流水线,等

keepalive连接:

允许HTTP设备在事务结束之后将TCP连接保持在打开状态,HTTP请求重用现在的连接,直到客户端或服务器端决定将其关闭为止。
在HTTP1.0中使用长连接需要请求头Connection:Keep-Alive,而在HTTP1.1所有的连接默认都是长连接,除非特殊声明不支持(HTTP请求报文首部加上Connection:close)

chunked编码传输:

该编码将实体分块传送并逐块标明长度,直到长度为0块表示传输结束,这在实体长度未知时特别有用(例如:利用数据库动态产生数据)

字节请求范围:

HTTP1.1支持传送内容的一部分,例如:当客户端已经有了内容的一部分,为了节省宽带,则只向服务器请求一部分。该功能在请求消息中通过引入range头域来实现,它允许只请求资源的某个部分。在响应消息中Content-Range头域声明了返回的这部分对象的偏移值和长度。如果,服务器相应的返回了对象所请求的范围内容,则响应码为206(Partial Content)

其他功能:

请求头和响应消息都支持Host头域
新增了一些方法
缓存处理中,引入了实体标签

HTTP 2.0

HTTP 2.0是下一代HTTP协议,目前应用还比较少
主要特点:

多路复用(二进制分帧)

HTTP 2.0最大的特点是,不会改动HTTP的语义、HTTP方法、状态码、URL及首部字段等等,这些功能得到了原有的大幅度升级,改进了传输性能,实现了低延迟和高存储量。之所以叫2.0,是因为在于新增的二进制分帧层。在二进制分帧层上,HTTP 2.0 会将所有的传输信息分割为更小的消息和帧,并对他们采用二进制格式的编码,其中HTTP的首部信息会被封装到Headers帧,而我们的request body则封装到Data帧里面。

头部压缩

当一个客户端向相同的服务器请求许多资源时,像来自同一个网页的图像,将会有大量的请求看上去几乎同样的,这就需要压缩技术对付这种几乎相同的信息。

随时复位

HTTP1.1一个缺点就是当HTTP信息由一定的长度大小数据传输时,不能方便的随时停止它,中断TCP连接的代价是昂贵的。但使用HTTP 2.0的RST_STREAM将能方便的停止一个信息的传输,启动新的信息,在不中断连接的情况下提高宽带的利用率。

服务器端推流(Server Push)

客户端请求一个资源X,服务器判断也许客户端还需要资源Z,在无需事先询问客户端的情况下,将资源Z推送给客户端,客户端接受到后,可以缓存起来以备后用。

优先权和依赖

每个流都有自己的优先级别,会表明哪个流是重要的,客户端会指定哪个流是最重要的,有一些依赖参数,这样一个流可以依赖另外一个流。优先级别可以在运行时动态改变,当用户滚动页面时,可以告诉浏览器哪个图像是最重要的,当然,也可以在一组中进行优先筛选,能够有效的抓住重点流。

这是我在github上找到的关于HTTP的知识点详解,十分详细 github

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值