http协议详解<一>
写在前面:感谢米安网,感谢task分享,感谢Assassin_CHN分享
http协议是一个渗透测试人员或者开发人员必须要懂的协议,我们访问网站也必须要用到http协议。
1.http简介
http(Hyper Text Transfer Protool超文本传输协议),一种详细规定了浏览器和万维网服务器之间互相通信的规则,是万维网交换信息的基础,允许将HTML(超文本标记语言)文档从web服务器传送到web浏览器。
也就是说我们访问网站必须要用到http协议。
2.使用firebug和curl观察http协议
firebug是一款非常好用的网页调试工具,可以查看http请求;
curl是一个利用url语法规定来传输文件和数据的工具,支持很多协议,如http、FTP、Telnet等,使用curl可以很清楚的看到所使用的协议。
2.1 firebug
首先打开Mozilla Firefox(或Google Chrome),添加firebug组件

然后访问网站,以http://www.moonsos.com/为例,右击鼠标,选择“使用firebug审查元素”

出现如下界面:

然后选择“网络”,就可以看到请求信息

备注:直接右击页面,选择“审查元素”-->选择“网络”也可以看到请求的详细信息。
首次打开firebug没有显示请求信息,我们在URL框中回车后,会看到三个GET请求,说明浏览器向服务器发送了三次请求

点击任意一个请求,在响应头信息中可以看到请求的详细信息
2.2 curl
curl也可以在windows上安装curl.exe工具。效果都是一样的。
|
1
2
3
4
5
6
7
8
9
10
11
12
13
|
[root@yvonne ~]# curl -I www.moonsos.comHTTP/1.1 200 OK Server: Apache/2.2.25 (Win32) PHP/5.3.5Connection: keep-aliveDate: Mon, 28 Dec 2015 13:41:58 GMTLast-Modified: Mon, 28 Dec 2015 13:40:00 GMTContent-Type: text/html; charset=utf-8Content-Length: 35764X-Powered-By: PHP/5.3.5Set-Cookie: safedog-flow-item=0B04B99E0C1B1CFD0D0CCCB472D82967; expires=Thur, 3-Feb-2152 16:53:17 GMT; domain=moonsos.com; path=/X-Daa-Tunnel: hop_count=1X-Cache-Lookup: Hit From UpstreamX-Cache-Lookup: Hit From Upstream |
3.http请求的详解
3.1firebug中的http报文信息

HTTP请求首部常用首部:
|
首部 |
类型 |
描述 |
|
Date |
通用 |
提供日期和时间标志,说明报文是什么时候创建的 |
|
Content-Length |
实体 |
报文中实体主体的字节大小。如果进行了gzip压缩,这个大小就是压缩后的大小。客户端通过它确定报文截尾。 |
|
Accept |
请求 |
客户端通知服务器可以接收哪些媒体类型 |
|
Content-Type |
实体 |
报文中对象的媒体类型 |
|
Cache-Control |
通用 |
见 “缓存首部” |
|
Connection |
通用 |
Connection:close响应结束之后,连接会被关闭。不支持持久连接的HTTP/1.1应用程序要在所有请求和响应中插入Connection:close。 |
|
Server |
响应 |
识别服务器软件 |
|
Set-Cookie |
响应 |
设置服务器产生的ID |
HTTP请求其他首部
|
首部 |
类型 |
描述 |
|
Expect:100-continue |
请求 |
客户端告知服务器它们需求某种行为。 |
|
Transfer-Encoding:chunk |
通用 |
使用分块传输 |
|
User-Agent |
请求 |
用户的浏览器软件 |
|
Host |
请求 |
请求资源所在的服务器。(Apache中按Host区分虚拟主机) |
|
Location |
响应 |
令客户端重定向至URL |
|
Vary |
响应 |
服务端通知客户端,在服务端的协商中会使用哪些来自客户端的首部。它的值是一个首部列表,服务器会去查看这些首部,以确定什么内容作为响应发回给客户端。 |
3.2 http协议是无状态的,客户端(浏览器)发起request请求,服务器返回response响应,然后建立连接。

http协议request请求包括三个部分:请求头(请求方法)、请求行(消息报头)、请求正文。
http协议response响应包括三个部分:响应头、响应行(消息消息报头)、响应正文(消息主题)。
3.3 常用的http请求方法:
| GET | 请求获取由request-url标识的资源 |
| POST | 在request-url所标识的资源后附加新的数据 |
| HEAD | 请求获取由request-url所标识资源的响应消息报头 |
| TRACE | 请求服务器会送收到的请求信息,主要用于测试或诊断 |
| PUT | 请求服务器存储一个资源,并用request-url作为其标识 |
| DELETE | 请求服务器删除由request-url所标识的资源 |
| OPTIONS | 请求查询服务器性能,或查询与服务器相关的选项和需求 |
3.4 http请求常见返回状态码:
1xx 临时响应
|
返回码 |
说明 |
|
100:Continue |
请求者应当继续提出请求。 服务器返回此代码表示已收到请求的第一部分,正在等待其余部分。 |
|
101:Switching Protocols |
请求者已要求服务器切换协议,服务器已确认并准备切换。 |
2xx 成功
|
返回码 |
说明 |
|
200:OK |
服务器已成功处理了请求。 |
|
206:Partial Content |
服务器成功处理了部分 GET 请求。 |
3xx 重定向
|
返回码 |
说明 |
|
301:Moved Permanently |
请求的网页已永久移动到新位置 |
|
302:Found |
服务器目前从不同位置的网页响应请求,但请求者应继续使用原有位置来进行以后的请求。只在当次请求中生效。 |
|
303:See Other |
请求者应当对不同的位置使用单独的 GET 请求来检索响应时,服务器返回此代码。 对于除 HEAD 之外的所有请求,服务器会自动转到其他位置。 |
|
304:Not Modified |
自从上次请求后,请求的网页未修改过。服务器返回此响应时,不会返回网页内容。如果网页自请求者上次请求后再也没有更改 过,您应当将服务器配置为返回此响应(称为 If-Modified-Since HTTP 标头)。 |
|
305:Use Proxy |
请求者只能使用代理访问请求的网页。 如果服务器返回此响应,还表示请求者应使用代理。 |
|
307:Temporary Redirect |
服务器目前从不同位置的网页响应请求,但请求者应继续使用原有位置来进行以后的请求。 此代码与响应 GET 和 HEAD 请求的 301 代码类似,会自动将请求者转到不同的位置 |
4xx 请求错误
|
返回码 |
说明 |
|
400:Bad Request |
服务器不理解请求的语法。服务器没有收到GET。 |
|
401:Unauthorized |
请求要求身份验证。 对于需要登录的网页,服务器可能返回此响应。 |
|
403:Forbidden |
服务器拒绝请求。 |
|
404:Not Found |
服务器找不到请求的任何信息。 |
|
405:Method Not Allowed |
禁用请求中指定的方法。 |
|
406:Not Acceptable |
无法使用请求的内容特性响应请求的网页。 |
|
407:Proxy Authentication Required |
此状态代码与 401(未授权)类似,但指定请求者应当授权使用代理。 |
|
411:Length Required |
服务器不接受不含有效内容长度标头字段的请求。 |
|
413:Request Entity Too Large |
服务器无法处理请求,因为请求实体过大,超出服务器的处理能力。 |
|
414:Request-URI Too Large |
请求的 URI(通常为网址)过长,服务器无法处理。 |
|
415:Unsupported Media Type |
请求的格式不受请求页面的支持。 |
|
416:Requested range not satisfiable |
如果页面无法提供请求的范围,则服务器会返回此状态代码。 |
|
417:Expectation Failed |
服务器未满足”期望”请求标头字段的要求。(Expect) |
5xx 服务器错误
|
返回码 |
说明 |
|
500:Internal Server Error |
服务器遇到错误,无法完成请求。 |
|
502:Bad Gateway |
服务器充当网关或代理,从上游服务器收到无效响应。 |
|
503:Service Unavailable |
服务器目前无法使用(由于超载或停机维护)。 通常,这只是暂时状态 |
|
504:Gateway Timeout |
服务器充当网关或代理,但没有及时从上游服务器收到请求。 |
|
505:HTTP Version Not Supported |
服务器不支持请求中所用的 HTTP 协议版本。 |
4.手工模拟http请求
4.1 通过Telnet模拟http请求
windows默认不支持Telnet,需要开启Telnet服务,如下图:

现在就可以开始模拟http的请求了,是不是有点小兴奋ヾ(o)ヾ呢O(∩_∩)O~~
这里我先写完操作步骤,然后再一步一步的详细讲解
·首先建议在notepad记事本里写下要请求的内容
GET /index.html HTTP/1.1
HOST: www.moonsos.com

·然后cmd打开命令dos界面,输入要请求的网站域名和端口
telnet www.moonsos.com 80

·回车后按 'CTRL+]',然后继续回车,将记事本中写好的内容复制到命令行里
备注:这里的两步如果长时间就会自动遗失对主机的连接

·将记事本中的内容复制进去后,连着两次回车,就可以看到GET到的内容了。

结果:

这里是GET请求,换做POST或HEAD也是一样的。只要将请求方法换做POST或HEAD就好。


小结通过Telnet模拟http请求:
1.telnet www.moonsos.com 80
2.'CTRL+]'
3.回车Enter
4.输入请求,两次回车Enter
4.2 curl.exe[windows工具]或curl[linux命令]
[root@yvonne ~]# curl -I www.moonsos.com
HTTP/1.1 200 OK
Server: Apache/2.2.25 (Win32) PHP/5.3.5
Connection: keep-alive
Date: Mon, 28 Dec 2015 14:23:51 GMT
Last-Modified: Mon, 28 Dec 2015 14:20:00 GMT
Content-Type: text/html; charset=utf-8
Content-Length: 35764
X-Powered-By: PHP/5.3.5
Set-Cookie: safedog-flow-item=0B04B99E0C1B1CFD0D0CCCB472D82967; expires=Thur, 3-Feb-2152 17:35:11 GMT; domain=moonsos.com; path=/
X-Daa-Tunnel: hop_count=1
X-Cache-Lookup: Hit From Upstream
X-Cache-Lookup: Hit From Upstream
http协议详解<一>的更多相关文章
- HTTP协议详解(转)
转自:http://blog.csdn.net/gueter/archive/2007/03/08/1524447.aspx Author :Jeffrey 引言 HTTP是一个属于应用层的面向对象的 ...
- HTTP协议详解
Author :Jeffrey 引言 HTTP 是一个属于应用层的面向对象的协议,由于其简捷.快速的方式,适用于分布式超媒体信息系统.它于1990年提出,经过几年的使用与发展,得到不断地完善和 扩展. ...
- 动态选路、RIP协议&&OSPF协议详解
动态选路.RIP协议&&OSPF协议详解 概念 当相邻路由器之间进行通信,以告知对方每个路由器当前所连接的网络,这时就出现了动态选路.路由器之间必须采用选路协议进行通信,这样的选路协议 ...
- ASP.NET知识总结(3.HTTP协议详解)
引言 HTTP是一个属于应用层的面向对象的协议,由于其简捷.快速的方式,适用于分布式超媒体信息系统.它于1990年提出,经过几年的使用与发展,得到不断地完善和扩展.目前在WWW中使用的是HTTP/1. ...
- 接口测试之HTTP协议详解
引言 HTTP是一个属于应用层的面向对象的协议,由于其简捷.快速的方式,适用于分布式超媒体信息系统.它于1990年提出,经过几年的使用与发展,得到不断地完善和扩展.目前在WWW中使用的是HTTP/1. ...
- 计算机网络(12)-----HTTP协议详解
HTTP协议详解 http请求 http请求由三部分组成,分别是:请求行.消息报头.请求正文 (1)请求行 请求行以一个方法符号开头,以空格分开,后面跟着请求的URI和协议的版本,格式如下:Metho ...
- OSPF协议详解
CCNP OSPF协议详解 2010-02-24 20:30:22 标签:CCNP 职场 OSPF 休闲 OSPF(Open Shortest Path Fitst,ospf)开放最短路径优先协议,是 ...
- HTTP协议详解(真的很经典)
HTTP 是一个属于应用层的面向对象的协议,由于其简捷.快速的方式,适用于分布式超媒体信息系统.它于1990年提出,经过几年的使用与发展,得到不断地完善和 扩展.目前在WWW中使用的是HTTP/1.0 ...
- HTTP协议详解--转载http://blog.csdn.net/gueter/article/details/1524447
引言 HTTP是一个属于应用层的面向对象的协议,由于其简捷.快速的方式,适用于分布式超媒体信息系统.它于1990年提出,经过几年的使用与发展,得到不断地完善和扩展.目前在WWW中使用的是HTTP/1. ...
- 关于http协议详解
Author :Jeffrey 引言 HTTP是一个属于应用层的面向对象的协议,由于其简捷.快速的方式,适用于分布式超媒体信息系统.它于1990年提出,经过几年的使用与发展,得到不断地完善和扩展.目前 ...
随机推荐
- 百度网盘采集源码 ,直接采集网盘添加cookies功能
名称:百度网盘采集源码 程序语言:php 数据库:mysql 程序介绍: 1.直接采集百度网盘url 2.前端基于bootstrap 3.搜索考虑到后期上亿数据,是基于coreseek,搜索时间毫秒级 ...
- AloneJs.confirmbox() —— 确认框
一.引用 <link href="https://cdn.suziyun.com/alonejs.min.css" rel="stylesheet" /& ...
- Web打印控件
Lodop是什么? 有人说她是Web打印控件,因为她能打印.在浏览器中以插件的形式出现,用简单一行语句就把整个网页打印出来: 有人说她是打印编程接口,因为她介于浏览器和打印设备之间,是个通道和桥梁,几 ...
- 原创:SAP LVC ALV编辑小技巧
前两天有个打印需求变更,需要在ALV显示列表中添加两个字段,可编辑,而我自己用的是函数:REUSE_ALV_GRID_DISPLAY_LVC 因为之前做可编辑基本都是固定套路,定义类,画屏幕.... ...
- Python基础(3)--列表和元组
Python包含6种内建序列:列表.元组.字符串.Unicode字符串.buffer对象.xrange对象 本篇主要讨论最常用的两种类型:列表.元组 本文地址:http://www.cnblogs.c ...
- iOS设计模式之命令模式
命令模式 基本理解 命令模式(Command),将一个请求封装为一个对象,从而使你可用不同的请求对客户端进行参数化:对请求队列或记录请求日志,以及支持客可撤离的操作. 苹果的Target-Action ...
- 【读书笔记】iOS网络-运行循环
运行循环是由类NSRunLoop表示的,有些线程可以让操作系统唤醒睡眠的线程以管理到来的事件,而运行循环则是这些线程的基本组件.运行循环是这样一种循环,可以在一个周期内调度任务并处理到来的事件.iOS ...
- WPF+Caliburn.Micro 杂记
开发过程中的小问题总结 1DataGrid的Header里面给Checkbox绑定IsEnabled,绑不上去. 2由A页面跳转到B页面,再由B页面返回一个值 3DataGrid里面的行通过一个方法 ...
- 数据库测试DbUnit
DBUnit 的设计理念就是在测试之前,备份数据库,然后给对象数据库植入我们需要的准备数据,最后,在测试完毕后,读入备份数据库,回溯到测试前的状态: 摘自:DbUnit入门实战 DBUnit官网:ht ...
- 阿里云ECS服务器(ubuntu)下基本配置以及升级git
最近需要在阿里云服务器上远程搭建调试环境,这里把遇到的问题做一下记录: 1.ECS Linux解决SSH会话连接超时问题 用SSH客户端(我使用的Xshell)连接linux服务器时,经常会出现与服务 ...