一.什么是HTTP协议?
HTTP中文又称超文本传输协议,是Hyper Text Transfer Protocol的缩写,它是一个 运行在TCP之上的简单的请求-响应协议。它指定了客户端可能发送给服务器什么样的消息以及得到什么样的响应。
二.HTTP的应用场景
HTTP诞生之初主要是应用于WEB端内容获取,那时候内容还不像现在这样丰富,排版也没那么精美,用户交互的场景几乎没有。对于这种简单的获取网页内容的场景,HTTP表现得还算不错。但随着互联网的发展和WEB2.0的诞生,更多的内容开始被展示(更多的图片文件),排版变得更精美(更多的CSS),更复杂的交互也被引入(更多的JS)。用户打开一个网站首页所加载的数据总量和请求的个数也在不断增加。
今天绝大部分的门户网站首页大小都会超过2M,请求数量可以多达100个。另一个广泛的应用是在移动互联网的客户端app,不同性质的app对HTTP的使用差异很大。对于电商类app,加载首页的请求也可能多达10多个。对于微信这类IM,HTTP请求可能仅限于语音和图片文件的下载,请求出现的频率并不算高。
三.HTTP的工作原理
一次HTTP操作称为一个事务,其工作过程可分为四步:
1、首先客户机与服务器需要建立连接。只要单击某个超级链接,HTTP的工作就开始了。
2、建立连接后,客户机发送一个请求给服务器,请求方式的格式为:统一资源标识符(URL)、协议版本号,后边是MIME信息包括请求修饰符、客户机信息和可能的内容。
3、服务器接到请求后,给予相应的响应信息,其格式为一个状态行,包括信息的协议版本号、一个成功或错误的代码,后边是MIME信息包括服务器信息、实体信息和可能的内容。
4、客户端接收服务器所返回的信息通过浏览器显示在用户的显示屏上,然后客户机与服务器断开连接。
四.HTTP的报文格式
1.HTTP请求报文格式
请求报文由三部分组成:请求行(request line)、首部行(header line)、实体体(entity body)。
具体如下图所示:
2.HTTP响应报文格式
响应报文由三部分组成:状态行(status line)、首部行(header line)、实体体(entity body)。
具体如下图所示:
五.HTTP状态码及其分类
当浏览者访问一个网页时,浏览者的浏览器会向网页所在服务器发出请求。当浏览器接收并显示网页前,此网页所在的服务器会返回一个包含 HTTP 状态码的信息头(server header)用以响应浏览器的请求。
HTTP 状态码由三个十进制数字组成,第一个十进制数字定义了状态码的类型。响应分为五类:信息响应(100–199),成功响应(200–299),重定向(300–399),客户端错误(400–499)和服务器错误 (500–599):
分类 | 分类描述 |
---|---|
1** | 信息,服务器收到请求,需要请求者继续执行操作 |
2** | 成功,操作被成功接收并处理 |
3** | 重定向,需要进一步的操作以完成请求 |
4** | 客户端错误,请求包含语法错误或无法完成请求 |
5** | 服务器错误,服务器在处理请求的过程中发生了错误 |
六.HTTP与HTTPS的区别
1.HTTPS协议需要到CA申请证书,一般免费证书很少,需要交费。
2.HTTP是超文本传输协议,信息是明文传输,https 则是具有安全性的ssl加密传输协议。
3.HTTP和HTTPS使用的是完全不同的连接方式用的端口也不一样,前者是80,后者是443。
4.HTTP的连接很简单,是无状态的,而HTTPS协议是由SSL+HTTP协议构建的可进行加密传输、身份认证的网络协议 要比HTTP协议安全。