4.1.HTTP网络请求原理

HTTP是一种应用层协议,它通过TCP实现了可靠的数据传输,能够保证数据的完整性、正确性,而TCP对于数据传输控制的优点也能够体现在HTTP上,使得HTTP的数据传输吞吐量、效率得到保证。

对于移动开发来说,网络应用基本上都是C/S架构,也就是客户端/服务器架构。客户端通过向服务器发起特定的请求,服务器返回结果,客户端解析结果,再将结果展示在UI上。客户端与服务器的交互如下图:
4.1.HTTP网络请求原理_第1张图片
详细的交互流程有如下几步:
(1)客户端执行网络请求,从URL中解析出服务器的主机名
(2)将服务器的主机名转换成服务器的IP地址
(3)将端口号从URL中解析出来
(4)建立一条客户端与Web服务器的TCP连接
(5)客户端通过输出流向服务器发送一条HTTP请求
(6)服务器向客户端回送一条HTTP响应报文
(7)客户端从输入流获取报文
(8)客户端解析报文,关闭连接
(9)客户端将结果显示在UI上

4.1.1.HTTP的请求方式

HTTP协议提供了几种请求方式,每种请求方式都有不同的作用。被大家熟知的请求方式有如下7种GET、POST、DELETE、PUT、HEAD、TRACE、OPTIONS。其中PUT、DELETE、POST、GET分别对应了资源的增、删、改、查4个功能,也是客户端中运用最多的4个请求。

4.1.1.1.GET请求

GET是最常用的方法,它的作用是获取服务器中的某个资源。如下图显示了一个例子,在这个例子中,客户端用GET方法发起了一次HTTP请求,然后服务器将对应的资源返回给客户端。
4.1.HTTP网络请求原理_第2张图片
图中客户端请求的资源是www.54dxs.net/articles路径下的123.html,服务端将123.html返回给客户端。需要注意的是,GET请求的参数都需要放到请求的URL中,第一个参数之前有一个“?”,参数的格式为:参数名=参数值,参数之间通过“&”连接。例如:我们在请求www.54dxs.net/articles/123.html时希望传递用户名和用户id两个参数,那么格式应该是这样的:www.54dxs.net/articles/123.html?username=lijian&userid=123。

4.1.1.2.POST请求

POST方法起初是用来向服务器传递数据的。实际上,POST请求通常会用来提交HTML的表单。表单中填好的数据会被传输给服务器,然后由服务器对这些数据进行处理。图显示了一个用POST请求的执行流程。
4.1.HTTP网络请求原理_第3张图片

4.1.1.3.PUT请求

与GET从服务器读取资源相反,PUT方法会向服务器写入资源。有些发布系统允许用户创建Web页面,并用PUT直接将其传输到Web服务器上,如图所示:
4.1.HTTP网络请求原理_第4张图片
PUT方法的语义就是让服务器用请求的主体部分来创建一个由所请求的URL命名的新文档,如果那个URL已经存在的话,就用这个资源来替代他。例如,在下图中请求中会在www.54dxs.net的网站跟目录下创建一个new-art.txt的文件,文件内容为“This is file content”。

4.1.1.4.DELETE请求

顾名思义,DELETE方法所做的事情就是请服务器删除请求URL所指定的资源。但是,客户端应用程序无法保证删除操作一定会被执行。因为,HTTP规范允许服务器在不通知客户端的情况下撤销请求。图显示了一个DELETE方法实例。
DELETE方式与GET请求一样,参数都需要放在请求的URL中。
4.1.HTTP网络请求原理_第5张图片

4.1.1.5.HEAD请求

HEAD方法与GET方法的行为很类似,但服务器的响应中只返回首部。不会返回实体的主体部分。这就允许客户端在未获取实际资源的情况下,对资源的首部进行检查。使用HEAD可以在不获取资源的情况下了解资源的情况(比如,判断其类型);通过查看响应中的状态码,看看某个对象是否存在;通过查看首部,测试资源是否被修改了。服务器开发者必须确保返回的首部与GET请求所返回的首部完全相同。遵循HTTP/1.1规范,就必须实现HEAD方法。如图所示:
4.1.HTTP网络请求原理_第6张图片

4.1.1.6.TRACE请求

客户端发起一个请求时,这个请求可能要穿过防火墙、代理、网关或其他一些应用程序。每个中间节点都可能会修改原始的HTTP请求。TRACE方法允许客户端在最终将请求发送给服务器时,看看他变成了什么样子。
TRACE请求会在目的服务器端发起一个“回环”诊断。行程最后一站的服务器会弹回一条TRACE响应,并在响应主体中携带他收到的原始请求报文。这样客户端就可以查看在所有中间HTTP应用程序组成的请求/响应链上,原始报文是否以及如何被毁坏或修改过,如图所示:
4.1.HTTP网络请求原理_第7张图片
TRACE方法主要用于诊断,也就是说,用于验证请求是否如愿穿过了请求/响应链。他也是一种很好的工具,可以用来查看代理和其他应用程序对用户请求所产生效果。

4.1.1.7.OPTIONS请求

OPTIONS方法请求Web服务器告知其支持的各种功能。可以询问服务器通常支持哪些方法,或者对某些特殊资源支持哪些方法(有些服务器可能只支持对一些特殊类型的对象使用特定的操作)。这为客户端应用程序提供了一种手段,使其不用实际访问那些资源就能判定访问各种资源的最优方式。如图显示了一个使用OPTIONS方法的请求。
4.1.HTTP网络请求原理_第8张图片

你可能感兴趣的:(通讯协议,网络,http,http协议)