HTTP协议基础及报文抓包分析
HTTP基本架构
下面我们用一张简单的流程图来展示HTTP协议基本架构,以便大家先有个基本的了解。
Web Client可以是浏览器、搜索引擎、机器人等等一切基于HTTP协议发起http请求的工具。
Web Server可以是任何的能解析HTTP请求,并返回给Web Client可识别的响应的服务,常见的有apache、nginx、IIS等等web服务器。
浓缩就是精华,看下最简洁的HTTP交互图:
HTTP报文结构
请求报文
HTTP请求报文由请求行、请求头、空行和请求内容4个部分构成。
如下图所示:
下面对上图进行简单的分析:
请求行
由请求方法字段、URL字段、协议版本字段三部分构成,它们之间由空格隔开。常用的请求方法有:GET、POST、HEAD、PUT、DELETE、OPTIONS、TRACE、CONNECT。
请求头
请求头由key/value对组成,每行为一对,key和value之间通过冒号(:)分割。请求头的作用主要用于通知服务端有关于客户端的请求信息。
典型的请求头有:
User-Agent:生成请求的浏览器类型
Accept:客户端可识别的响应内容类型列表;星号*
用于按范围将类型分组。*/*
表示可接受全部类型,type/*
表示可接受type类型的所有子类型。
Accept-Language: 客户端可接受的自然语言
Accept-Encoding: 客户端可接受的编码压缩格式
Accept-Charset: 可接受的字符集
Host: 请求的主机名,允许多个域名绑定同一IP地址
connection:连接方式(close或keeplive)
Cookie: 存储在客户端的扩展字段
空行
最后一个请求头之后就是空行,用于告诉服务端以下内容不再是请求头的内容了。
请求内容
请求内容主要用于POST请求,与POST请求方法配套的请求头一般有Content-Type(标识请求内容的类型)和Content-Length(标识请求内容的长度)
响应报文
HTTP响应报文由状态行、响应头、空行和响应内容4个部分构成。
如下图所示:
下面对响应报文格式进行简要的分析说明:
状态行
由HTTP协议版本、状态码、状态码描述三部分构成,它们之间由空格隔开。
状态码由3位数字组成,第一位标识响应的类型,常用的5大类状态码如下:
1xx:表示服务器已接收了客户端的请求,客户端可以继续发送请求
2xx:表示服务器已成功接收到请求并进行处理
3xx:表示服务器要求客户端重定向
4xx:表示客户端的请求有非法内容
5xx:标识服务器未能正常处理客户端的请求而出现意外错误
常见状态码说明:
200 OK: 表示客户端请求成功
400 Bad Request: 表示客户端请求有语法错误,不能被服务器端解析
401 Unauthonzed: 表示请求未经授权,该状态码必须与WWW-Authenticate报文头一起使用
404 Not Found:请求的资源不存在,例如输入了错误的url
500 Internal Server Error: 表示服务器发生了不可预期的错误,导致无法完成客户端的请求
503 Service Unavailable:表示服务器当前不能处理客户端的请求,在一段时间后服务器可能恢复正常
响应头
一般情况下,响应头会包含以下,甚至更多的信息。
Location:服务器返回给客户端,用于重定向到新的位置
Server: 包含服务器用来处理请求的软件信息及版本信息
Vary:标识不可缓存的请求头列表
Connection: 连接方式。
对于请求端来讲:close是告诉服务端,断开连接,不用等待后续的求请了。keeplive则是告诉服务端,在完成本次请求的响应后,保持连接,等待本次连接后的后续请求。
对于响应端来讲:close表示连接已经关闭。keeplive则表示连接保持中,可以继续处理后续请求。Keep-Alive表示如果请求端保持连接,则该请求头部信息表明期望服务端保持连接多长时间(秒),例如300秒,应该这样写Keep-Alive: 300
空行
最后一个响应头之后就是空行,用于告诉请求端以下内容不再是响应头的内容了。
响应内容
服务端返回给请求端的文本信息。
HTTP报文示例
在这里我们在Firefox下用firebug随意抓取一个HTTP包和上文的报文结构做下一一对应关系图,以便大家了解实际的包和标准报文结构的对应关系。
总结
对于HTTP协议的交互过程这里就不再进行说明了,大家可以搜索下相关的资料进行学习,上述的内容请务必熟练掌握、深刻了解。更详细的内容推荐大家学习RFC 2616(http协议1.1版本,有中文版本)
HTTP协议基础及报文抓包分析相关推荐
- 无线射频专题《IEEE 802.11协议讲解2@WiFi抓包分析之MAC_Header》
前言: IEEE 802.11是IEEE最初制定的一个无线局域网标准,主要用于解决办公室局域网和校园网中,用户与用户终端的无线接入,业务主要限于数据存取,速率最高只能达到2Mbps.由于802.11在 ...
- websocket协议详解与抓包分析
Websocket是一种用于H5浏览器的实时通讯协议,它实现了浏览器与服务器全双工通信(full-duplex). 可以做到数据的实时推送,适用于广泛的工作环境,例如客服系统.物联网数据传输系统. 通 ...
- Wireshark数据抓包分析——网络协议篇
Wireshark数据抓包分析--网络协议篇 Wireshark是目前最受欢迎的抓包工具.它可以运行在Windows.Linux及MAC OS X操作系统中,并提供了友好的图形界面.同时,Wiresh ...
- PXE+VMware主机模式+KickStart脚本 自动安装ESXi 并试用WireShark抓包分析其中的协议TFTP,DHCP
1 安装 1.1 实验环境: Windows 10 (主机) VMWare workstation 15 (运行于主机上) Tiny PXE Server 1.0.0.21 (官网地址,下载地址 ...
- 华为——OSPF单区域实验配置,实验抓包分析,五种报文分析,六种LSA介绍,以及如何建立邻接关系的七种状态
华为--OSPF单区域实验配置,实验抓包分析,五种报文分析,六种LSA介绍,以及如何建立邻接关系的七种状态 前言 一:OSPF简介 1.1:工作原理 1.1.1:架构介绍 1.1.2:信息传递 1.1 ...
- Wireshark抓包分析之ICMP协议包
Wireshark抓包分析之ICMP协议包 一. Wireshark简介:(前身为Ethereal,2006年改名为wireshark) Wireshark 是一个网络封包分析软件.网络封包分析软件的 ...
- 网站与APP抓包分析1 基础原理与工具使用
简介: 基于网络协议与相关工具对网站与APP应用数据交互流程进行分析. 关键词:TCP.HTTP.HTTPS.HTTPDNS.Chrome.tshark.Charles.fidder.VirtalXp ...
- 模块学习4:(2)MQTT协议连接、发布、订阅、心跳、断链等分析和代码实现,并且通过mqtt.fx连接服务器,使用wireshark抓包分析mqtt实现过程
文章目录 一.MQTT控制报文的结构 (1)固定报头(类型/标志 + 剩余长度) 剩余长度(这个要注意下,要注意它的计算方法,有一点特殊) 可变报头 有效载荷 二.下面直接开整各个具体的报文(MQTT ...
- 实验十四:Wireshark数据抓包分析之ARP协议
实验十四:Wireshark数据抓包分析之ARP协议 目录 一.实验目的及要求 二.实验原理 1.什么是ARP 2.ARP工作流程 3.ARP缓存表 三.实验环境 四.实验步骤及内容 实验步骤一 1. ...
- Wireshark数据抓包分析(网络协议篇)第1章网络协议抓包概述
Wireshark数据抓包分析(网络协议篇)第1章网络协议抓包概述 网络协议是用于不同计算机之间进行网络通信的.网络协议是网络上所有设备(如网络服务器.计算机.交换机.路由器等)之间通信规则的集合,它 ...
最新文章
- Android分享功能
- 国际10-20标准电极位置
- window.onload 不执行
- Stanford机器学习笔记-4. 神经网络Neural Networks (part one)
- Python列表的常用你操
- 麻省理工计算机科学录取条件,2018美国留学:麻省理工学院托福分数最低录取要求...
- saiku 连接 MySQL_Saiku连接mysql数据库(二)
- Navicat连接mysql8.0.1版本出现1251--Client
- python模块之logging模块
- 台湾自由行可行性研究报告
- Python数据分析项目实例5: 分析某餐饮企业的订单详情表数据(基于matplotlib的python数据可视化分析)
- MVX-Net | 多模型三位像素网络用于3D目标检测
- 邮箱客户端设置 服务器设置,263邮箱客户端设置
- 反向代理是什么意思?正向代理和反向代理的区别是什么?
- How to get admin priviledge in Vista using ziguang holes
- 微信终端跨平台组件 Mars 在移动网络的探索和实践
- c语言深度剖析(2)—有符号与无符号
- 企业/公司如何初创建一个小程序
- 360浏览器收藏夹导出问题终极解决方案
- 计算机无法设置双屏显示,电脑双屏显示怎么设置?