HTTP协议分析

http协议介绍

目录:

一、http协议版本

二、http文档的生成方式

三、http协议的报文

四、http请求方法

五、http状态码分析

一、http协议(版本)

1、http:Hyper Text Transfer Protocol超文本传输协议,是互联网应用最广泛的一种网络协议,主要用于web服务,通过计算机处理文本消息,格式为HTML(Hyper Text Mark Language)超文本标记语言实现

2、http协议的版本:

(1)、http0.9:仅与用户传输html文档

(2)、http1.0:

1)引入了MIME(Multipurpose Internet Mail Extensions)机制,多用途互联网邮件扩展,主要作用是可以发送多媒体(如视频、音频)等信息。

2)引入了keep-alive机制,实现持久连接的功能

3)引入支持缓存功能。

(3)、http1.1:

支持更多的请求方法,更加精细的缓存机制

(4)、http2.0:

提供了HTTP语义优化的传输,(语义化:就是正确的标签做正确的事情,能够便于开发者阅读和写出更优雅的代码的同时让网络爬虫更好的解析)。

小结:

目前常用的版本就是http1.0和http1.1

二、http文档的生成方式

1、静态:事先就编辑并定义完成的。

(1)、web服务器通过内核注册socket

(2)、客户端通过浏览器,向web服务器发起request请求

(3)、web服务器收到请求信息,如果资源存在本地,http服务向系统内核申请调用

(4)、内核通过本地磁盘提取数据,并将数据发送给http服务

(5)、http将用户请求的资源通过response(响应报文),最终响应给客户端。

2、动态:通过编译语言编写的程序后输出html格式的结果

(1)、web服务器通过内核注册socket

(2)客户端通过浏览器向web服务器发送request请求信息

(3)、服务器收到请求信息,如果用户请求的是动态内容,那么此时http服务会调用后端的解析器,由动态语言去处理用户的请求

(4)、如果需要请求数据的时候,会向内核申请调用,从而向磁盘中获取用户指定的数据,通过解释器运行,运行的结果通常会生成html格式的文件,然后构建成响应报文,最终发送给客户端。

三:http协议的报文

1、request Message:请求报文

由客户端向服务器端发送请求,不同的网站用于请求不同的资源

请求报文格式解释:

请求行:请求方法字段(method)+请求URL(request-URL)+版本信息(version)

请求首部:由关键字+关键字的值组成。请求首部的作用就是通过客户端将请求的相关内容告知服务器端

空白行:用于通知服务器端以下的内容将不会再出现请求首部的信息

请求实体:指请求的内容的所有信息

2、response message(响应报文)

起始行:称为状态行,用于服务器端响应客户端请求的状态信息,由版本号(version)+状态码(status)+原因短语(reason-phrase),例如“ HTTP/1.1 200 OK”

响应首部:响应的就是请求的信息

空白行:通知客户端空行下无首部信息

响应实体:装载了要返回客户端的数据。

四、http请求方法:

(1)、GET:用于客户端请求指定资源的信息,并返回指定资源的实体

(2)、HEAD:只返回响应首部的信息

(3)、POST:基于HTML表单向服务器提交数据,服务器通常需要存储此数据,通常存放在mysql的关系型数据库中。

(4)、PUT:与GET相反,是向服务器发送资源的,服务器通常需要存储此资源。

(5)、DELETE:请求服务器端删除URL指定的资源

(6)、MOVE:请求服务器将指定的页面移至另一个网络地址

(7)、OPTIONS:探测服务器端对请求的URL所支持使用的请求方法

(8)、TRACE:跟一次请求中间所经历的代理服务器,防火墙或网关等。

HTTP的状态码:

1XX:信息性状态码,用于指定客户端相应的某些操作

2XX:成功状态码

3XX:重定向的状态码:有时会返回的是一个新地址,而非结果

4XX:客户端类错误,如请求的资源不存在,或者没有权限访问请求资源

5XX:服务器类的错误信息。

介绍常用的状态码说明

200:服务器成功返回网页。

201:CREATED上传文件成功后显示

301:永久重定向,返回一个新地址,并告诉客户端所请求的地址将永久移动到新地址中去

302:临时重定向,临时放到某个地方,会在响应报文中使用“Location”指定

304:Not Modified,资源没有做任何修改,(用于缓存信息的校验值与服务器对比)

403:Forbidden 请求呗拒绝

404:Not Found请求的资源不存在

405:Method Not Allowed,请求方法不被允许,不支持

500:Internal Server Error,服务器内部错误

502:Bad Gateway,代理服务器从上游服务器收到一条伪响应,上一层服务器返回了一个无法理解的报文,所以代理服务器就会表示错误。

503:Service Unavailable,服务暂时不可用。

HTTP首部介绍

通用首部

请求首部

响应首部

实体首部

扩展首部

通用首部

Connection:定义C/S之间关于请求、响应的有关选项

在http1.0 的时候,如果他想使用持久连接,那么他所设置的选项即为

Connection:keep-alive

Cache-Control:缓存控制,实现更精细的缓存控制方式。在http 1.1上比较常见

请求首部

Client-IP :客户端 IP地址

Host :请求的主机,这在实现基于主机名的虚拟主机时很有用

Referer :指明了请求当前资源原始资源的URL,使用referer是可以防盗链

User-Agent:用户代理,一般而言是浏览器

Accept首部:指客户端可以接受哪些编码的类型

Accept:服务端能够发送的媒体的类型

Accetp-Charset:接收的字符集

Accept-Encoding:编码格式

Accept-Lanage:所能接受的语言编码格式

条件式请求首部:(在http1.1中才会用到)

当发送请求时,先问问对方是否满足条件,如果满足条件就请求,不满足就不请求

跟安全相关的请求:

Authorization

Cookie

响应首部

Age:资源响应给你之后可以使用的时长

Server:向客户端说明自己用到的程序名称和版本

协商类的首部:

Vary:首部列表,服务器会根据此列表挑选最适合的版本发给客户端

跟安全相关:

WWW-Authentication

Set-Cookie

实体首部

Location:指明资源的新位置,实现302响应码时通常会用到

Allow:允许对此资源使用的请求方法

内容相关的首部

Content-Encoding

Content-Language

Content-Length

Content-Location:内容所在的位置

Content-Type

缓存相关:

ETag:扩展标签/标记

Expires:过期时间

Last-Modified:最后修改时间

HTTP最常见的请求头如下:

Accept:浏览器可接受的MIME类型;

Accept-Charset:浏览器可接受的字符集;

Accept-Encoding:浏览器能够进行解码的数据编码方式,比如gzip。

Accept-Language:浏览器所希望的语言种类

Authorization:授权信息,通常出现在对服务器发送的WWW-Authenticate头的应答中;

Connection:表示 是否需要持久连接。值为“Keep-Alive”,或者看到请求使用的是HTTP 1.1(HTTP 1.1默认进行持久连接),它就可以利用持久连接的优点,当页面包含多个元素时(例如Applet,图片),显著地减少下载所需要的时间。

Content-Length:表示请求消息正文的长度;

Cookie:这是最重要的请求头信息之一;

Cookie相关的HTTP扩展头

1)Cookie:客户端将服务器设置的Cookie返回到服务器;

2)Set-Cookie:服务器向客户端设置Cookie;

3)Cookie2 (RFC2965)):客户端指示服务器支持Cookie的版本;

4)Set-Cookie2 (RFC2965):服务器向客户端设置Cookie

Cookie的流程:

服务器在响应消息中用Set-Cookie头将Cookie的内容回送给客户端,客户端在新的请求中将相同的内容携带在Cookie头中发送给服务器。从而实现会话的保持。

流程如下图所示:

Host:初始URL中的主机和端口;

If-Modified-Since:只有当所请求的内容在指定的日期之后又经过修改才返回它,否则返回304“Not Modified”应答;

Referer:包含一个URL,用户从该URL代表的页面出发访问当前请求的页面。

User-Agent:浏览器类型

HTTP最常见的响应头

HTTP最常见的响应头如下所示:

Allow:服务器支持哪些请求方法(如GET、POST等);

Content-Encoding: 文档的编码(Encode)方法。

Content-Length: 表示内容长度。只有当浏览器使用持久HTTP连接时才需要这个数据。

Content-Type: 表 示后面的文档属于什么MIME类型。

Accept-Ranges: bytes  该响应头表明服务器支持Range请求,以及服务器所支持的单位是字节(这也是唯一可用的单位).我们还能知道:服务器支持断点续传,以及支持同时下载文件的多个部分,也就是说下载工具可以利用范围请求加速下载该文件.Accept-Ranges: none 响应头表示服务器不支持范围请求.

Date:当前的GMT时间。

Expires:指明应该在什么时候认为文档已经过期,从而不再缓存它。

Last-Modified: 文档的最后改动时间。

Location:表示客户应当到哪里去提取文档。

Refresh:表示浏览器应该在多少时间之后刷新文档,以秒计。

HTTP最常见的实体头

实体头用作实体内容的元信息,描述了实体内容的属性,包括实体信息类型,长度,压缩方法,最后一次修改时间,数据有效性等。

Allow:GET,POST

Content-Encoding:文档的编码(Encode)方法,例如:gzip,

Content-Language:内容的语言类型,例如:zh-cn;

Content-Length:表示内容长度,eg:80,可参考“2.5响应头”;

Content-Location:表示客户应当到哪里去提取文档,例如:http://www.dfdf.org/dfdf.html

Content-MD5:MD5 实体的一种MD5摘要,用作校验和。发送方和接受方都计算MD5摘要,接受方将其计算的值与此头标中传递的值进行比较。

Content-Type:标明发送或者接收的实体的MIME类型。Eg:text/html; charset=GB2312       主类型/子类型;

时间: 2024-10-12 22:18:59

HTTP协议分析的相关文章

蓝牙协议分析(7)_BLE连接有关的技术分析

转自:http://www.wowotech.net/bluetooth/ble_connection.html#comments 1. 前言 了解蓝牙的人都知道,在经典蓝牙中,保持连接(Connection)是一个相当消耗资源(power和带宽)的过程.特别是当没有数据传输的时候,所消耗的资源完全被浪费了.因而,对很多蓝牙设备来说(特别是功耗敏感的设备),希望在无数可传的时候,能够断开连接.但是,由于跳频(hopping)以及物理通道(Physical Channel)划分的缘故,经典蓝牙连接

BT协议分析(1)—1.0协议

简述 BT下载是采用P2P的下载方式,下载的大致形式采用如下图所示,处于图示中心的称为Tracker服务器,其余称为Peer.   缺点 1.资源的安全性 2.资源的实效性(没有上传者则BT也将失效) 3.版权 协议分析 对BT协议(1.0)的分析主要包含4个部分: 1.种子文件的分析 2.同Tracker服务器的通讯(采用HTTP协议) 3.同其他peer(配合/协同者)的通讯(采用TCP协议) 4.总结 分析前的了解 在这些分析之前,需要先了解两点BT协议采用的基础: 1.BT协议中采用的单

物联网MQTT协议分析和开源Mosquitto部署验证

在<物联网核心协议—消息推送技术演进>一文中已向读者介绍了多种消息推送技术的情况,包括HTTP单向通信.Ajax轮询.Websocket.MQTT.CoAP等,其中MQTT协议为IBM制定并力推,其具有开放.简单.轻量级以及易于实现的特点使得其即便在资源受限的环境中也能得到很好的使用,比如运行在资源紧缺型的嵌入式系统中或网络带宽非常昂贵的环境中,除此之外,它也被广泛用于遥感勘测.智能家居.能源监测和医疗应用程序等各个领域,是物联网的重要组成部分,将来可能会成为物联网的事实标准. 本篇文章将帮助

协议分析 - DHCP协议解码详解

协议分析 - DHCP协议解码详解 [DHCP协议简介] DHCP,全称是 Dynamic Host Configuration Protocol﹐中文名为动态主机配置协议,它的前身是 BOOTP,它工作在OSI的应用层,是一种帮助计算机从指定的DHCP服务器获取它们的配置信息的自举协议. DHCP使用客户端/服务器模式,请求配置信息的计算机叫做DHCP客户端,而提供信息的叫做DHCP的服务器.DHCP为客户端分配地址的方法有三种:手工配置.自动配置.动态配置. DHCP最重要的功能就是动态分配

linux 网络协议分析---3

本章节主要介绍linxu网络模型.以及常用的网络协议分析以太网协议.IP协议.TCP协议.UDP协议 一.网络模型 TCP/IP分层模型的四个协议层分别完成以下的功能: 第一层 网络接口层 网络接口层包括用于协作IP数据在已有网络介质上传输的协议.实际上TCP/IP标准并不定义与ISO数据链路层和物理层相对应的功能.相反,它定义像 地址解析协议(Address Resolution Protocol,ARP)这样的协议,提供TCP/IP协议的数据结构和实际物理硬件之间的接口. 第二层 网间层 网

网络协议分析

1. 网络模型 2. 协议分析 2.1协议架构 2. 2 以太网协议格式 2. 3 IP协议格式 2. 4 TCP协议格式 2. 5 UDP协议格式

http-live-streaming 协议分析

http-live-streaming 协议分析:不受限制的多媒体数据流的传输.协议支持媒体数据加密与流切换(例如不同码率).媒体数据创建后立即传输,播放接近实时.媒体数据通常采用HTTP进行传输.播放列表由一个有序的媒体URI列表和信息标签组成,每个媒体URI指向一个媒体文件,这个媒体文件是单个连续媒体流上的一个片断.为了播放媒体流,客户端首先获取播放列表文件,然后获取并播放播放列表中的每个媒体流文件.客户端依据下文定义方式重复加载播放列表文件以获取追加片断.播放列表必须是扩展的M3U播放列表

QQ2010协议分析系列(二) - 登录之第一篇(0x0091)

QQ2010协议分析第一篇 测试QQ:597789809 昵称:浪子无情 尝试QQ服务器IP:112.95.240.125 client IP:222.35.174.5(我的外网IP) 密码:这个算了吧 Send: 看到下面的数字很迷茫吧,不用着急,我慢慢解释 下面的文本是HEX字符串,是常用网络16进制文本方式. QQ常用消息包结构: 包头:02 //表示包的开头 1F 57 //QQ版本代码,这里表示QQ2010sp3版本 00 91 //包命令 58 16      //这个不是固定的,表

usb协议分析-设备描述符配置包-描述符

/* usb协议分析仅供大家参考---设备描述符配置包,设备描述符, 地址设置, 配置描述符, 字符串描述符 */ /* -1- usb设备描述符配置包 */ typedef struct _USB_SETUP_PACKET { REQUEST_TYPE bmRequestType; BYTE bRequest; WORD_BYTE wValue; WORD_BYTE wIndex; WORD wLength; } USB_SETUP_PACKET; 1.bmRequestType 是包含有下面

POP3协议分析邮箱自动激活用户

使用POP3协议分析邮箱自动激活用户 2015-03-28 Lover雪儿 前几天,我们实现了,用户PHP模拟邮件激活注册用户, 地址:http://www.cnblogs.com/lihaiyan/p/4359927.html ,但是有的时候,往往是需要注册用户自己手动的向服务器的邮箱进行发送一封邮件,然后服务器通过分析邮箱的发件人,从而匹配自动的激活用户账号. 上class.pop3.php 邮件发送人分析php源代码: 1 <?php 2 3 //用户往[email protected]邮