利用Python进行Web渗透测试(四):HTTP协议基础



本篇将会涉及:

  • 什么是HTTP,以及HTTP的工作方式
  • HTTP的方法

一、什么是HTTP

HTTP协议

HTTP全称超文本传输协议,一个设计用来来客户端和服务器之间进行通信的协议。HTTP在网络世界中属于OSI模型的第七层——应用层,也属于TCP/IP模型的第四层——应用层。

关于什么是OSI模型,什么又是TCP/IP模型,简而言之,其是计算机网络世界的一个网络体系结构,用来定义计算机网络及其各个部分通信的原理的作用。
下图是OSI模型和TCP/IP模型的一个简单示例图:

OSI模型与TCP/IP模型

OSI模型与TCP/IP模型

OSI模型与TCP/IP模型并非是一一对应的,但是思路和结构大体上是相似的。
TCP/IP模型中的网络接口层就是我们的各种网络设备(路由器、交换机、电脑等)的网络接口以及接口之间的物理链路(网线、光纤等);网际层则是网络设备之间的寻址和路由,确定两个设备之间通信的路径,IP地址就是作用在这一层;接下来的传输层就是在通过IP确定了设备之间的路由后,进行勾搭和建立联系,这一层的主要协议是TCP和UDP,TCP是面向连接的传输协议(经典的三次握手),在双方的确认之下,两者才会建立起网络连接,而UDP则是面向无连接的传输协议,通讯时不需要接收方确认,属于不可靠的传输。最后就是应用层了,这一层定义了很多高级的传输协议,比如我们的网络爬虫涉及到的HTTP,还有DNS、FTP等,很多网络应用均是基于这一层的网络协议进行开发的。

TCP/IP各层及其常用协议

TCP/IP各层及其常用协议

我们的网络爬虫涉及到上三层,比如获取HTML涉及的http,使用代理IP涉及到的IP,以及建立通信连接的TCP/UDP。

下面,我们使用wireshark抓取打开一个网页的数据包,通过对网络数据进行抓包,我们能够很清晰的理清TCP/IP各层的关系。

打开网址www.huabandata.com的HTTP数据包

打开网址www.huabandata.com的HTTP数据包

 

从图中可以看到,我们向远处服务器发送了一个HTTP请求,捕获到的数据包则显示我们发送出去的HTTP请求是以Frame帧进行传输的。

我们的请求字段数据打包在HTTP请求中,HTTP请求打包在了TCP请求中,TCP请求进而通过IP进行打包,最后通过Frame帧传输出去。这就完成了一个请求网页的过程。

HTTP协议的工作方式

HTTP用来实现客户端和服务器端的通信,主要依靠请求和响应来完成一个工作。
客户端发送请求,服务器端响应请求。在一次HTTP连接中,发送请求的永远都是客户端,而回复响应的则永远都是服务器端。并且,在HTTP中,只能由客户端发送请求,服务器端才能响应,否则服务器端不能主动对客户端进行响应。

现实世界的体现就是,网站服务器不会平白无故给我们返回一个HTML页面,我们只有输入或点击一个网址,网页才会呈现在浏览器上。

HTP的请求与响应

HTP的请求与响应

HTTP的协议版本

HTTP协议拥有两个版本:

  • HTTP/1.0
  • HTTP/1.1

http1.0是http协议的基础,而http1.1则添加和完善和http1.0的功能。

HTTP运行的端口

默认情况下,HTTP协议运行在服务器端的80端口上。

HTTPS

HTTP协议使用明文进行传输和通信,这对某些隐秘的通信就很不安全,容易被窃取。
于是HTTPS应运而生。
HTTPS 使用SSL或TLS对HTTP的消息进行加密,并运行在443端口上

HTTP的消息结构

通常一个HTTP消息包括客户端向服务器端发送的请求消息和服务器端向客户端发送的响应消息。这两种类型的消息均由一个起始行,一个或者多个头域,一个指示头域结束的空行和可选的消息体组成。
其中,请求消息:

  • 起始行:由请求方法、请求的URL以及使用的HTTP协议版本三部分组成
  • 头域:各种请求头(下面详述)
  • 消息体:一般的GET请求没有消息体
HTTP请求的消息结构

HTTP请求的消息结构

响应消息:

  • 起始行:由响应的协议版本、响应状态码和响应状态码描述三部分组成;
  • 头域:各种响应头
  • 消息体:响应请求的正文,比如一个HTML页面、一个文件、一个图片等
HTTP响应的消息结构

HTTP响应的消息结构

二、HTTP的方法

根据HTTP标准的定义,HTTP的请求方法有以下8种:

  • GET:请求指定的资源,并返回资源实体。
  • POST:向指定的资源提交数据并处理请求(上传文件或提交表单之类的操作)。
  • HEAD:类似于GET方法,请求指定的资源,但不返回资源实体。
  • PUT:请求更新指定的资源。
  • DELETE:请求删除指定的资源。
  • OPTIONS:返回服务器对指定资源所支持的请求方法。
  • TRACE:回显服务器收到的请求,主要用来测试或诊断。
  • CONNECT:HTTP/1.1协议中预留给能够将连接改为管道方式的代理服务器。

其中:

  • 在HTTP/1.0中定义的方法有:get、post、head
  • 在HTTP/1.1中定义的方法有:options、put、delete、trace、connect等

发表评论

电子邮件地址不会被公开。