软件介绍
现成的环境当然有,只要能用浏览器上网,就会有 HTTP 协议,就可以进行实验。但现实的网络环境又太复杂了,有很多无关的干扰因素,这些“噪音”会“淹没”真正有用的信息。
所以搭建一个“最小化”的环境,在这个环境里仅有 HTTP 协议的两个端点:请求方和应答方,去除一切多余的环节,从而可以抓住重点,快速掌握 HTTP 的本质。
简单说一下这个“最小化”环境用到的应用软件:
- Wireshark
- Chrome/Firefox
- Telnet
- OpenResty
Wireshark是著名的网络抓包工具,能够截获在 TCP/IP 协议栈中传输的所有流量,并按协议类型、地址、端口等任意过滤。
Chrome是 Google 开发的浏览器,如果你不习惯可以使用自己的浏览器
Telnet是一个经典的虚拟终端,基于 TCP 协议远程登录主机,我们可以使用它来模拟浏览器的行为,连接服务器后手动发送 HTTP 请求,把浏览器的干扰也彻底排除,能够从最原始的层面去研究 HTTP 协议。
OpenResty是基于 Nginx 的一个“强化包”,里面除了 Nginx 还有一大堆有用的功能模块,不仅支持 HTTP/HTTPS,还特别集成了脚本语言 Lua 简化 Nginx 二次开发,方便快速地搭建动态网关,更能够当成应用容器来编写业务逻辑。
选择 OpenResty 而不直接用 Nginx 的原因是它相当于 Nginx 的“超集”,功能更丰富,安装部署更方便。我也会用 Lua 编写一些服务端脚本,实现简单的 Web 服务器响应逻辑,方便实验。
安装过程
下载:GitHub - chronolaw/http_study: follow me to study http
下载wireshark,一直next
启用telnet
下载openResty OpenResty - Download
把解压的目录放到之前git clone下来的目录并改名为openresty
为了能够让浏览器能够使用 DNS 域名访问我们的实验环境,还要改一下本机的 hosts 文件,位置在“C:\WINDOWS\system32\drivers\etc”,在里面添加三行本机 IP 地址到测试域名的映射,这就相当于在一台物理实机上“托管”了三个虚拟主机。
| 127.0.0.1 | www.chrono.com |
|---|---|
| 127.0.0.1 | www.metroid.net |
| 127.0.0.1 | origin.io |
把hosts文件拖出来修改再覆盖回去
测试验证
实验环境搭建完了,但还需要把它运行起来,做一个简单的测试验证,看是否运转正常。
首先我们要启动 Web 服务器,也就是 OpenResty。
在 http_study 的“www”目录下有四个批处理文件,分别是:、
- start:启动 OpenResty 服务器;
- stop:停止 OpenResty 服务器;
- reload:重启 OpenResty 服务器;
- list:列出已经启动的 OpenResty 服务器进程。
使用鼠标双击“start”批处理文件,就会启动 OpenResty 服务器在后台运行。
运行后,鼠标双击“list”可以查看 OpenResty 是否已经正常启动
有了 Web 服务器后,接下来运行 Wireshark,开始抓包。
因为实验环境运行在 127.0.0.1 。所以,在 Wireshark 里要选择“Adapter for loopback traffuc capture”,过滤器选择“HTTP TCP port(80)”,即只抓取 HTTP 相关的数据包。鼠标双击开始界面里的“Adapter for loopback traffuc capture”即可开始抓取本机上的网络数据。
打开浏览器输入localhost
如果无法打开可能是80或443端口被占用,找到应用给他停了就好
这时再看 Wireshark,应该会显示已经抓到了一些数据,就可以用鼠标点击工具栏里的“停止捕获”按钮告诉 Wireshark“到此为止”,不再继续抓包。
至于这些数据是什么,表示什么含义,以后再说
如果你能够在自己的电脑上走到这一步,就说明“最小化”的实验环境已经搭建成功了,不要忘了实验结束后运行批处理“stop”停止 OpenResty 服务器。