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

TCP/IP各层及其常用协议

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

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

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

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

HTTP协议的工作方式

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

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

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请求的消息结构

响应消息:

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

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等

原文发布于微信公众号 - 州的先生(zmister2016)

原文发表时间:2017-11-13

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏大内老A

The .NET of Tomorrow

Ed Charbeneau(http://developer.telerik.com/featured/the-net-of-tomorrow/) Exciti...

32710
来自专栏一个会写诗的程序员的博客

Spring Reactor 项目核心库Reactor Core

Non-Blocking Reactive Streams Foundation for the JVM both implementing a Reactiv...

2232
来自专栏pangguoming

Spring Boot集成JasperReports生成PDF文档

由于工作需要,要实现后端根据模板动态填充数据生成PDF文档,通过技术选型,使用Ireport5.6来设计模板,结合JasperReports5.6工具库来调用渲...

1.2K7
来自专栏Ceph对象存储方案

Luminous版本PG 分布调优

Luminous版本开始新增的balancer模块在PG分布优化方面效果非常明显,操作也非常简便,强烈推荐各位在集群上线之前进行这一操作,能够极大的提升整个集群...

3265
来自专栏杨龙飞前端

scrollto 到指定位置

2554
来自专栏张善友的专栏

Silverlight + Model-View-ViewModel (MVVM)

     早在2005年,John Gossman写了一篇关于Model-View-ViewModel模式的博文,这种模式被他所在的微软的项目组用来创建Expr...

3038
来自专栏我和未来有约会

Silverlight第三方控件专题

这里我收集整理了目前网上silverlight第三方控件的专题,若果有所遗漏请告知我一下。 名称 简介 截图 telerik 商 RadC...

4085
来自专栏张善友的专栏

Miguel de Icaza 细说 Mix 07大会上的Silverlight和DLR

Mono之父Miguel de Icaza 详细报道微软Mix 07大会上的Silverlight和DLR ,上面还谈到了Mono and Silverligh...

2737
来自专栏一个爱瞎折腾的程序猿

sqlserver使用存储过程跟踪SQL

USE [master] GO /****** Object: StoredProcedure [dbo].[sp_perfworkload_trace_s...

2200
来自专栏C#

DotNet加密方式解析--非对称加密

    新年新气象,也希望新年可以挣大钱。不管今年年底会不会跟去年一样,满怀抱负却又壮志未酬。(不过没事,我已为各位卜上一卦,卦象显示各位都能挣钱...)...

4988

扫码关注云+社区