1、HTTP协议版本
HTTP协议有多个版本,目前应用最为广泛的是HTTP/1.1,它几乎可以说是整个互联网的基石。但HTTP/1.1的性能难以满足如今的高流量网站,于是出现了HTTP/2和HTTP/3。不过这两个新版本的协议还没有完全推广开。
HTTP协议,即"超文本传输协议",是一个应用层协议,通常基于TCP/IP,能够在网络的任意两点之间传输文字、图片、音频和视频等数据。
HTTP协议中两个端点称为请求方和应答方。请求方通常就是Web浏览器,也叫user agent,应答方是Web服务器,存储着网络上的大部分静态或动态的资源。
浏览器和服务器之间还有一些中间人的角色,如CDN、网关、代理等。它们也同样遵循HTTP协议,可以帮助用户更快捷、更安全地获取资源。
HTTP协议不是一个孤立的协议,需要下层很多其他协议的配合。最基本的是TCP/IP,实现寻址、路由和可靠的数据传输,还有DNS协议实现对互联网上主机的定位查找。
对HTTP更准确的称呼是 "HTTP over TCP/IP",而另一个 "HTTP over SSL/TLS" 就是增加了安全功能的HTTPS。
2、软件准备
Wireshark:网络抓包工具,能够截获在TCP/IP协议栈中传输的所有流量,并按协议类型、地址、端口等任意过滤,功能强大,是学习网络协议的必备工具。
Chrome:目前主流的浏览器之一。在此充当调试器,对HTTP/1.1、HTTPS、HTTP/2,QUIC等协议都支持的很好,用F12打开 "开发者工具" 还可以非常详细地观测HTTP协议传输全过程的各种数据。
Telnet:经典的虚拟终端,基于TCP协议远程登录主机,可以用它来模拟浏览器的行为,连接服务器后手动发送HTTP请求,把浏览器的干扰彻底排除,能够从最原始的层面去研究HTTP协议。
OpenResty:相当于Nginx的强化包,除了Nginx还有一大堆有用的功能模块,不仅支持HTTP/HTTPS,还特别集成了脚本语言Lua简化Nginx二次开发,方便快速的搭建动态网关,更能够当成应用容器来编写业务逻辑。
3、安装过程
在GitHub上https://b.geekbang.org/member/course/detail/100124,下载最新的http_study项目源码压缩包,放到自己的Windows10环境上,解压到:D:\http_study,然后安装Chrome和WireShare,一路按下一步即可,安装目录:D:\http_study
安装Telnet,打开控制面板 - 程序,然后如下图:
安装OpenResty,官网下载OpenResty® - Open source,点击Download,下载Windows版,必须把解压目录也放在D:\http_study,并改名为:openresty
然后将本地hosts文件,加入如下内容:

4、测试验证
环境搭建完成,首先启动Web服务器,也就是OpenResty,去到 D:\http_study\www目录下,点击start.bat,然后点击list.bat,会看到如下信息:
然后运行Wireshark,开始抓包,实验环境运行在本机的 127.0.0.1 上,也就是loopback环回地址。在 Wireshark 里要选择“Npcap loopback Adapter”,过滤器选择“HTTP TCP port(80)”,即只抓取 HTTP 相关的数据包。鼠标双击开始界面里的“Npcap loopback Adapter”即可开始抓取本机上的网络数据。
然后打开Chrome,键入http://localhost,可以看到如下界面:
然后观察Wireshark,已经显示抓到了部分数据,如下所示: