上篇文章介绍了传输层TCP协议的理论知识,本文主要介绍了TCP协议基础之上HTTP协议和HTTPS协议的理论知识。html
HTTP协议基于TCP协议定义了客户端向服务器请求数据的方式,它是面向事务的应用层协议具备灵活、简单快速、无链接和无状态的特色,是网络中交换各种数据的基础。浏览器
HTTP报文的格式以下所示:安全
咱们能够看出,HTTP协议的报文主要分为报文首部和报文主体两部分,中间用空行隔开。下面让咱们详细介绍一下请求报文和响应报文:服务器
请求报文由三部分组成:请求行,请求报头,报文主体(请求数据)。以下图所示cookie
请求行中包括了请求方法、URI、协议版本三部分信息。网络
其中请求方法包括如下八种,经常使用的是GET和POST:并发
请求的URI标识了请求资源的位置,而协议版本主要有HTTP/1.0和HTTP/1.1两个版本。post
请求报头中包含了有关请求的各类信息,例如性能
User-Agent:产生请求的浏览器类型。
Accept:客户端可识别的内容类型列表。
Host: 请求的主机名,容许多个域名同处一个IP地址,即虚拟主机。 测试
报文主体中存放了请求的数据,主要是在post方法中使用,适用于提交表单等场合。
响应报文也由三部分构成:状态行,响应报头,报文主体,以下图所示:
状态行中包括HTTP协议版本,响应状态码以及状态码的文本描述。其中状态码有五类:
1xx:指示信息--表示请求已接收,继续处理
2xx:成功--表示请求已被成功接收、理解、接受
3xx:重定向--要完成请求必须进行更进一步的操做
4xx:客户端错误--请求有语法错误或请求没法实现
5xx:服务器端错误--服务器未能实现合法的请求
响应报头中包含了有关响应的各类信息。在报文主体中包含了须要传输的响应数据,例如HTML,二进制的数据等等。
介绍完了HTTP协议的请求与响应报文,下面以浏览器请求HTML页面为例,咱们看一下HTTP客户端与服务器之间的交互过程:
HTTP使用了TCP协议保证了可靠传输,但其自己是无链接的,也就是说双方在发送报文以前无需创建链接。同时,HTTP协议也是无状态的,服务器不保存客户端信息,更容易支持大量并发的HTTP请求。在HTTP1.0中,每次请求一个链接对象,都要发起一次链接,这样会致使请求很低效。在HTTP1.1中,使用了持续链接,也就是说服务器在响应客户端请求后在一段时间内保持链接,这样客户端与服务器之间在一段时间内能够持续保持着条链接。HTTP1.1协议持续链接有两种工做方式:
上面提到HTTP协议是无状态的,不管客户端仍是服务端都不记录HTTP相关信息。可是能够经过cookie来保存客户端和服务端保存信息,机制以下:
cookie是一种很小的文本文件,用于在客户端保存由服务器肯定的内容,请求报文会自动添加cookie中的内容。
HTTP协议在传输过程当中采用明文,而且无认证和完整性验证。而HTTPS就是使用了SSL协议的HTTP协议,虽然牺牲了速度,可是保证了数据的安全性,适用于金融支付环境。
总结完HTTP协议的知识,下一篇文章将会介绍在Android开发中会用到的HttpClient和UrlConnection库。