通过一次下载任务抓包分析TCP/IP协议

news2024/11/25 18:44:58

TCP/IP协议分析

一、实验简介

本实验主要讲解TCP/IP协议的应用,通过一次下载任务,抓取TCP/IP数据报文,对TCP连接和断开的过程进行分析,查看TCP“三次握手”和“四次挥手”的数据报文,并对其进行简单的分析。

二、实验目标

1.了解运输层TCP协议基本概念、报文结构;
2.分析TCP报文头部;
3.分析TCP连接建立过程、TCP连接释放;
4.掌握使用wireshark进行tcp协议分析技术。

三、实验环境

实验主机:centos7和本地Windows
实验工具:Wireshark

**四、**实验步骤
  1. 在本地Windows上打开Wireshark,选择要抓取的网卡,我们虚拟机使用的是VMnet8,所以这里选择这个网卡。

  1. Wireshark默认是开启流量捕获的,可以看到在我们没有使用虚拟机的时候,其实也是有数据交互的,这是由于系统服务本身的特点决定的,比如最上面的两条数据是NTP协议数据,这个协议对应的是NTP服务,是用来同步系统时间的,所以系统会定时向NTP服务器发送数据包。


3. 打开centos7虚拟机,确保虚拟机可以上网

  1. 为了使用方便,我们可以使用远程连接工具连接虚拟机,这里使用的使用SecureCRT

  1. 准备一个下载连接,这里我们下载阿里云的centos7yum文件,文件比较小,下载起来方便,需要使用wget命令,没有这个命令的需要提前安装以下,下载命令:wgethttp://mirrors.aliyun.com/repo/Centos-7.repo
  2. 清空Wireshark抓取的数据包,因为打开软件之后默认是开启数据包抓取的。

  1. 将下载连接复制并粘贴到虚拟机,开始下载

  1. 将抓取到的数据包保存,方便后续查看

  1. 打开上一步保存的数据包文件

  1. 右键选中其中一条TCP数据包,选择对话过滤,再选择TCP数据,就可以单独查看这一次会话的数据包

  1. 过滤出来的TCP会话数据包

  1. 现在我们对TCP建立连接的数据包进行简单的分析,如图所示,第一条数据由虚拟机发送给服务器,是TCP建立连接的第一次“握手”,首先客户端会开启请求(SYN)控制位,向服务器发送SYN包,SYN是Synchronization同步的意思,SYN包的目的是请求与服务器进行数据同步,并携带随机的Seq(序号)一同发送给服务器。


同时我们可以看一下标志位,SYN=1,意味着开启同步,在页面找到TransmissionControlProtocol,这其实就是TCP的全称,传输控制协议;然后找到Flags就可以看到标志位的情况。

  1. 我们接着看本次连接的第二条数据包,也就是TCP建立连接的第二次“握手”,是由服务器发送给虚拟机的,服务器会开启SYN和ACK控制位,向客户端发送了SYN包和ACK包;SYN包的意思上面说过了,就是请求同步的作用,ACK是Acknowledgement确认的意思,表示服务器确认与客户端同步数据;然后我们看一下序号和确认号,这条数据包的序号是0,确认号是1,序号是随机的,但确认号不是,这里的确认号是上一条数据包的序号加1,也就是ACK=0+1,因为第一次“握手”时客户端向服务器发送的数据包中Seq(序号)是0,所以这里的ACK就是0+1。

这里有个问题,为什么要有序号的存在,答案是为了保证通道的唯一性,因为应用程序可能会发送多个序号给服务器,序号的存在可以让服务器精准的找到客户端发过来的请求同步信息,后续服务器拿到序号之后也是有用的,服务器向客户端发送SYN包和ACK包,会把这个序号加1,作为ACK(确认号)发给客户端,这样客户端才知道这条数据包是服务器请求同步的报文。

我们再看看第二次“握手”的标志位情况,这里服务器向客户群发送了SYN包和ACK包,标志位应该是SYN=1,ACK=1。

  1. 我们接着看TCP建立连接的第三次“握手”,是由客户端发送给服务器的,发送的是ACK包,表示确认同步的意思,这里客户端会将第二次“握手”时服务器发过来的确认号(ACK)作为第三次“握手”的序号,也就是1;将第二次“握手”时服务器发过来的序号(Seq)加1作为确认号,也就是1,一同发送给服务器,表示确认同步数据,TCP通道建立成功。


同样来看看标志位的情况,这次时ACK为1,表示开启确认的报文。

  1. TCP成功建立连接之后做什么呢?说明应用层可以使用这个TCP通道传输数据了,这个应用层协议我们后面再讲。
  2. 现在我们来看一下TCP关闭连接的过程,客户端和服务端都能主动发起关闭请求,我们这次实验是由客户端主动发起的关闭请求,这个时候客户端会在报文中开启FIN和ACK两个控制位,FIN就是Finish结束的意思,这里也就是确认要结束会话的意思,由于序号和确认号在HTTP传输过程被不同的叠加,这里客户端发送给服务器的请求结束会话的序号变成了135,ACK编号为3206;这是TCP关闭连接的第一次挥手。


看一下标志位的情况,ACK(确认)和FIN(完成)处于开启状态。

  1. TCP关闭连接的第二次挥手,由服务器发送给客户端,服务器收到客户端的关闭连接请求,然后服务端发送一个ACk报文,确认收到了客户端的请求,序号(Seq)使用的是第一次“挥手”时发过来的确认号,也就是Seq=3206,确认号为第一次“挥手”时发过来的序号加1,也就是135+1=136。这个时候连接还没有断开,我们继看第三次“挥手”。


看一下第二次“挥手”的标志位情况,确认位为开启状态。

  1. TCP关闭连接的第三次“挥手”,由服务器发送给客户端,第二次“挥手”只确认了客户端已经没有数据需要同步了,但服务端可能还有需要发送给客户端的数据,所以,服务端也需要向客户端确认没有数据需要发送了;即第三次“挥手”是服务端向客户端确认,自己也没有数据需要发送了,在服务端确认收到客户端的关闭连接请求之后,会给客户端发送结束请求。报文内容为FIN包和ACK包来进行最后的确认,此时序号和确认号不变,因为没有交互,只是多了一个控制位。


看一下第三次“挥手”的标志位情况,确认位和结束位开启。

  1. TCP关闭连接第四次“挥手”,客户端收到了服务器最终的结束确认会发送ACK包来进行确认,此时自己的序号需要用对方的确认号,自己的确认号为对方序号加1,也就是3206+1=3207。四次“挥手”完成,TCP连接关闭。


看一下第四次“挥手”的标志位情况,此时只有确认位开启。

五、实验总结

通过本实验,学习了TCP/IP协议的应用,并通过抓取TCP/IP数据报文,深入了解了TCP连接和断开的过程。在分析TCP报文头部的过程中,加深了对TCP协议基本概念和报文结构的理解。重点探讨了TCP连接建立过程中的三次握手和连接释放过程中的四次挥手,从中了解了TCP连接的建立与断开的细节。通过使用Wireshark工具,掌握了TCP协议分析技术,为进一步深入研究网络通信提供了基础。这个实验有助于加深对TCP/IP协议栈的理解,提高了对网络通信的认识和技能。

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

告别冗长代码:Java Lambda 表达式如何简化你的编程

在现代软件开发中,高效和简洁的代码变得越来越重要。Java作为一门成熟而广泛使用的编程语言,一直在不断进化,以满足开发者的需求。Java 8的推出标志着一次重要的飞跃,其中最引人注目的特性之一便是Lambda表达式。 Lambda表达式为J…

网络协议三

数据中心 一、DNS 现在网站的数目非常多,常用的网站就有二三十个,如果全部用 IP 地址进行访问,恐怕很难记住 根 DNS 服务器 :返回顶级域 DNS 服务器的 IP 地址 顶级域 DNS 服务器:返回权威 DNS 服务器的 IP 地址 …

60V大功率半桥GaN半桥驱动器替代LMG1210

1. 产品特性(替代LMG1210) ➢ 工作频率高达 10MHz ➢ 20ns 典型传播延迟 ➢ 5ns 高侧/低侧匹配 ➢ 两种输入控制模式 ➢ 具有可调死区时间的单个 PWM 输入、 独立输入模式 ➢ 1.5A 峰值拉电流和 3A 峰值灌电流 ➢ 内置 5V LDO ➢ 欠压保护 ➢ 过…

前端怎么预览pdf

1.背景 后台返回了一个在线的pdf地址,需要我这边去做一个pdf的预览(需求1),并且支持配置是否可以下载(需求2),需要在当前页就能预览(需求3)。之前我写过一篇预览pdf的文…

人工智能智能体的五大能力等级:从工具到超人

在人工智能(AI)的世界中,智能体的性能和能力可以被划分为不同的等级。这些等级从简单的工具到超越人类能力的超人智能体。本文将探讨AI智能体的五个能力等级,以及每个等级的关键技术、性能、能力和使用场景。 等级 0:无AI的基础工具 在这个阶段,我们没有真正的AI,只有…

目标检测——铁轨表面裂纹数据集

引言 亲爱的读者们,您是否在寻找某个特定的数据集,用于研究或项目实践?欢迎您在评论区留言,或者通过公众号私信告诉我,您想要的数据集的类型主题。小编会竭尽全力为您寻找,并在找到后第一时间与您分享。 …

【数据结构】——线性表(顺序表)——内有代码详解

目录 一、引言 二、线性表 2.1 定义 2.2 特点 三、顺序表 3.1 顺序表的概念 3.2 顺序表的特点 3.3 顺序表的定义 3.3.1 静态定义 3.3.2 动态定义 3.4 顺序表的初始化 3.4.1 静态初始化 3.4.2 动态初始化 3.5 顺序表的销毁 3.6 顺序表元素的打印 3.7 顺序表的插入…

眼精星票据识别系统,助您快速识别票据

有没有遇到过这样的情况:手头一堆票据、证件和卡片,看着就头疼,更别提一一整理成数据了。说真的,这简直就是个无尽的噩梦!好在,现在有了眼精星票证识别系统,一切都变得轻松起来。记得上次&#…

Android 动态修改APP图标

文章目录 Android 动态修改APP图标定义activity-alias修改图标和App名监听APP前后台状态切换进入后台时切换修改图标和名字缺点 Android 动态修改APP图标 修改前: 修改后: 定义activity-alias 在 AndroidManifest.xml 中设置 activity-alias&#xff1…

python类与面向对象编程

⚠️⚠️⚠️本章后半部分难度激增,请一定认真学习⚠️⚠️⚠️ ⚠️⚠️⚠️本章后半部分难度激增,请一定认真学习⚠️⚠️⚠️ ⚠️⚠️⚠️本章后半部分难度激增,请一定认真学习⚠️⚠️⚠️ 上篇回顾: 上篇我们帮天下第一…

基于STM32开发的智能水族箱管理系统

目录 引言环境准备智能水族箱管理系统基础代码实现:实现智能水族箱管理系统 4.1 温度传感器数据读取4.2 水泵与加热器控制4.3 水位传感器数据读取4.4 用户界面与显示应用场景:水族箱管理与优化问题解决方案与优化收尾与总结 1. 引言 智能水族箱管理系…

从0到1实现一个自己的大模型,实践中了解模型流程细节

前言 最近看了很多大模型,也使用了很多大模型。对于大模型理论似乎很了解,但是好像又缺点什么,思来想去决定自己动手实现一个 toy 级别的模型,在实践中加深对大语言模型的理解。 在这个系列的文章中,我将通过亲手实践…

【OPENMV】学习记录 (持续更新)

一、基础知识 1 设置彩色/黑白: sensor.set_pixformat() 设置像素模式。 sensor.GRAYSCALE: 灰度,每个像素8bit。sensor.RGB565: 彩色,每个像素16bit。 2 设置图像大小: sensor.set_framesize() 设置图像的大小 sen…

day51 动态规划 121. 买卖股票的最佳时机 122.买卖股票的最佳时机II

121. 买卖股票的最佳时机 动态规划 1.确定dp数组(dp table)以及下标的含义 dp[i][0] 表示第i天持有股票所得最多现金 ,这里可能有同学疑惑,本题中只能买卖一次,持有股票之后哪还有现金呢? 其实一开始现…

解密智慧校园解决方案:赋能数字化教育的未来

在当今数字化时代,智慧校园解决方案正以惊人的速度改变着教育界的面貌。随着科技的快速发展,数字化教育已经逐渐成为现代教育的核心。智慧校园解决方案作为一个集技术、教育和创新于一体的综合性项目,为学校提供了许多机遇和挑战。本文将揭示…

期望18K,4年前端Cvte 视源股份一面挂

一面 1、自我介绍?毕业的时候一直在 xx 公司,你基本都在做什么项目? 2、你讲一下你主要负责哪一块的?balabala 3、你们的 json 是怎么定义组件间的联动的? 4、怎么确定区分两个 input? 5、你们是怎么触…

Vue3入门 - vue3相比于vue2的优点,及如何创建Vue3项目

目录 一、认识Vue3 1. Vue2 选项式 API vs Vue3 组合式API 2. Vue3的优势 二、使用create-vue搭建Vue3项目 1. 认识create-vue 2. 使用create-vue创建项目 3.熟悉项目和关键文件 一、认识Vue3 1. Vue2 选项式 API vs Vue3 组合式API <script>export default …

文章解读与仿真程序复现思路——电力系统自动化EI\CSCD\北大核心《考虑发用电相似性的海上风电中长期双边协商交易优化决策模型》

本专栏栏目提供文章与程序复现思路&#xff0c;具体已有的论文与论文源程序可翻阅本博主免费的专栏栏目《论文与完整程序》 论文与完整源程序_电网论文源程序的博客-CSDN博客https://blog.csdn.net/liang674027206/category_12531414.html 电网论文源程序-CSDN博客电网论文源…

【CV算法工程师必看】作为一个图像算法工程师,需要会什么,要学哪些技术栈?

作为一个图像算法工程师,除了基本的编程技能和理论知识,还需要掌握一系列的技术栈。以下是详细的技能和技术栈分类: 编程语言 Python: 主要用于快速开发和原型设计。常用库:OpenCV、Pillow、NumPy、SciPy、Scikit-image、TensorFlow、PyTorch。C++: 高性能要求的项目中广…

使用Ollama+OpenWebUI部署和使用Phi-3微软AI大模型完整指南

&#x1f3e1;作者主页&#xff1a; 点击&#xff01; &#x1f916;AI大模型部署与应用专栏&#xff1a;点击&#xff01; ⏰️创作时间&#xff1a;2024年6月6日23点50分 &#x1f004;️文章质量&#xff1a;96分 欢迎来到Phi-3模型的奇妙世界&#xff01;Phi-3是由微软…