软件测试 | 抓包分析 TCP
1.TCP 简介
TCP 是在传输层中,一种面向连接的、可靠的、基于字节流的通信协议。
2.抓包分析的工具
抓包分析的工具分类如下。
(1)网络嗅探工具:Tcpdump、Wireshark。
(2)代理工具:Fiddler、Charles、Anyproxyburpsuite、Mitmproxy。
(3)分析工具:Curl、Postman、Chrome Devtool。
3.抓包分析的部分工具介绍
(1)Tcpdump
Tcpdump 是一款将网络中传送的数据包的 “头” 完全截获下来供用户分析的工具。它支持针对协议、主机、网络或端口的过滤,并不通过 and、or、not 等逻辑语句去掉无用的信息。
用 Tcpdump 时刻监听 443 端口,如果发现异常信息,就把这类信息输入到 log 文件中,命令代码如下。
这条命令里使用的参数解析如表 6-2 所示。
(2)Wireshark
Wireshark 是一款网络嗅探工具,它除了拥有 Tcpdump 功能,还有更多扩展功能,如分析功能。但是在接口测试中,抓包汪汪都是在服务器上进行的,服务器一般不提供 UI 界面,所以 Wireshark 无法在服务器上运行,只能利用 Tcpdump,把它监听到的信息输入到 log 文件,然后将 log 文件导入 Wireshark 使用,以便于我们可在有 UI 界面的客户端上分析数据包。
(3)抓包分析实现
获取一个 HTTP 的 GET 请求的实现步骤如下。
1)在百度上搜 MP3(http://www.baidu.com/s?wd=mp3).
2)用 Tcpdump 截获这个 GET 请求,并将获取的信息输入到 log 文件。
3)用 Wireshark 打开 log 文件,如图 6-4 所示。
log 文件的前几段信息时表示三次握手,三次握手就像是下面这些操作(见图 6-5)。
注:SYN、ACK 表示 “标志位” ,Ack 表示 “ 确认序号 ”
(1)第一次握手:建立连接时,客户端将标志位 SYN 置为 1,随机产生一个值 Seq=x,并发送 SYN 包到服务端,客户端进入 SYN_SENT 状态,等待服务端确认。
(2)第二次握手:服务端收到 SYN 包后,有标志位 SYN=1 知道客户端请求建立连接,服务端将标志位 SYN 和 ACK 都置为 1,Ack=x+1,随机产生一个值 Seq=y,并将该 SYN 包发送给客户端以确认连接请求,此时服务端进入后 SYN_RCVD 状态。
(3)第三次握手:客户端收到服务端的 SYN 包后,检查 Ack 是否为 y+1,ACK 是否为 1,如果正确,则将标志位 ACK 置为 1,Ack=y+1,并将 SYN 包发送给服务端,服务端检查 Ack 是否为 y+1,ACK 是否为 1,如果正确则连接建立成功,此包发送完毕,客户端和服务端进入 ESTABLISHED 状态,完成三次握手。
经过三次握手,客户端和服务端就可以进一步 “交流” 了,如图 6-6 所示。
结束 “ 交流 ” 时,也需要进行四次挥手,如图 6-7 所示。
(1)第一次挥手:客户端向服务端发送一个 FIN,请求关闭数据传输。
(2)第二次挥手:服务端接收到客户端的 FIN,向客户端发送一个 ACK,其中 ACK 的值等于 FIN+SEQ。
(3)第三次挥手:服务端向客户端发送一个 FIN,告诉客户端应用程序关闭。
(4)第四次挥手:客户端收到服务端的 FIN,回复一个 ACK 给服务端。其中 ACK 的值等于 FIN+SEQ。
搜索微信公众号:TestingStudio 霍格沃兹的干货都很硬核
评论