这篇文章主要介绍一下 Wireshark 抓包工具获取到的 HTTP协议 相关的数据,然后对这些数据进行简单的分析,主要目的是更深入的理解 HTTP协议,然后了解一下网络为什么要分层, OSI模型TCP/IP模型的区别。

1.HTTP 协议抓包实战

1.1 打开 Wireshark 工具,选中正在使用的网卡 以太网4(以自己电脑实际使用为准),点击 捕获,然后选择 选项

jsrpc 抓包 抓包http_jsrpc 抓包

1.2 在新窗口中的过滤栏中输入 port 80

jsrpc 抓包 抓包http_jsrpc 抓包_02

Tips:输入 port 80 之后点击 开始即可开始捕获,port 80表示筛选出和 80端口 相关的数据请求。

1.3 打开 Telnet 工具模拟 HTTP 请求:

telnet singwa666.com 80
GET /themes/simpleboot3/portal/public/assets/css/moco.css HTTP/1.1
Host: singwa666.com

如下图所示:

jsrpc 抓包 抓包http_http抓包实战pdf_03

1.4 Telnet 模拟 HTTP 请求之后,点击左上角红色 按钮停止抓取报文:

jsrpc 抓包 抓包http_http抓包实战pdf_04

1.5 找到 WireShark 中抓取到的该条 HTTP 请求的相关报文:

jsrpc 抓包 抓包http_jsrpc 抓包_05

Tips:找到 Telnet 中模拟请求的那条数据 双击

1.6 双击该条HTTP 请求数据:

jsrpc 抓包 抓包http_wireshark没有http_06

Tips:如图所示看到的报文信息都是符合基于 ABNF 描述的 HTTP 协议格式规范的。

2. OSI 模型

OSI (Open System Interconnection Reference Model)模型是一种理论概念模型,并未真正被实现过,但是在实现网络协议需要参考这种模型,才能更好的去理解网络中的协议和分层:

jsrpc 抓包 抓包http_http抓包实战 pdf_07

Tips:应用层解决的是业务问题,表示层负责把网络中的消息转化为应用层可以读写的消息(如TLS/SSL),会话层负责建立会话、握手、维持连接、关闭,传输层解决进程与进程之间的通信,网络层负责ip地址之间建立连接,数据链路层负责局域网中连接 MAC 地址连接到中交换机、路由器等,物理层主要负责信号是如何传递的。

3.TCP/IP 模型

实际在因特网中使用的是 TCP/IP 模型,在 TCP/IP 模型中对 OSI 模型做了很多简化,比如应用层没有对 表示层会话层做严格的区分,数据链路层和 物理层也没有做严格的区分:

jsrpc 抓包 抓包http_交换机如何抓包_08

Tips:网络分层中各层只需要负责各层自己所做的事情,不用关心其它层的工作,但会增加额外的数据处理延迟。

4.报文头部

jsrpc 抓包 抓包http_交换机如何抓包_09

5.抓包分析

下载一个抓包演示用的报文文件,地址 http://www.singwa666.com/demo.pcapng

5.1 首先用 WireShark 打开报文文件,并且用 http 过滤:

jsrpc 抓包 抓包http_wireshark没有http_10

5.2 点开其中的一条进行分析:

jsrpc 抓包 抓包http_wireshark没有http_11

5.3 点开 Ethernet II 可以看到数据链路层相关的数据:

jsrpc 抓包 抓包http_wireshark没有http_12

Tips:以太网层展示了 MAC 地址相关信息。

5.4 点开 Internet Protocol ... 可以看到 IP层 相关的数据:

jsrpc 抓包 抓包http_http抓包实战pdf_13

5.5 点开 Transmission Control Protocol ... 可以看到 TCP层 相关的数据:

jsrpc 抓包 抓包http_jsrpc 抓包_14

5.6 点开 Hypertext Transfer Protocol 可以看到 应用层 HTTP 相关的数据:

jsrpc 抓包 抓包http_交换机如何抓包_15