Web交互基本流程以及HTTP协议详解
一、web交互的基本流程及为何需要HTTP
客户端根据用户输入的地址信息请求服务器,服务器在接收到用户的请求后进行处理,然后将处理结果相应给客户端,客户端将响应结果展示给用户。
1.专业术语:
- 请求:客户端根据用户地址信息将数据发送给服务器的过程。
- 相应:服务器将请求的处理结果发送到浏览器的过程。
2.为什么需要HTTP?
- 问题:浏览器的版本是很多的,服务器的版本也是很多的,如何实现不同版本的浏览器和不同版本的服务器之间的数据交互呢?
- 解决:规范浏览器和服务器间数据交互的格式
- 实现:HTTP协议
既然Web应用程序的文件等资源是放在服务器上,而服务器式因特网上的主机,当然必须要有一个方式,告诉浏览器到哪里取得文件等资源。通常会听到需要制定URL / URN / URI然而这些都是什么东东?
- URL:Uniform Resource Locator
- URN:Uniform Resource Name
- URI:Uniform Resource Identifier
翻译过来分别是:统一资源地址、统一资源名、统一资源标识符
URL主要格式:
<协议> : <特定协议部分>
协议指定了以何种方式取得资源。一些例子:
- ftp(文件传输协议)
- http(超文本传输协议)
- mailto(电子邮件)
- file(特定主机文件名)
协议之后跟随冒号,特定协议部分的格式则为:
//<用户>:<密码>@<主机>:<断口号>/<路径>
二.HTTP协议的概念和介绍
概念:
超文本传输协议:(Hyper Text Transfer Protocal)
作用:
规范了浏览器和服务器的数据交互
特点:
- 简单快速:客户向服务器请求服务时,只需要传送请求方法和路径。请求方法常用的有GET、HEAD、POST。每种方法规定了客户与服务器联系的类型不同。由于HTTP协议简单,使得HTTP服务器的程序规模小,因而通信速度很快。
- 灵活:HTTP允许传输任意类型的数据对象。正在传输的类型由Context-type加以标记。
- 无连接:无连接的含义是限制每次连接只处理一个请求,服务器处理完客户的请求,并受到客户的应答后,即断开连接。采用这种方式可以减少传输时间。
- 无状态:HTTP是无状态协议。无状态是指协议对于事务处理没有记忆能力。缺少状态意味着如果后续处理需要前面的信息,则它必须重传,这样可以导致了每次连接传送的数据量增大。另一方面,在服务器不需要先前的信息时它的应答就比较快。
- 支持B/S,C/S模式
- HTTP1.1之后支持可持续连接
基于请求响应、无状态是HTTP的两种基本特性。
三、GET请求与POST请求
浏览器在使用HTTP发出请求时,可以有以下几种请求方法,如GET、POST、HEAD、PUT、DELETE等,而大多数情况下,只会用到GET和POST。
1.GET请求:
GET请求顾名思义,就是向服务器取得(GET)指定的资源,在发出GET的请求时,必须一并告诉服务器所请求资源的URL,以及一些标头(Header)的信息。例如,一个GET请求的发送范例如图所示。
- GET/Gossip/download?file=servlet&user=caterpillar HTTP/1.1
- HTTP方法+请求的URL+请求参数+HTTP版本。
HTTP所有的通信数据都是使用“字符”来进行协议交换,请求参数通常是用户发送给服务器的必要信息,这个信息通常是利用窗体来进行发送,服务器必须有这些信息才可以进一步针对用户的请求作出正确的响应,请求参数在URL之后跟随一个问号?,然后是参数名称(name)与请求参数值(value),若有多个请求参数,则以&字符连接。使用GET方式发送浏览器的地址栏上也会出现请求参数信息。
GET请求可以发送的请求参数长度有限(这个长度根据浏览器版本而有所不同),太大量的数据不适合用GET方式来进行请求,这时可以改用POST。
2.POST请求
POST请求,顾名思义,就是在请求时发布(POST)信息给服务器,对于复杂的信息发送,例如文件上传,基本上会采用POST发送。一个POST发送的翻译如下所示。
POST信息体的内容长度不受限制,所以大量数据的发送都使用POST方法,而由于请求参数移至信息体,地址栏上也就不会出现请求参数。对于一些较敏感的信息,即使长度不长,通常也会改用POST的方式发送。
3.如何选用GET或者POST
四、HTTP的协议流程与请求格式
1.协议流程
HTTP的交互流程一般可以分为四个步骤(一次完整的请求):
- 客户端和服务器端建立连接
- 客户端发送数据到服务器端
- 服务端接收到请求后,进行处理后,然后将处理相应的客户端
- 关闭客户端和服务端的连接(HTTP1.1后不会立即关闭)
2.请求格式
请求格式的结构:
- 请求头:请求方式、请求的地址、和HTTP协议版本。
- 请求行:消息报头、一般用来说明客户端要使用的一些附加信息。
- 空行:位于请求行和请求数据间,空行是必须的。
- 请求数据:非必须
注意:一张网页的内容是及其丰富的,浏览器会遵循HTTP请求的格式将有效数据发送给服务器。
详见以下链接: