当前位置:网站首页>技术分享 | 抓包分析 TCP 协议
技术分享 | 抓包分析 TCP 协议
2022-07-07 09:07:00 【测试界的飘柔】
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 中。

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 会看到很多包。
最后: 可以在公众号:伤心的辣条 ! 自行领取一份216页软件测试工程师面试宝典文档资料【免费的】。以及相对应的视频学习教程免费分享!,其中包括了有基础知识、Linux必备、Shell、互联网程序原理、Mysql数据库、抓包工具专题、接口测试工具、测试进阶-Python编程、Web自动化测试、APP自动化测试、接口自动化测试、测试高级持续集成、测试架构开发测试框架、性能测试、安全测试等。
我推荐一个【Python自动化测试交流群:746506216】,大家可以一起探讨交流软件测试,共同学习软件测试技术、面试等软件测试方方面面,助你快速进阶Python自动化测试/测试开发,走向高薪之路。
喜欢软件测试的小伙伴们,如果我的博客对你有帮助、如果你喜欢我的博客内容,请 “点赞” “评论” “收藏” 一 键三连哦!
边栏推荐
- [installation system] U disk installation system tutorial, using UltraISO to make U disk startup disk
- From pornographic live broadcast to live broadcast E-commerce
- 基于Retrofit框架的金山API翻译功能案例
- 创意信息获2家机构调研:GreatDB 数据库已在9地部署
- Template initial level template
- 基于STC8G1K08的0.96寸IIC液晶屏驱动程序
- Avoid mutating a prop directly since the value will be overwritten whenever the parent component
- vim 的各种用法,很实用哦,都是本人是在工作中学习和总结的
- 书签整理-程序员常用网站导航
- 【亲测可行】error while loading shared libraries的解决方案
猜你喜欢
![[untitled]](/img/f0/a34c116a793e844da46c7cd407224b.jpg)
[untitled]

Transaction rolled back because it has been marked as rollback-only解决

高考作文,高频提及科技那些事儿……

IDEA快捷键大全

Mysql的json格式查询

Simple and easy to modify spring frame components

从色情直播到直播电商

Antd select selector drop-down box follows the scroll bar to scroll through the solution
![[machine learning 03] Lagrange multiplier method](/img/14/7d4eb5679606e272f137ddbda4938c.png)
[machine learning 03] Lagrange multiplier method

通过 Play Integrity API 的 nonce 字段提高应用安全性
随机推荐
Deconstruction and assignment of variables
RationalDMIS2022阵列工件测量
Still cannot find RPC dispatcher table failed to connect in virtual KD
Introduction to shell programming
Multithreaded application (thread pool, singleton mode)
互联网协议
Wallhaven壁纸桌面版
在线硬核工具
高考作文,高频提及科技那些事儿……
Go Slice 比较
[untitled]
Network foundation (1)
基于DE2 115开发板驱动HC_SR04超声波测距模块【附源码】
Use of dotween
Arduino receives and sends strings
The difference between monotonicity constraint and anti monotonicity constraint
SQL Server knowledge gathering 9: modifying data
2021 summary and 2022 outlook
Unity script visualization about layout code
Deep understanding of Apache Hudi asynchronous indexing mechanism