抓包分析 TCP 协议

news/发布时间2024/5/19 8:01:56

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 会看到很多包。

最后感谢每一个认真阅读我文章的人,礼尚往来总是要有的,这些资料,对于【软件测试】的朋友来说应该是最全面最完整的备战仓库,虽然不是什么很值钱的东西,如果你用得到的话可以直接拿走:

这些资料,对于【软件测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴上万个测试工程师们走过最艰难的路程,希望也能帮助到你! 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.bcls.cn/xNAd/2112.shtml

如若内容造成侵权/违法违规/事实不符,请联系编程老四网进行投诉反馈email:xxxxxxxx@qq.com,一经查实,立即删除!

相关文章

Qt_快速安装指南

下载Qt在线安装程序(不仔细介绍)注册Qt账号(不仔细介绍)使用快速运行的命令,按照指定的下载地址下载 在Qt指定目录打开cmd命令窗口.\eqt-unified-windows-x86-4.0.1-1-online. exe --mirror https://mirrors.ustc.edu.…

数据结构——lesson3单链表介绍及实现

目录 1.什么是链表? 2.链表的分类 (1)无头单向非循环链表: (2)带头双向循环链表: 3.单链表的实现 (1)单链表的定义 (2)动态创建节点 &#…

C++中键盘响应结合OpenCV库进行图像灰度图、HSV图转换和亮度调整

QuickDemo.cpp #include<quick_opencv.h> //键盘响应 void QuickDemo::key_demo(Mat &image) {Mat dstMat::zeros(image.size(),image.type());while (true) {char c waitKey(100);if (c 27) {//key #esc,退出break;}if (c 49) {//key #1,按键1&#xff0c;打印y…

挑战杯 地铁大数据客流分析系统 设计与实现

文章目录 1 前言1.1 实现目的 2 数据集2.2 数据集概况2.3 数据字段 3 实现效果3.1 地铁数据整体概况3.2 平均指标3.3 地铁2018年9月开通运营的线路3.4 客流量相关统计3.4.1 线路客流量排行3.4.2 站点客流量排行3.4.3 入站客流排行3.4.4 整体客流随时间变化趋势3.4.5 不同线路客…

3DSC特征描述符、对应关系可视化以及ICP配准

一、3DSC特征描述符可视化 C #include <pcl/point_types.h> #include <pcl/point_cloud.h> #include <pcl/search/kdtree.h> #include <pcl/io/pcd_io.h> #include <pcl/features/normal_3d_omp.h>//使用OMP需要添加的头文件 #include <pcl…

微信小程序引入官方《评价组件》的一些坑点

作为微信小程序开发者&#xff0c;多少有些想对其吐槽的冲动。文档是多&#xff0c;却混乱、自相矛盾等等。 这次遇到的坑就是官方的《评价组件》&#xff0c;原本引入该组件是为了增加用户体验&#xff0c;结果却不如人意。 按官方文档引入组件&#xff08;代码层面的引入&a…

Unity设备分级策略

Unity设备分级策略 前言 之前自己做的设备分级策略&#xff0c;在此做一个简单的记录和思路分享。希望能给大家带来帮助。 分级策略 根据拟定的评分标准&#xff0c;预生成部分已知机型的分级信息&#xff0c;且保存在包内&#xff1b;如果设备没有被评级过&#xff0c;则优…

学习如何在js中指定按照数组中某一个值排序sort方法

学习如何在js中指定按照数组中某一个值排序sort方法 定义和用法排序数组按升序对数组中的数字进行排序按降序对数组中的数字进行排序获取数组中的最小值获取数组中的最大值获取数组中的最大值按字母顺序对数组进行排序&#xff0c;然后反转排序项的顺序&#xff08;降序&#x…

如何选择最适合的图纸加密软件?用户体验及性价比

安秉网盾图纸加密软件是一款功能强大的图纸加密工具&#xff0c;具有以下特点和优势&#xff1a; 全盘加密&#xff1a;安秉网盾采用先进的加密算法&#xff0c;能对文件、文件夹、磁盘等数据进行全面加密&#xff0c;确保数据在存储和传输过程中的安全性。 监控与审计&#…

open3d k-means 聚类

k-means 聚类 一、算法原理1、介绍2、算法步骤 二、代码1、机器学习生成kmeans聚类2、点云学习生成聚类 三、结果1、原点云2、机器学习生成kmeans聚类3、点云学习生成聚类 四、相关链接 一、算法原理 1、介绍 K-means聚类算法是一种无监督学习算法&#xff0c;主要用于数据聚…

[嵌入式系统-28]:开源的虚拟机监视器和仿真器:QEMU(Quick EMUlator)与VirtualBox、VMware Workstation的比较

目录 一、QEMU概述 1.1 QEMU架构 1.2 QEMU概述 1.3 什么时候需要QEMU 1.4 QEMU两种操作模式 1.5 QEMU模拟多种CPU架构 二、QEMU与其他虚拟机的比较 2.1 常见的虚拟化技术 2.1 Linux KVM 2.2 Windows VirtualBox 2.3 Windows VMware workstation 三、VirtualBox、VM…

elementui 中el-date-picker 选择年后输出的是Wed Jan 01 2025 00:00:00 GMT+0800 (中国标准时间)

文章目录 问题分析 问题 在使用 el-date-picker 做只选择年份的控制器时&#xff0c;出现如下问题&#xff1a;el-date-picker选择年后输出的是Wed Jan 01 2025 00:00:00 GMT0800 (中国标准时间)&#xff0c;输出了两次如下 分析 在 el-date-picker 中&#xff0c;我们使用…

FISCO BCOS(十七)利用脚本进行区块链系统监控

要利用脚本进行区块链系统监控&#xff0c;你可以使用各种编程语言编写脚本&#xff0c;如Python、Shell等 利用脚本进行区块链系统监控可以提高系统的稳定性、可靠性&#xff0c;并帮助及时发现和解决潜在问题&#xff0c;从而确保区块链网络的正常运行。本文可以利用脚本来解…

day09-MongoDB

文章目录 day09-MongoDB一、回顾1.1. 行为实战核心要点说明 二、评论系统2.1 MongoDB2.1.1 MongoDB简介①简介②体系结构与术语 2.1.2 安装与连接2.1.3 Springboot整合MongoDB①引入依赖②添加服务端配置③准备实体类④测试-新增⑤测试-查询⑥测试-更新测试-删除 2.2 app端评论…

fastApi笔记04-查询参数和字符串校验

额外校验 使用Query可以对查询参数添加校验 from typing import Unionfrom fastapi import FastAPI, Queryapp FastAPI()app.get("/items/") async def read_items(q: Union[str, None] Query(defaultNone, max_length50)):results {"items": [{"…

Java,SpringBoot项目中,Postman的测试方法。

目录 展示查询搜索 根据id展示数据 根据id删除数据 根据id更新数据 添加数据 展示查询搜索 // 根据姓名分页查询用户GetMapping("/getUsersByName")public IPage<User> getUsersByName(RequestParam(defaultValue "1") Long current,RequestPar…

Vue-route核心知识整理

目录 1 相关理解 1.1 对 vue-router 的理解 1.2 对 SPA 应用的理解 1.3 对路由的理解 1.3.1 什么是路由&#xff1f; 1.3.2 路由的分类 2 几个注意点 3 路由的基本使用 4 嵌套 (多级) 路由 5 路由传参 5.1 query 方式传参 5.1.1 跳转路由并携带query参数&#xff0…

32单片机基础:OLED调试工具的使用

下面会介绍OLED显示屏的驱动函数模块&#xff0c;先学会如何使用&#xff0c;至于OLED屏幕的原理和代码编写&#xff0c; 我们之后会再写一篇。 现在我们就是用OLED当一个调试的显示屏&#xff0c;方便我们调试程序。 为什么要调试呢&#xff0c;是为了方便我们看现象&#…

深度学习在时间序列预测的总结和未来方向分析

2023年是大语言模型和稳定扩散的一年&#xff0c;时间序列领域虽然没有那么大的成就&#xff0c;但是却有缓慢而稳定的进展。Neurips、ICML和AAAI等会议都有transformer 结构(BasisFormer、Crossformer、Inverted transformer和Patch transformer)的改进&#xff0c;还出现了将…

四川宏博蓬达法律咨询有限公司守护您的法律安全

在法治社会日益完善的今天&#xff0c;法律咨询服务的需求日益增长。四川宏博蓬达法律咨询有限公司作为一家专业的法律服务机构&#xff0c;始终致力于为客户提供全面、高效、安全的法律服务&#xff0c;为社会和谐稳定贡献自己的力量。 一、专业团队&#xff0c;铸就信赖 四川…
推荐文章