协议就是网络中通信双方所应遵循的规则。互联网为我们提供了各种各样的服务,比如Web、eMail、FTP等,每一种服务都需要通过相应的协议来实现,其中Web服务所使用的就是HTTP协议。
HTTP超文本传输协议,它详细规定了在客户端(浏览器)和Web服务器(Web服务)之间互相通信应遵循的规则。
HTTP协议遵循请求(Request)/响应(Responses)模型,所有的HTTP通信都被构造成一对HTTP请求和HTTP响应。HTTP请求只能由客户端发起,服务器不能主动向客户端发送数据。当客户端通过浏览器向Web服务器发送请求时,Web服务器处理请求并返回相应的应答。
比如我们访问www.51cto.com,并通过Burpsuite进行拦截。首先拦截到客户端发出的HTTP请求,将之发送到Repeater模块,发送出去之后,就会收到服务器返回的HTTP响应。
在客户端通常都是通过浏览器发起HTTP请求,浏览器的作用其实就是将那些HTML标签渲染成人类可以接受的直观界面,否则就会像我们通过Burpsuite所拦截到的数据包那样,只是一堆代码。除了浏览器之外,在客户端也可以借助一些工具发起HTTP请求,比如curl。
对于Web服务器端,比如一个典型的PHP动态网站,主要是由三个部分组成的:Web服务、PHP预处理器、数据库。
Web服务是指Apache、Nginx等,负责接收并处理HTTP请求。单纯的Web服务只能响应静态页面的静态请求,也就是说,如果客户端浏览器请求的是静态页面,此时只需要Web服务响应该请求;如果浏览器请求的是动态页面,此时Web服务会委托PHP预处理器将该动态页面的PHP代码解释执行,并将执行结果生成为HTML静态页面,然后再将静态页面返回给客户端浏览器进行显示。PHP预处理器在解释执行PHP代码时,往往需要从数据库中调取或存入数据。