使用WireShark协议分析仪来分析ICMP与FTP协议

2023-11-18

这是网络第2次试验
wireshark分析仪网站. http://www.wireshark.org/

了解ICMP协议

ICMP(Internet Control Message Protocol)网际报文控制协议,是Internet协议族的核心协议之一,它主要用在网络计算机的操作系统中发送出错信息。例如:请求服务不可用,主机不可达。ICMP协议是一种面向无连接的协议,用于传输出错报告控制信息。但是ICMP不是高层协议,而是IP层协议。

ICMP在网络层中的位置:
在这里插入图片描述

ICMP本身是一个网络层协议。但是,它的报文并不是如预期的那样直接传递给数据链路层。实际上,ICMP报文首先 要封装成IP数据报,然后才被传递到下一层:
在这里插入图片描述

在一个IP数据报中,如果协议字段值是1,就表示IP数据是ICMP报文。
ICMP首部格式:
在这里插入图片描述

图中的格式的具体含义——
类型(Type): ICMP信息基于RFC规范的类型分类

代码(Code): ICMP信息基于RFC规范的子类型

检验和(CheckSum):用来保证ICMP数据的头部和数据部分的完整

数据部分:依赖于类型和代码域的部分

完整的ICMP报文类型如下图:
在这里插入图片描述
在这里插入图片描述

了解FTP协议

FTP(File Transfer Protocol,文件传输协议) 是 TCP/IP 协议组中的协议之一。FTP协议包括两个组成部分,其一为FTP服务器,其二为FTP客户端。其中FTP服务器用来存储文件,用户可以使用FTP客户端通过FTP协议访问位于FTP服务器上的资源。在开发网站的时候,通常利用FTP协议把网页或程序传到Web服务器上。此外,由于FTP传输效率非常高,在网络上传输大的文件时,一般也采用该协议。

Wireshark实战

(一)配置过滤器

目的是只获取icmp协议的包,便于分析。
在这里插入图片描述
抓包前使用捕捉过滤器:
在这里插入图片描述
之后启动抓包。

(二)捕获一段PING命令的数据流

ICMP协议因为其ping功能而著名,ping用来检测一个设备主机的可连续性。
如下图,向www.baidu.com发送ping命令:
在这里插入图片描述
在这里插入图片描述
上图为包的简要纲略,每一列分别对应帧编号,发送时间,发送源ip地址,目的地ip地址,协议,长度以及该包报告信息或内容。
可以看到我们抓到了8个ICMP报文,向对方主机询问(request)四次同时接收到四次应答(reply)。

报文内容分析

①选取具体某一帧——此处选择第一帧:Echo(ping)请求包,分析其分组内容。
上面是分组首部的详细信息,下面是以十六制和ASCLL码形式展现的分组内容:
在这里插入图片描述
第一行:帧1(1为序号),所抓分组的字节数为74;

第二行:以太网,有限局域网技术,数据链路层,源mac地址为(54:27:1e:5d:12:dc),目标mac地址为(d0:76:e7:05:b8:b0)。

第三行:ipv4协议,是网络层协议,源ip地址为(192.168.1.104);目标ip地址为(111.13.100.91);

第四行:TCP协议,运输层协议。

②逐层分析
第一层(帧首部):
在这里插入图片描述
第二层(数据链路层):
在这里插入图片描述
第三层(网络层):
在这里插入图片描述
第四层(运输层):
在这里插入图片描述

③分析其他包
分析ICMP响应包---------Echo(ping)reply,也就是对应的2帧
在这里插入图片描述
在这里插入图片描述

(三)捕获一段Tracert命令的数据流

①Tracert:路由跟踪实用程序。用于确定IP数据包访问目标所采取的路径,其工作原理是通过向目标发送不同IP生存时间 (TTL) 值的“Internet控制消息协议(ICMP)”回应数据包,跟踪路由诊断程序确定到目标所采取的路由。实际应用中可以使用跟踪路由命令确定数据包在网络上的停止位置。TTL是有效的跃点计数,在必需路径的每个路由器转发数据包之前至少递减一,当TTL递减至0时,路由器将“ICMP超时”的消息发送回源地址。执行tracert命令后,源主机先发送TTL为1的回显数据包,并在随后的每次发送过程中将TTL递增一,直到目标响应或TTL达到最大值,从而确定路由。路由则通过检查中间路由器送回的“ICMP已超时”的信息来确定路由。

②执行Tracert命令
与ping命令类似,先在wireShark中开启抓包,然后在命令行中执行Tracert命令:
在这里插入图片描述
截图中输入命令后第一行显示测试包最大跳数30,防止路由回环;域名解析后ip为111.13.100.91。

③下面14跳,通过百度这些ip地址可查到ip所在地信息,分析大致过程如下:

1行:请求从本机出发(本地局域网某主机)

2-3行:江苏省苏州市 移动 这应该是江苏移动的路由器

6-8行:中国 移动 移动的总路由器

9-11行:北京市 移动位于北京的路由器

14行:北京市 百度,最终成功找到了百度的服务器

(其中4/5、12/13行请求超时,可能是因为网络路径中间件不允许应答该类型报文,但路由通畅或是网络拥堵);

报文内容分析

在这里插入图片描述
上图为包的简要纲略,每一列分别对应帧编号,发送时间,发送源ip地址,目的地ip地址,协议,长度以及该包报告信息或内容。

选取第1帧进行分析:
网络层:
主机发送的第一个包的TTL为1,并在随后的每次发送过程中将TTL递增1。
在这里插入图片描述
运输层:
在这里插入图片描述

(四)使用wireShark分析FTP协议工作过程

过滤条件设置为FTP协议。
在这里插入图片描述

在FTP工作流程中使用控制链接和数据连接两种方式来实现数据传输,下面我们来分析这两种包的详细信息。

分析控制链接的数据

FTP的控制连接用于传送用户名、密码及设置传输方式等控制信息,下面以保存的ftp.pcapng捕获文件为例,分析FTP协议控制连接数据包。
在这里插入图片描述

上图中显示了所有数据包的Info列,在这里可以看到ftp传输的所有信息,因为FTP是明文形式传输数据包的,所有我们在InFo列里能看到登录FTP服务器的用户名、密码和传输文件等。在上图中,登录FTP服务器的用户名为zcliang,密码为********,下载了文件index.html。这里显示的都是成功,如果传输过程中出差的话,会返回相应的应答码。

在捕获的FTP数据包中,USER,PASS,CWD,RETR和STOR等都是控制连接使用的控制命令。这些控制命令在包详细信息中,显示的格式都相同。这里以控制用户信息的命令为例,分析包的详细信息。在ftp.pcapng捕获文件中,捕获的用户信息如下:
在这里插入图片描述
从该界面可以看到登录FTP服务器时,使用的控制命令是USER和PASS。根据这两个命令,可以看到登录的账号为zcliang,密码为********。
这两个包的详细信息如下——
用户名包详细信息:
在这里插入图片描述
从上面的信息中,可以看到该包使用了FTP协议,输入的用户名为zcliang,请求的命令是USER,请求参数为zcliang。

密码包的详细信息:
在这里插入图片描述
从上面的信息中,可以看到输入的密码为******,请求的命令是PASS,请求参数为******。
其余的LIST,CWD等命令此处省略。

分析数据连接的数据

数据连接用于传送文件数据,也就是通过FTP服务器进行上传和下载文件。下面以捕获的文件为例,分析数据连接的数据。
在这里插入图片描述
我们发现前三个FTP报文出现两个关键字PORT和PASV,这是什么呢?百度百科一下:

**PORT(主动)**方式的连接过程是,服务器开放一个端口,通知客户端连接,服务端接受连接,建立一条命令链路。当需要传送数据时,客户端在命令链路上用PORT命令告诉服务器:“我打开了一个1024+的随机端口,你过来连接我”。于是服务器从20端口向客户端的1024+随机端口发送连接请求,建立一条数据链路来传送数据。

**PASV(被动)**方式的连接过程是:客户端向服务器的FTP端口(默认是21)发送连接请求,服务器接受连接,建立一条命令链路。当需要传送数据时,服务器在命令链路上用 PASV命令告诉客户端:“我打开了一个1024+的随机端口,你过来连接我”。于是客户端向服务器的1024+端口发送连接请求,建立一条数据链路来传送数据。

在这里插入图片描述
结合TCP协议的内容来看,这一段交互就是我们像科大的站点发了一个port请求,服务器接受请求顺便告诉我们“port请求我们收到啦,不过建议你们用pasv比较好哦~”,然后我们向服务器发出RETR(retireve)请求下载index.html,于是服务器发来报文,内容就是“我(服务器)开放了一个端口,你可以来连接了”,我们反手就是一个报文回复“连接上啦哈”,于是服务器又发了一个ftp的报文作为回应“我们服务器端用二进制方式来对index.html文件进行数据传输PS.它有13bytes这么大”,并且发来ACK报文建立连接。
在这里插入图片描述这之后,index.html这个文件因为比较小,所以不需要分隔成小文件,直接以ftp-data方式传输过来了,过程中还出现了一下ACK的报文我想应该是重新确认一下连接的作用。
在这里插入图片描述

RETR命令的帧详细信息如下,响应帧在295,但不是一个FTP协议的帧。
在这里插入图片描述

FTP-DATA帧用来向客户端传输数据,详细信息如下:
在这里插入图片描述
可以看到,数据包大小为13字节等信息,还给出了文件中的文本数据:Hello World。

所有ftp-data的报文发完以后,也就是文件传输完成时候,服务器发来报文告诉我们“所有文件都传完啦”,并且直接有扔过来一个ACK报文,我们客户端也反手一个ACK报文,虚晃一枪“大哥谢谢啦,你等等别走我看看还有没需求要找你”,也就是维持会话的意思。
在这里插入图片描述

实验做完了,我们cmd键入quit断开连接,得到回应goodbye。我们看看wireshark那边,是两个ftp包互相告别。
在这里插入图片描述

至此,WireShark协议分析仪的使用告一段落。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用WireShark协议分析仪来分析ICMP与FTP协议 的相关文章

  • Web 服务器可以处理多少个套接字连接?

    假设我要获得共享 虚拟或专用托管 我在某处读到服务器 计算机一次只能处理 64 000 个 TCP 连接 这是真的吗 无论带宽如何 任何类型的托管可以处理多少个 我假设 HTTP 通过 TCP 工作 这是否意味着只有 64 000 个用户可
  • 使用PHP通过FTP递归扫描目录和子目录

    我正在尝试创建目录中所有文件 及其大小 的列表 包括子目录中的所有内容 这些文件位于远程服务器上 所以我的脚本通过 FTP 连接 然后使用以下命令运行递归函数ftp chdir浏览每个目录 如果有其他方法可以做到这一点 我愿意接受建议 fl
  • Wireshark 解剖器 - 如何将 dissectortable:add(pattern, dissector) 与任何模式一起使用?

    我正在为 Wireshark 创建一个自定义解析器 我将我的解剖器添加到解剖器表中 就像这样 udp table DissectorTable get udp port udp table add 7777 my proto 然而 我的解析
  • 如何在java应用程序中检测FIN - tcp标志?

    我在两台计算机之间有持久的 TCP 连接 第二台计算机不受我的控制 第二台计算机可以随时发送FIN标志 并且首先必须关闭当前连接 将FIN标志发送回第二台计算机 我如何知道第二台计算机正在发送 FIN 标志 以及何时必须调用 Java 应用
  • 使用 FtpWebRequest 将文件上传到 FTP 时,远程服务器返回错误:(550)

    I need to upload file via ftp to host The home2 travele2 path created on the root of host 我可以通过 FileZilla 程序将文件上传到主机 但是当
  • 使用 Python 连接从 FTP 检索文件

    我构建了这个简单的工具来暴力破解并连接到 ftp 服务器 import socket import ftplib from ftplib import FTP port 21 ip 192 168 1 108 file1 passwords
  • 通过 FTP over TLS/SSL 连接到未经认证的主机

    我从中获取文件的供应商正在从 FTP 更改为基于 SSL 的 FTP 我正在尝试更新我的代码net ftp to net ftptls 我需要连接的新主机未经认证 我的脚本报告此错误 主机名与服务器证书不匹配 供应商不会修复此问题 看着 u
  • 视频流上的 TCP 与 UDP

    我刚从网络编程考试回来 他们问我们的问题之一是 如果您要传输视频 您会使用 TCP 还是 UDP 请解释一下存储视频和实时视频流 对于这个问题 他们只是希望得到一个简短的答案 TCP 用于存储视频 UDP 用于实时视频 但我在回家的路上想到
  • 为什么 TCP 段中的 SYN 或 FIN 位会占用序列号空间中​​的一个字节?

    我试图理解这种设计背后的基本原理 我浏览了一些 RFC 但没有发现任何明显的东西 这并不是特别微妙 这样 SYN 和 FIN 位本身就可以被确认 因此如果丢失则可以重新发送 例如 如果连接关闭而没有发送更多数据 那么如果 FIN 没有发送任
  • Magento Connect Manager 和 ftp 写入文件权限

    将我的网站从开发域转移到实时域后 我尝试使用 magento 连接管理器安装扩展 但是我不断收到 CONNECT ERROR Please check for sufficient ftp write file permissions Yo
  • 分配 TCP/IP 端口供内部应用程序使用

    我编写了一个由 Windows 服务托管的 WCF 服务 它需要侦听已知的 TCP IP 端口 我可以在什么范围内安全地分配端口供我的组织内使用 该端口将嵌入到服务和使用该服务的客户端的配置文件中 端口 0 1023 是众所周知的端口 由
  • 如果其中一台机器死机,TCP 连接如何终止?

    如果两个主机 A 和 B 之间建立了 TCP 连接 假设主机 A 已向主机 B 发送了 5 个八位字节 然后主机 B 崩溃了 由于未知原因 主机 A 将等待确认 但如果没有收到确认 将重新发送八位字节并减小发送者窗口大小 这将重复几次 直到
  • 如何检查 FTP 目录是否存在

    寻找通过 FTP 检查给定目录的最佳方法 目前我有以下代码 private bool FtpDirectoryExists string directory string username string password try var r
  • 中断 Select 以添加另一个要在 Python 中监视的套接字

    我正在 Windows XP 应用程序中使用 TCP 实现点对点 IPC 我正在使用select and socketPython 2 6 6 中的模块 我有三个 TCP 线程 一个读取线程通常会阻塞select 一个通常等待事件的写入线程
  • 当我使用“control-c”关闭发送对等方的套接字时,为什么接收对等方的套接字不断接收“”

    我是套接字编程的新手 我知道使用 control c 关闭套接字是一个坏习惯 但是为什么在我使用 control c 关闭发送进程后 接收方上的套接字不断接收 在 control c 退出进程后 发送方的套接字不应该关闭吗 谢谢 我知道使用
  • 如何在Linux内核源代码中打印IP地址或MAC地址

    我必须通过修改 Linux 内核源代码来稍微改变 TCP 拥塞控制算法 但为了检查结果是否正确 我需要记录 MAC 或 IP 地址信息 我使用 PRINTK 函数来打印内核消息 但我感觉很难打印出主机的MAC IP地址 printk pM
  • FTP 下载冻结整个应用程序

    我正在尝试从 FTP 服务器下载一个大约 100 MB 的文件 这是一个测试 bin 文件 因为我正在测试该应用程序 我猜我将来想要下载的文件会更重 当我想下载文件时 整个应用程序就会冻结 几秒钟后它就会下载文件 该文件已完成 并且已成功下
  • PowerShell FTP 下载文件和子文件夹

    我喜欢写一个PowerShell脚本来下载全部文件 and 子文件夹从我的 FTP 服务器 我找到了一个脚本来下载一个特定文件夹中的所有文件 但我也喜欢下载子文件夹及其文件 FTP Server Information SET VARIAB
  • 如何保持 Subversion 和远程服务器(通过 FTP)同步?

    我们很难保持 Subversion 和 FTP 同步 有时我们忘记提交更改并只是将它们推送到 Web 服务器 我们的 svn 文件夹分散在整个 Web 服务器中 有些东西存在于一个地方而不存在于另一个地方 等等 今天我想花点时间解决这个问题
  • 谁在 Mac OS X 上监听给定的 TCP 端口?

    在Linux上 我可以使用netstat pntl grep PORT or fuser n tcp PORT找出哪个进程 PID 正在侦听指定的 TCP 端口 如何在 Mac OS X 上获得相同的信息 在 macOS 上Big Sur然

随机推荐

  • FastAPI从入门到实战(4)——路径参数与数值校验

    简单记录路径参数的类型 错误检查 自动填充 数据转换 解析 验证 包括数字大小范围的验证 参数别名 API 交互文档中传参演示等内容 一个伪静态请求 app01 get stu01 parameters def path params01
  • 模拟电子技术

    模电 半导体器件 二极管 1 半导体的基础知识 2 半导体二极管 场效应管三极管及其放大电路 1 绝缘栅型场效应管 MOSFET 2 结型场效应管 JFET 3 场效应管的主要参数 场效应管 放大电路 基本放大电路 差分式放大电路 集成运算
  • vue3 + gzip +nginx 部署 静态文件被识别成text/html的问题

    Failed to load module script Expected a JavaScript module script but the server responded with a MIME type of text html
  • java:面向对象(多态的主板示例)。

    需求 电脑运行实例 电脑运行基于主板 我们写这样一个代码 class MainBoard public void run System out println mainboard run class DuoTaiDemo4 public s
  • 玩转格式转换——.xml->.txt

    一个帅气的boy 你可以叫我 loVe 个人主页 l Ve的个人主页 如果对你有帮助的话希望三连 支持一下博主 VOC数据集转YOLO数据集 1 前言 2 分析xml txt数据 3 转换过程 4 最后结果对比 1 前言 最近学习Yolo
  • 友元成员函数使用时的注意事项

    友元成员函数的注意事项 友元的概念 友元 的概念其实是针对于类的私有成员来说的 一个类的由于封装的缘故 类体中私有成员是不可以被外界访问的 无论是继承也好 都是无法访问类内私有成员的 但是正是有那么一些人 愿意打破陈规破例访问类体内的私有成
  • linux下c/c++开发工具集

    clang llvm组合 lldb debugger 代码补全vim clang complete linux开发花环境 vim eclipse kscope kate kdevelop emacs win虚拟机 source insigh
  • Python excel数据处理之公式---openpyxl

    有些时候excel中直接通过公式进行计算比较方便 这样会比较简洁 并且下面代码也解决了excel读取单元格内容时 通过公式计算的值 为None的问题 咱们废话不多说 直接上代码 import sys import openpyxl from
  • element-ui 通过变量修改默认样式

    项目用的是 element ui vue 项目里有个需求是要修改 element 消息提示组件中 warning 类型的背景色和那个小感叹号的背景色 有两种方式 第一种比较简单 用 F12 找到想要修改的元素 直接覆盖对应样式 但考虑到有时
  • 机械臂控制C语言程序,ROS机械臂开发:MoveIt!编程

    一 编程接口 提供C Python GUI 命令行等接口 move group节点 Python和C 接口示例 MoveIt关注更多的是plan工作 后面的execute需要控制器执行 MoveIt只是监控功能 编程步骤 连接控制需要的规划
  • Qt中LineEdit、TextEdit 、PlainTextEdit三个控件的区别

    Qt中LineEdit TextEdit PlainTextEdit这三个控件区别为 输入格式不同 用途不同 限制行数不同 一 输入格式不同 1 LineEdit LineEdit的输入格式为单行文本输入 2 TextEdit TextEd
  • 亚马逊云aws12个月免费服务器搭建小结 (

    转载自 http blog sina com cn s blog 53a30a3b0101hdx9 html 本文小结了在亚马逊aws Amazon Web Services 云计算服务上注册一个免费的服务器的方法和一些注意事项 郑重申明
  • java中string与json互相转化

    在Java中socket传输数据时 数据类型往往比较难选择 可能要考虑带宽 跨语言 版本的兼容等问题 比较常见的做法有两种 一是把对象包装成JSON字符串传输 二是采用java对象的序列化和反序列化 随着Google工具protoBuf的开
  • 数据结构实验1-顺序表-各种操作

    要求 创建两个顺序表实现两个顺序表的合并以及扩容 以及单个顺序表的查找 插入 删除 排序 清空 销毁 查找前驱以及后继等等 有错会继续改的 以及程序的完备性 健壮性 可读性等等 经过这次实验感觉我写的最多的不是程序而是告诉程序执行者下一步该
  • C语言程序设计(张玉生)第四章课后习题编程(分支结构程序设计)

    1 编写程序 输入一个整数 判断它是奇数还是偶数 并输出判断结果 include
  • [学习笔记] EL 使用EL表达式获得作用域属性

    采用EL表达式 对于属性的访问的隐含访问顺序是 pageContext httpServletRequest HttpSession ServletContext 通过以下实例 来说明 servlet scopeVar java impor
  • ADS系列 - RLC器件滤波器设计教程1

    相关文章 ADS SystemVue 文章集合页 ADS系列 定向耦合器设计教程1 ADS系列 混频器设计 混频器原理介绍及仿真1 ADS系列 低噪声放大器 LNA 模型下载安装及 LNA仿真设计 Keysight的 SystemVue 介
  • Spring+Redis 存入Key Value 乱码前缀

    今天试着在项目中读写redis对象 发现全是乱码 如下图所示 而后在网上找了些资料 才知道是序列化问题 目前已解决谨此记录 以防再犯 ApplicationContext context new ClassPathXmlApplicatio
  • 机房软件管理服务器及系统软件,高校机房软件自动化部署管理系统的设计及实现...

    摘要 随着我国高等学校计算机教育的飞速发展 计算机作为一种重要的信息化工具受到越来越大的重视 计算机在各个学科中也发挥着越来越重要的作用 现在计算机在高校中是公共必修课 而且开设了更多的计算机应用专业课 高等院校计算机机房的规模也越来越大
  • 使用WireShark协议分析仪来分析ICMP与FTP协议

    这是网络第2次试验 wireshark分析仪网站 http www wireshark org 了解ICMP协议 ICMP Internet Control Message Protocol 网际报文控制协议 是Internet协议族的核心