当前位置:网站首页>技术分享 | 抓包分析 TCP 协议
技术分享 | 抓包分析 TCP 协议
2022-07-06 12:57:00 【Hogwarts_测试】
本文节选自霍格沃兹测试开发学社内部教材
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 会看到很多包。
边栏推荐
- Comprehensive evaluation and recommendation of the most comprehensive knowledge base management tools in the whole network: flowus, baklib, jiandaoyun, ones wiki, pingcode, seed, mebox, Yifang cloud,
- SDL2来源分析7:演出(SDL_RenderPresent())
- Regular expression collection
- The most comprehensive new database in the whole network, multidimensional table platform inventory note, flowus, airtable, seatable, Vig table Vika, flying Book Multidimensional table, heipayun, Zhix
- 【深度学习】PyTorch 1.12发布,正式支持苹果M1芯片GPU加速,修复众多Bug
- Hardware development notes (10): basic process of hardware development, making a USB to RS232 module (9): create ch340g/max232 package library sop-16 and associate principle primitive devices
- Nodejs教程之Expressjs一篇文章快速入门
- Reviewer dis's whole research direction is not just reviewing my manuscript. What should I do?
- Web开发小妙招:巧用ThreadLocal规避层层传值
- El table table - sortable sorting & disordered sorting when decimal and% appear
猜你喜欢
Reviewer dis's whole research direction is not just reviewing my manuscript. What should I do?
审稿人dis整个研究方向已经不仅仅是在审我的稿子了怎么办?
for循环中break与continue的区别——break-完全结束循环 & continue-终止本次循环
Chris LATTNER, the father of llvm: why should we rebuild AI infrastructure software
愛可可AI前沿推介(7.6)
[MySQL] basic use of cursor
【力扣刷题】一维动态规划记录(53零钱兑换、300最长递增子序列、53最大子数组和)
爱可可AI前沿推介(7.6)
[interpretation of the paper] machine learning technology for Cataract Classification / classification
966 minimum path sum
随机推荐
【深度学习】PyTorch 1.12发布,正式支持苹果M1芯片GPU加速,修复众多Bug
966 minimum path sum
Nodejs教程之让我们用 typescript 创建你的第一个 expressjs 应用程序
039. (2.8) thoughts in the ward
Hardware development notes (10): basic process of hardware development, making a USB to RS232 module (9): create ch340g/max232 package library sop-16 and associate principle primitive devices
3D人脸重建:从基础知识到识别/重建方法!
el-table表格——sortable排序 & 出现小数、%时排序错乱
【Redis设计与实现】第一部分 :Redis数据结构和对象 总结
The use method of string is startwith () - start with XX, endswith () - end with XX, trim () - delete spaces at both ends
快过年了,心也懒了
Infrared thermometer based on STM32 single chip microcomputer (with face detection)
[interpretation of the paper] machine learning technology for Cataract Classification / classification
【mysql】触发器
爱可可AI前沿推介(7.6)
Three schemes of SVM to realize multi classification
SDL2来源分析7:演出(SDL_RenderPresent())
It's almost the new year, and my heart is lazy
愛可可AI前沿推介(7.6)
Select data Column subset in table R [duplicate] - select subset of columns in data table R [duplicate]
Comprehensive evaluation and recommendation of the most comprehensive knowledge base management tools in the whole network: flowus, baklib, jiandaoyun, ones wiki, pingcode, seed, mebox, Yifang cloud,