HTTP协议基础_1_HTTP简介

进行接口测试的前提就是要熟悉HTTP协议;

当你在浏览器地址栏敲入“http://www.baidu.com/”,然后猛按回车,呈现在你面前的,将是百度的首页了我想你有必要去了解这一系列的处理流程,在这期间,浏览器和服务器到底是如何打交道的?服务器又是如何处理的?浏览器又是如何将网页显示给用户的呢?…

本文中,我将根据http协议的有关知识,跟大家讲解一些web开发的本质。

何为http协议(Hypertext Transfer Protocol,超文本传输协议)?

所谓协议,就是指双方遵循的规范。http协议,就是浏览器和服务器之间进行“沟通”的一种规范。我们在看空间,刷微博…都是在使用http协议,当然,远远不止这些应用。

笔者一直听说http是属于“应用层的协议”,而且是基于TCP/IP协议的。这个不难理解,如果你上大学时候学过“计算机网络”的课程,就一定知 道OSI七层参考协议。如果你接触过socket网络编程,就应该明白TCP和UDP这两种使用广泛的通信协议(建立连接、三次握 手等等,当然,这不是本文讨论的重点)。如图:
HTTP协议基础_1_HTTP简介
既然TCP/UDP是广泛使用的网络通信协议,那为啥有多出个http协议来呢?

TCP协议是基于连接和三次握手的,虽然具有可靠性,但人具有一定的缺陷。但试想一下,普通的C/S架构软件,顶多上千个Client同时连接,而B/S架构的网站,十万人同时在线也是很平常的事儿。如果十万个客户端和服务器一直保持连接状态,那服务器如何满足承载呢?

这就衍生出了http协议**。基于TCP的可靠性连接**。通俗点说,就是在请求之后,服务器端立即关闭连接、释放资源。这样既保证了资源可用,也吸取了TCP的可靠性的优点。

正因为这点,所以大家通常说http协议是“无状态”的,也就是“服务器不知道你客户端干了啥”,其实很大程度上是基于性能考虑的。以至于后来有了session之类的玩意。

1.HTTP简介

HTTP(Hypertext Transfer Protocol,超文本传输协议)是一个应用层协议,从1990年开始,http是万维网中不同机器之间数据通讯的基础。HTTP是一种通用的无状态的协议,使用请求和错误状态码和头可以用于其他目的。

基本上可以这么理解,HTTP是基于TCP/IP的一种通信协议,主要用来万维网之间数据交互,默认的端口是TCP 80,当然80端口其他协议也可以使用。HTTP为计算机相互通信提供了标准化方法。HTTP规范指定如何构造客户端的请求数据并将其发送到服务器,以及服务器如何响应这些请求。

2.基本功能

以下三个特征使得HTTP简单但是功能强大的一种协议。

HTTP是无连接的

在HTTP客户端,例如一个浏览器发起HTTP请求,请求发出后,等待服务器给回的响应内容。服务器处理请求并发回响应,然后客户端断开连接。因此,客户端和服务器仅在当前请求和响应期间相互了解。对客户端和服务器之类的新连接的进一步请求是彼此新的。

HTTP与媒体无关

这意味着,只要客户端和服务器都知道如何处理数据内容,就可以通过HTTP发送任何类型的数据。 客户端和服务器都需要使用适当的MIME类型指定内容类型。

HTTP是无状态的

如上所述,HTTP是无连接的,它是HTTP作为无状态协议的直接结果。 服务器和客户端仅在当前请求期间相互了解。 之后,他们两个都忘记了彼此。 由于协议的这种性质,客户端和浏览器都不能在跨网页的不同请求之间保留信息。

3.基础架构

下图显示了Web应用程序的一个非常基本的体系结构,并描述了HTTP的位置:
HTTP协议基础_1_HTTP简介
HTTP协议就在Client和Server之间的一层。主要用来传输请求和响应的数据。先来理解下面两个概念,以后经常说到。

客户端:

HTTP客户端以请求方法,URI和协议版本的形式向服务器发送请求,然后是类似MIME的消息,其中包含请求修饰符,客户端信息以及TCP / IP连接上的可能正文内容。客户端在电脑PC端一般指就是浏览器,手机中app也是浏览器。

服务端:

HTTP服务器以状态行响应,包括消息的协议版本和成功或错误代码,然后是包含服务器信息,实体元信息和可能的实体主体内容的类似MIME的消息。

4.HTTP/1.0和HTTP/1.1的区别

当前我们都是使用HTTP/1.1,最大区别就是在HTTP/1.0中,为每一个请求和响应创建新连接,而在HTTP/1.1中,一个连接可用于一个或多个请求/响应交换。
怎么理解一个请求可用于多个请求/响应交换。在Servlet技术中,有一个概念叫请求转发。生活中请求转发的例子是,例如,你去一个当地行政办公中心,你到了一个窗口,你告诉柜台你要办什么事情,这个就是请求。这个柜台人说,你要办的事情,他这办不了,但是他可以转给他同事(不在同一个窗口)办。由于你好不容易排队才排上这个窗口,为了避免再次排队,他找他同事办好了,这个过程就是转发请求,办好了,他同事给他,然后他给你,整个过程就产生了多次请求和响应,但是只有一次排队过程,这个排队过程就是一个新的连接。

重点概念:HTTP全称,HTTP/1.1协议,HTTP是无连接,HTTP是无状态