关于软件测试:软件测试-抓包分析-TCP-协议

10次阅读

共计 1263 个字符,预计需要花费 4 分钟才能阅读完成。

​ TCP 协定是在传输层中,一种面向连贯的、牢靠的、基于字节流的传输层通信协议。

环境筹备

对接口测试工具进行分类,能够如下几类:

 网络嗅探工具:tcpdump,wireshark
代理工具:fiddler,charles,anyproxyburpsuite,mitmproxy
剖析工具:curl,postman,chrome Devtool

抓包剖析 TCP 协定

tcpdump

tcpdump 是一款将网络中传送的数据包的“头”齐全截获下来提供剖析的工具。它反对针对网络层、协定、主机、网络或端口的过滤,并提供 and、or、not 等逻辑语句去掉无用的信息。

让 tcpdump 时刻监听 443 端口,如果有同样就输出到 log 文件中

sudo tcpdump port 443 -v -w /tmp/tcp.log

利用这条命令,会把失去的报告放到目录 /tmp/tcp.log 中。

罕用参数含意 port 443 监听 443 端口 - v 输入更加具体的信息 - w 把数据写到 log 中

wireshark

wireshark 也是一款网络嗅探工具,它除了领有 tcpdump 性能,还有更多扩大性能,比方剖析工具,然而在接口测试中,抓包过程往往都是在服务器进行,服务器个别不提供 UI 界面,所以 wireshark 无奈在服务器工作,只能利用 tcpdump 抓包生成 log,而后将 log 导入 wireshark 应用,在有 UI 界面的客户端上进行剖析。

抓包剖析 TCP 协定

抓取一个 http 的 get 申请:

 在百度上搜 mp3 http://www.baidu.com/s?wd=mp3
用 tcpdump 截获这个 get 申请,并生成 log
用 wireshark 关上 tcpdump 生成的 log

应用 wireshark 查看 log:

​编辑

log 的前几段信息是三次握手。因为信道是不牢靠的,在发送数据前,就必须确保信道稳固,而三次握手就像是上面这些操作:

 第一次握手:建设连贯时,客户端发送 syn 包(syn=j)到服务器,并进入 SYN_SENT 状态,期待服务器确认。第二次握手:服务器收到 syn 包,必须确认客户的 SYN(ack=j+1),同时本人也发送一个 SYN 包(seq=k),即 SYN+ACK 包,此时服务器进入 SYN_RECV 状态;第三次握手:客户端收到服务器的 SYN+ACK 包,向服务器发送确认包 ACK(ack=k+1),此包发送结束,客户端和服务器进入 ESTABLISHED(TCP 连贯胜利)状态,实现三次握手。

通过三次握手,就能够进一步交换,就像上面这样:

​编辑

完结交换时,也须要进行四次挥手:

​编辑

 第一次挥手:客户端向服务器端发送一个 FIN,申请敞开数据传输。第二次挥手:服务器接管到客户端的 FIN,向客户端发送一个 ACK,其中 ack 的值等于 FIN+SEQ。第三次挥手:服务器向客户端发送一个 FIN,通知客户端应用程序敞开。第四次挥手:客户端收到服务器端的 FIN,回复一个 ACK 给服务器端。其中 ack 的值等于 FIN+SEQ。

留神:一个申请可能分为多个包,一个数据也是这样,于是在 wireshark 会看到很多包。

正文完
 0