网络协议与攻击模拟_16HTTP协议

1、HTTP协议结构

2、在Windows server去搭建web扫描器

3、分析HTTP协议流量

一、HTTP协议

1、概念

HTTP(超文本传输协议)用于在万维网服务器上传输超文本(HTML)到本地浏览器的传输协议

基于TCP/IP(HTML文件、图片、查询结构等)

2、万维网

  • 采用C/S架构
  • 客户机通过浏览器去请求,从而在浏览器上就可以看到对应图形界面。浏览器/服务器(B/S)

3、万维网服务的软件

  • windows server IIS(Windows平台)
  • apache(多平台)
  • tomcat(多平台)
  • nginx(多平台)
  • ……

二、HTTP工作原理

1、工作原理

  • 在客户端使用浏览器通过URL向HTTP服务器发送请求
    • URL(统一资源定位符),由协议、主机和端口及文件名和路径三部分组成
  • web服务器根据收到的请求直接向客户机响应信息
    • 如果页面不存在的话,会报404错误提示;有的页面会做跳转,如下图中访问了一个不存在的地址,提示“页面没有找到,5秒钟之后会带您进入新浪的首页”。
      网络协议与攻击模拟_16HTTP协议_第1张图片
  • 针对于HTTP默认的端口号是80端口,默认端口可以改(会影响客户机的访问,建议改为其他非标准端口)

2、交互过程

网络协议与攻击模拟_16HTTP协议_第2张图片

3、注意事项

  • HTTP协议是无连接的:“无连接”的含义是限制每次连接只处理一个请求,之后在请求的时候都需要重新建TCP三次握手,虽然每次请求都需要重新建立TCP三次握手,但是这种方式可以节省传输时间,不会存在客户端没有请求了但服务器还保持着的资源占用问题。
  • HTTP是独立的:只要客户端和服务器知道如何去处理数据内容,任何类型的数据都可以通过HTTP发送,客户端及服务器指定使用场合的MIME-type(消息内容类型)
  • HTTP是无状态的:没有记忆能力。“无状态”类似于UDP,如果后续的处理需要前面的信息,就必须重传,每次连接传输的数据量比较大。

    举个例子:某些内容需要登录才能访问,如用户名和密码不会被记录,造成的结果就是后续你要访问登录的内容的时候,就必须把前面的内容要重传一下,这就引入了Session和Cookie。

三、windows server搭建IIS服务

1、新建网站

关掉默认站点,然后添加网站;找到D盘下面建woniu网站的目录及文件。

网络协议与攻击模拟_16HTTP协议_第3张图片

网络协议与攻击模拟_16HTTP协议_第4张图片

添加网站

网络协议与攻击模拟_16HTTP协议_第5张图片

启动后就可以访问了

网络协议与攻击模拟_16HTTP协议_第6张图片

字符编码有点问题,改成gb2312

网络协议与攻击模拟_16HTTP协议_第7张图片

刷新一下就OK了

网络协议与攻击模拟_16HTTP协议_第8张图片

2、winsahrk抓包分析

(1)第一次分析

打开本机的winshark然后浏览器访问下

247.1是物理的Vmnet1网卡的IP地址,前面是和server的三次握手

网络协议与攻击模拟_16HTTP协议_第9张图片

追踪流

网络协议与攻击模拟_16HTTP协议_第10张图片这里就是HTTP协议了,然后我们看下HTTP里面的报文,这里是请求的头部内容。

网络协议与攻击模拟_16HTTP协议_第11张图片

这里响应是304,NOT Modify

网络协议与攻击模拟_16HTTP协议_第12张图片

接着这里做了一个确认,接着又重新请求

网络协议与攻击模拟_16HTTP协议_第13张图片

接着又重新请求

网络协议与攻击模拟_16HTTP协议_第14张图片

接着是一个404响应

网络协议与攻击模拟_16HTTP协议_第15张图片

接着客户机确认了一下

网络协议与攻击模拟_16HTTP协议_第16张图片

下面都是TCP的keep Alive,keep Alive是持久性连接,客户机向服务器发起持久性连接请求

服务器确认客户机的KeepAlive请求

网络协议与攻击模拟_16HTTP协议_第17张图片

其实最好的方式是去追踪TCP流

在这里比较好看一点。

网络协议与攻击模拟_16HTTP协议_第18张图片

其实这里是有问题的,404Not Found

网络协议与攻击模拟_16HTTP协议_第19张图片

(2)第二次分析

修改网页源码

网络协议与攻击模拟_16HTTP协议_第20张图片

重启网站,重新抓包,现在就对了

网络协议与攻击模拟_16HTTP协议_第21张图片

新建网站应该重启一下,我们之前访问的时候虽然浏览器是访问到了页面的,但是根据抓包实际上是有个404 Not Found的。

去追踪一下TCP流,去看这里

网络协议与攻击模拟_16HTTP协议_第22张图片

GET请求,服务器直接响应了页面,页面内容就是我们网站的index.html的源码

网络协议与攻击模拟_16HTTP协议_第23张图片

下面就是持久性连接,它这里Connection携带的是keep-alive持久性连接

网络协议与攻击模拟_16HTTP协议_第24张图片

看到这里一直没有TCP的四次挥手

网络协议与攻击模拟_16HTTP协议_第25张图片

当把这个页面关掉之后,重新访问,这里是RST重连

网络协议与攻击模拟_16HTTP协议_第26张图片

所以从这里看,HTTP协议很简单就一个请求一个响应

但是有数据库就不一样了,比如一些表单也不一样,你要输用户名密码的时候就不一样了。

四、HTTP报文

1、请求报文

请求报文:了解常见的请求方法以及一些字段的含义

  • 请求头
  • 请求方法 / 协议/协议版本
  • Host:主机
  • Connection:keep-alive持久性连接
    因为HTTP是无状态的,请求一个响应一个,比如说我刚登陆用户名和密码,服务器响应用户名没有任何问题,此时就可以访问付费资源了。你马上又要访问付费资源的时候,服务器提示你输入用户名和密码,这个时候就进入了一种死循环吗,服务器不停的让你输用户名和密码,账号和密码都输入成功了吗,也确认了没有问题,但这个时候就是访问不了付费资源。这个时候采用持久性连接,当你输入一次用户名和密码登录后,服务器就记住了并保持登录的状态。
  • Upgrade-Insecure-Request
    现在浏览器都采用安全机制,可以报警,加入这个字段,发送请求时可以升级不安全的请求。因为我们采用的还是HTTP协议,其实就是告诉浏览器这里是可以升级不安全的请求的。
  • User-Agent:客户端的信息,分为两块,一块是浏览器的信息,一块是操作系统的信息。
  • Accept:请求头中的内容,代表用户端可以处理的媒体类型,说白了就是告诉服务器我可以处理的媒体类型有哪些。
  • Accept-Encoding:表示它的压缩方法
  • Accept-Language:语言

2、响应报文

响应报文:知道状态码及其含义

  • 响应头部
    • 协议类型/版本  状态码 
    • Content-Type:text/html与请求报文的Accept相对应表示接收内容的类型
    • Last-Modified:上次修改的日期
    • Accept-Ranges:bytes
    • ETage:被请求变量的实体
    • Server:服务器的信息
    • Date:日期
    • Content-Length:接收内容的长度
  • 响应内容
    • 响应状态码
    • 1XX 表示服务器收到请求
    • 2XX 表示操作成功
    • 3XX 表示重定向(访问页面不存在服务器会根据重定向跳转到相关页面)
    • 4XX 表示用户端出错
    • 5XX 表示服务器错误

你可能感兴趣的:(安全与运维,http,网络协议,网络)