http协议详解<一>

时间:2022-08-27 13:37:20
原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 、作者信息和本声明。否则将追究法律责任。http://7826443.blog.51cto.com/7816443/1729227

写在前面:感谢米安网,感谢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协议详解<一>

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

http协议详解<一>

出现如下界面:

http协议详解<一>

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

http协议详解<一>

备注:直接右击页面,选择“审查元素”-->选择“网络”也可以看到请求的详细信息。

首次打开firebug没有显示请求信息,我们在URL框中回车后,会看到三个GET请求,说明浏览器向服务器发送了三次请求

http协议详解<一>

点击任意一个请求,在响应头信息中可以看到请求的详细信息

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.com
HTTP/1.1 200 OK      
Server: Apache/2.2.25 (Win32) PHP/5.3.5
Connection: keep-alive
Date: Mon, 28 Dec 2015 13:41:58 GMT
Last-Modified: Mon, 28 Dec 2015 13:40: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 16:53:17 GMT; domain=moonsos.com; path=/
X-Daa-Tunnel: hop_count=1
X-Cache-Lookup: Hit From Upstream
X-Cache-Lookup: Hit From Upstream

 

3.http请求的详解

  3.1firebug中的http报文信息

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协议详解<一>

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协议详解<一>

现在就可以开始模拟http的请求了,是不是有点小兴奋ヾ(o)ヾ呢O(∩_∩)O~~

这里我先写完操作步骤,然后再一步一步的详细讲解

·首先建议在notepad记事本里写下要请求的内容

GET /index.html HTTP/1.1

HOST: www.moonsos.com

http协议详解<一>

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

telnet www.moonsos.com 80

http协议详解<一>

·回车后按 'CTRL+]',然后继续回车,将记事本中写好的内容复制到命令行里

备注:这里的两步如果长时间就会自动遗失对主机的连接

http协议详解<一>

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

http协议详解<一>

结果:

http协议详解<一>

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

http协议详解<一>

http协议详解<一>

小结通过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协议详解<一>的更多相关文章

  1. HTTP协议详解(转)

    转自:http://blog.csdn.net/gueter/archive/2007/03/08/1524447.aspx Author :Jeffrey 引言 HTTP是一个属于应用层的面向对象的 ...

  2. HTTP协议详解

    Author :Jeffrey 引言 HTTP 是一个属于应用层的面向对象的协议,由于其简捷.快速的方式,适用于分布式超媒体信息系统.它于1990年提出,经过几年的使用与发展,得到不断地完善和 扩展. ...

  3. 动态选路、RIP协议&amp&semi;&amp&semi;OSPF协议详解

    动态选路.RIP协议&&OSPF协议详解 概念 当相邻路由器之间进行通信,以告知对方每个路由器当前所连接的网络,这时就出现了动态选路.路由器之间必须采用选路协议进行通信,这样的选路协议 ...

  4. ASP&period;NET知识总结(3&period;HTTP协议详解)

    引言 HTTP是一个属于应用层的面向对象的协议,由于其简捷.快速的方式,适用于分布式超媒体信息系统.它于1990年提出,经过几年的使用与发展,得到不断地完善和扩展.目前在WWW中使用的是HTTP/1. ...

  5. 接口测试之HTTP协议详解

    引言 HTTP是一个属于应用层的面向对象的协议,由于其简捷.快速的方式,适用于分布式超媒体信息系统.它于1990年提出,经过几年的使用与发展,得到不断地完善和扩展.目前在WWW中使用的是HTTP/1. ...

  6. 计算机网络&lpar;12&rpar;-----HTTP协议详解

    HTTP协议详解 http请求 http请求由三部分组成,分别是:请求行.消息报头.请求正文 (1)请求行 请求行以一个方法符号开头,以空格分开,后面跟着请求的URI和协议的版本,格式如下:Metho ...

  7. OSPF协议详解

    CCNP OSPF协议详解 2010-02-24 20:30:22 标签:CCNP 职场 OSPF 休闲 OSPF(Open Shortest Path Fitst,ospf)开放最短路径优先协议,是 ...

  8. HTTP协议详解(真的很经典)

    HTTP 是一个属于应用层的面向对象的协议,由于其简捷.快速的方式,适用于分布式超媒体信息系统.它于1990年提出,经过几年的使用与发展,得到不断地完善和 扩展.目前在WWW中使用的是HTTP/1.0 ...

  9. HTTP协议详解--转载http&colon;&sol;&sol;blog&period;csdn&period;net&sol;gueter&sol;article&sol;details&sol;1524447

    引言 HTTP是一个属于应用层的面向对象的协议,由于其简捷.快速的方式,适用于分布式超媒体信息系统.它于1990年提出,经过几年的使用与发展,得到不断地完善和扩展.目前在WWW中使用的是HTTP/1. ...

  10. 关于http协议详解

    Author :Jeffrey 引言 HTTP是一个属于应用层的面向对象的协议,由于其简捷.快速的方式,适用于分布式超媒体信息系统.它于1990年提出,经过几年的使用与发展,得到不断地完善和扩展.目前 ...

随机推荐

  1. OGNL表示式使用和值栈

    另外值得参考博客:http://blog.csdn.net/resigshy/article/details/7560573 OGNL是Object Graphic Navigation Langua ...

  2. 利用SOLR搭建企业搜索平台 之——运行solr

    来源:http://blog.csdn.net/zx13525079024/article/details/24806131 本节主要介绍Solr的安装,其实Solr不需要安装.直接下载就可以了    ...

  3. ArcGIS Server10&period;1授权文件

    3dengine,101,ecp.arcgis.server,01-jan-2020,UTE784S3EY83ZJKN0085 3dserver,101,ecp.arcgis.server,01-ja ...

  4. Ajax 之【文件上传】

    // 前台 var formData = new FormData(); var file = document.getElementById('myFile').files[0]; formData ...

  5. Python拷贝及多进程与类的问题

    最近写python写的尤其不顺利,更多的debug,逐渐的深入,产出却比较少.应该是个瓶颈期,坚持坚持,厚着脸皮也要坚持下去. 0x00 拷贝问题 程序中涉及到多进程和协程,大致的模型是开了2+个进程 ...

  6. MySQL 字符串 分割 多列

    mysql如何进行以,分割的字符串的拆分 - 我有一个梦想 - CSDN博客https://blog.csdn.net/u012009613/article/details/52770567 mysq ...

  7. MAC--NPAPI学习&lpar;一&rpar;简要介绍NPAPI的函数

    NPAPI是浏览器与插件交互的接口,下面先简要介绍一下NPAPI的函数: Mach-o entry points NPError NP_Initialize(NPNetscapeFuncs* brow ...

  8. 细说MySQL表操作

    目录 语法 查看表结构 查看所有的表 删除表 查看创建表的语句 修改表的字符集和校验规则 修改表名 在表中添加新字段 修改表的字段名 修改表中字段的属性 删除表中的某个字段 设置某个字段为主键 把某个 ...

  9. nginx 中文和英文资料

    http://www.nginx.cn/doc/ http://manual.51yip.com/nginx/ http://tool.oschina.net/apidocs/apidoc?api=n ...

  10. python课件-淘宝-目录&period;txt

    卷 TOSHIBA EXT 的文件夹 PATH 列表卷序列号为 AE86-8E8DF:.│ python课件-淘宝-目录.txt│ ├─01python核心编程阶段-linux基础(│ linux_h ...