协议是指通信双方必须遵守的规则。HTTP(Hypertext Transfer Protocol,超文本传输协议)是一种详细规定了浏览器和web服务器之间互相通信的规则,通过因特网传送数据的传输协议。HTTP协议保证了浏览器可以更高效的运行,使网络传输效率更高,他不仅保证了计算机正确的快速传输超文本文档,还确定传输文档中的哪一部分内容首先显示(如文本先于图形)等。
HTTP由于其灵活、简单、快捷的特点,应用非常广泛。浏览网页是HTTP的主要应用,但是这并不代表HTTP就只能应用与网页的浏览,HTTP是一种协议,只要通信双方都遵守这个协议,HTTP就有用武之地,比如常用的QQ、迅雷这些软件、都使用了HTTP协议。
1.HTTP协议的工作流程
在网络七层模型中,HTTP处于应用层,也就是传输层之上。事实上,HTTP是基于TCP协议的,而我们常说的HTTPS协议也是在应用层,只是HTTPS在TLS、SSL协议层之上的协议。两者的区别如下:
HTTP(应用层) |
TCP(传输层) |
IP(网络层) |
数据链路层 |
HTTPS(应用层) |
TLS、SSL(应用层) |
TCP(传输层) |
IP(网络层) |
数据链路层 |
HTTPS对于HTTP来说,多了一层关于加密的。
另外一个就是使用端口的区别:
HTTP默认的端口号是80号,HTTPS的默认端口号是443。
HTTP的本质上是基于TCP协议的,而TCP是一个端到端的面向连接的协议。所谓端到端,可以理解为进程和进程间的用些,所以,在HTTP开始传输前,也需要进行TCP的三次握手连接,连接完成之后,HTTP才能进行传输。
在HTTP1.1中,通过connection头设置,默认在HTTP传输完成之后不断开TCP连接,在此之前的版本HTTP则默认是断开连接,也就是同一个客户端的这次请求和上次请求是没有对应关系的。
一次的HTTP操作称为一个事务,其工作过程可以分为以下4步:
(1)首先客户机与服务器需要建立连接,只要点击某个超级链接,HTTP的工作即开始。
(2)建立连接后,客户端发送一个请求给服务器,请求的方式的格式为:统一资源标识符(URL)、协议版本号、MIME信息(包括请求修饰符、客户机信息和可能的内容)。
换句话来说,请求格式:URL+协议版本号+MIME信息
(3)服务器接到请求后,给予相应的响应信息,其格式为一个状态行,包括信息的协议版本号,一个成功或者错误的代码,后边是MIME信息(包括服务器信息、实体信息和可能的内容)。
(4)客户端接收服务器所返回的信息通过浏览器显示在用户显示屏上,然后客户机与服务器断开连接。
如果以上过程中某一步出现错误,那么产生错误的信息将返回到客户端,由显示屏输出,对于用户来说,这些过程是由HTTP自己完成的,用户只要鼠标操作,等待信息显示就可以了。
HTTP协议永远都是客户端发起请求,服务器回送响应,这样就会使得无法实现客户端未发起的请求,而服务器将消息推送给客户端。