赞
踩
目录
在了解完网络编程的传输层UDP和TCP通信协议后,就需要开始对数据进行“修饰”,即应用层协议,UDP和TCP协议只负责“传输”。
在应用层中,HTTP协议是最重要、最常用的一个通信协议。本节主要介绍HTTP协议的基础原理以及Fiddler抓包工具的简单使用。
序列:HTTP/HTTPS - 001
HTTP(全称为“超文本传输协议”)是一种应用非常广泛的应用层协议,目前已经发展成为一种最主流的应用层协议,是开发中最常使用的协议之一。
所谓“超文本” 的含义,就是传输的内容不仅仅是文本,还可以是一些其他的资源,比如图片、视频和音频等二进制的数据。
HTTP协议往往是基于传输层的TCP协议实现(HTTP1.0、HTTP1.1和HTTP2.0均为TCP,HTTP3基于UDP实现)。
目前我们主要使用的还是HTTP1.1和HTTP2.0版本。
当我们在浏览器中输入一个“网址”,此时浏览器就会给对应的服务器发送一个HTTP请求,对方服务器收到这个请求之后,经过计算处理,就会给主机返回一个HTTP响应。
在http协议的请求/响应的过程中,主机和服务器都是以“报文”的形式进行传递数据,这个报文是以字符文本的格式存储和传输的。
事实上,当我们访问一个网站的时候,大概率涉及不止一次的HTTP请求/响应的交互过程。
为了清楚捕捉到所有的HTTP协议请求/响应的报文,所以我们要使用“抓包工具”获取详细的交互过程。
在网络编程开发中,程序员会经常使用到HTTP协议,其主要用于以下场景:
在了解HTTP协议的格式之前,我们首先要学会和使用“抓包工具”获取传输报文,这在学习和了解HTTP协议时非常重要。
市面上的抓包工具有很多,以其中最好使用的一款Fiddler抓包工具为例。
Fiddler的官网下载地址为:Fiddler | Web Debugging Proxy and Troubleshooting Tools;
FIddler是一款专门抓取针对http或hppts请求/响应的工具,它对于其他的抓包工具而言具有清晰、方便的优点,所以推荐使用Fiddler抓包工具。
安装完成之后Fiddler界面如下:
安转完成之后,依次选择左上角Tools->Options...->HTTPS->勾选全部的内容,操作完成之后就可以抓取主机的所有http和https请求/响应。
可以使用ctrl+a全选左侧的抓包结果,delete键清除所有被选中的结果。
Fiddler就相当于一个“代理”。
“代理”关系如图所示:
因为http协议的请求和响应是以字符文本的形式传输的,所以抓包结果也会是一个文本文件。
在Fiddler抓包工具中选中一条要查看的hppt协议请求/响应,切换到Raw标签页可以看到详细的数据格式,点击View in Notepad按钮,会看到一个文本文件,这个文本文件就是请求/响应的传输报文。
示例如下:
HTTP的传输报文中有规定的标椎格式,都是字符文本形式,通过对报文格式的了解可以知道传输过程中的很多信息。
在获取了http传输报文之后,就可以对报文的格式进行拆分和了解。本节只对两个报文格式进行介绍与使用,在后续章节中会详解报文格式与关键词含义。
使用上述的请求示例:
请求格式拆解:
响应的详细数据,在Fiddler中通过右下角的View in Notepad打开:
响应格式拆解:
HTTP协议请求/响应格式图解:
请求/响应行、报头和空行必须要有,请求/响应正文部分可有可无。
空行作用:HTTP在传输层依赖TCP协议,TCP是面向字节流的,如果没有这个空行,就会出现“粘包问题”。
本节只对两个报文格式进行简单拆分,对于报文格式中的关键词介绍与使用,在下一篇文章中会依次进行介绍。
以上便是HTTP协议的基本知识和抓包工具Fiddler。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。