纸上得来终觉浅,我们现在就要在 Windows 系统上实际操作,用几个应用软件搭建出一个“最小化”的 HTTP 实验环境,为后续学习搭建好环境。
一、搭建此环境要用到的工具如下:
Win10系统
Wireshark
Chrome/Firefox
Telnet
OpenResty
Wireshark是著名的网络抓包工具,能够截获在 TCP/IP 协议栈中传输的所有流量,并按协议类型、地址、端口等任意过滤,功能非常强大,是学习网络协议的必备工具。
它就像是网络世界里的一台“高速摄像机”,把只在一瞬间发生的网络传输过程如实地“拍摄”下来,事后再“慢速回放”,让我们能够静下心来仔细地分析那一瞬到底发生了什么。
Chrome是 Google 开发的浏览器,是目前的主流浏览器之一。它不仅上网方便,也是一个很好的调试器,对 HTTP/1.1、HTTPS、HTTP/2、QUIC 等的协议都支持得非常好,用 F12 打开“开发者工具”还可以非常详细地观测 HTTP 传输全过程的各种数据。
与 Wireshark 不同,Chrome 和 Firefox 属于“事后诸葛亮”,不能观测 HTTP 传输的过程,只能看到结果。
Telnet是一个经典的虚拟终端,基于 TCP 协议远程登录主机,我们可以使用它来模拟浏览器的行为,连接服务器后手动发送 HTTP 请求,把浏览器的干扰也彻底排除,能够从最原始的层面去研究 HTTP 协议。
OpenResty你可能比较陌生,它是基于 Nginx 的一个“强化包”,里面除了 Nginx 还有一大堆有用的功能模块,不仅支持 HTTP/HTTPS,还特别集成了脚本语言 Lua 简化 Nginx 二次开发,方便快速地搭建动态网关,更能够当成应用容器来编写业务逻辑。
选择 OpenResty 而不直接用 Nginx 的原因是它相当于 Nginx 的“超集”,功能更丰富,安装部署更方便。我也会用 Lua 编写一些服务端脚本,实现简单的 Web 服务器响应逻辑,方便实验。
二、接下来就开始进行环境搭建。
我看的一个课程上,课程老师再GitHub 上为本专栏开了一个项目:http_study,可以直接用“git clone”下载,或者去 Release 页面,下载打好的压缩包。
GitHub项目克隆要先下载一个Git,操作流程见网址:https://www.cnblogs.com/yeyuting/p/14331619.html
在明白了git基本操作之后,我们现在将http_study克隆下来,选择文件,右键选择“git bash here”,在命令行中写入指令:git clone 项目地址,回车,将文件拉取到本地。
1. Chrome安装:Google环境简单十分的简单,去官网直接下载即可。
2. OpenResty安装:官网:http://openresty.org/cn/,下载对应版本,先暂时放着不用动
3. Telnet开启,默认情况下Telnet指令并未开通,这时要进行开通,借鉴文章:https://www.cnblogs.com/yeyuting/p/14119081.html
4. Wireshark安装:这里我安装的时候出现了很多问题,可以去官网下载最新版(但是官网下载十分十分十分的慢),也可以找资源下载旧版本,但是有些旧版本下载了电脑上打不开程序,提示找不到指定设备,,,所以建议下载最新版(亲测可用),也可以尝试Wireshark-win64-3.2.7版本,这个版本我装了也是可以用的,分享百度网盘链接,需要直接下就行:
链接:https://pan.baidu.com/s/135Gw3E2Qqfs6DAz8YNrE1A
提取码:6v72
安装Wireshark的时候要注意默认选上的npcap是必须要安装的,一直下一步进行安装即可,初始化页面如下:
5. 接下来还要修改一下hosts文件,为了能够让浏览器能够使用 DNS 域名访问我们的实验环境,位置在“C:\WINDOWS\system32\drivers\etc”,在里面添加三行本机 IP 地址到测试域名的映射,你也可以参考 GitHub 项目里的 hosts 文件,这就相当于在一台物理实机上“托管”了三个虚拟主机。
127.0.0.1 www.chrono.com 127.0.0.1 www.metroid.net 127.0.0.1 origin.io
注意修改 hosts 文件需要管理员权限,直接用记事本编辑是不行的,可以切换管理员身份,或者改用其他高级编辑器,比如 Notepad++,而且改之前最好做个备份。但是我自己修改的时候发现无论我如何切换权限都不能修改hosts文件,头秃。。。。最后发现GitHub上克隆下来的文件中有已经编辑好了的hosts文件,直接复制粘贴将原hosts文件覆盖即可。
6. 最后还要将下载好的OpenResty压缩包解压,将名字修改为openresty,放到http_study文件夹下,如下所示:
这样一来,环境就搭建好了,现在来做测试。
三、环境测试
1. 启动web服务器 openresty
start:启动 OpenResty 服务器;
stop:停止 OpenResty 服务器;
reload:重启 OpenResty 服务器;
list:列出已经启动的 OpenResty 服务器进程。
使用鼠标双击“start”批处理文件,就会启动 OpenResty 服务器在后台运行,这个过程可能会有 Windows 防火墙的警告,选择“允许”即可。
运行后,鼠标双击“list”可以查看 OpenResty 是否已经正常启动,应该会有两个nginx.exe 的后台进程,大概是下图的样子。
这里start的时候可能会出现start失败的情况:
将目录cache和logs删掉重新start也没用,然后从下午一直找问题找到今天中午,才知道是8080端口被占用,释放端口后,start就成功了。。。。。。。。。。所以如果start失败出现的话到处看看问题,该释放的端口都释放出来,或许能解决问题。
2. 接下里打开Wireshark,
因为我们的实验环境运行在本机的 127.0.0.1 上,也就是 loopback“环回”地址。所以,在 Wireshark 里要选择“Adapter for loopback traffic capture”,右击开始捕捉。
然后我们打开 Chrome,在地址栏输入“http://localhost/”,访问刚才启动的OpenResty 服务器,就会看到一个简单的欢迎界面,如下图所示。
这样一来,http基本环境就搭建好了,后面具体来学习如何捕捉信息。
至此,结束。