第5次实验:ICMP

目的:
要看ICMP(互联网控制信息协议)是如何使用的。ICMP是IP的一个配套协议,通过处理各种错误和测试情况,帮助IP执行其功能。通过处理各种错误和测试情况来帮助IP执行其功能。它在第5.6.4节中有介绍。文中有涉及。在做这个实验之前,先复习一下这一部分。
环境:
WireShark;tracert;ping

实验报告正文

实验过程

ping命令测试

ping baidu.com

请添加图片描述

tracetr追踪

tracert baidu.com

请添加图片描述

WireShark开始捕获

使用icmp过滤,同时开启Resolve network names,重复上述1、2步骤,结果如下

请添加图片描述

各字段描述如下:

请添加图片描述

Type表示消息类型,request为8,reply为0;Checksum为校验和表示校验码;Sequence Number用于链接数据报,连续的request和reply包会增加1;Data为数据部分,长度可变

查看TTL超时的包

WireShark中用黑色标识

请添加图片描述

TTL超时包的结构图

TypeCodeChecksumUnusedIPICMP
1 Byte1 Byte2 Byte4 Byte20 Byte8 Byte

IP结构参见实验4

实验结果

ICMP 回显请求和回显应答数据包的 Type/Code 值分别是什么

请求包Type/Code为0x0800;应答包为0x0000

如何比较一个回显请求的标识符和序列号和对应的回声回复

一个请求包对应的应答包的Seq相同

Identifier 和 Sequence Number 如何比较连续的 echo request 数据包

连续的请求应答包在Sequence Number会增加1

echo reply中的数据和echo request中的数据是一样的还是不同的

相同

ICMP TTL超出数据报的类型/代码值

Type: 11 (Time-to-live exceeded)

说明如果接收者不提前知道期 ICMP 消息的结构,如何安全地找到并处理所有 ICMP 字段。

ICMP在沟通之中,主要是透过不同的类别(Type)与代码(Code)让机器来识别不同的连线状况,从而对应不同的ICMP消息格式。

超时数据包的ICMP头长度

请添加图片描述

如图所示,8Byte

ICMP 有效载荷包含一个 IP 报头。 此标头中的 TTL 值是多少

请添加图片描述

TTL=1。数据包每经过一个路由器TTL将会减1,当TTL为0时将丢弃这个包。所以此时TTL=1的包经过处理后TTl将变为0,路由器将会丢弃此IP包并向IP包的发送者发送 ICMP time exceeded消息。

计算机(源)如何从一个TTL超出的数据包中学习沿路径的路由器的IP地址

TTL超时包的负载部分的IP报头里面有两端的路由器IP地址。

  1. 从源地址发出一个ICMP请求回显(ICMP Echo Request)数据包到目的地址,并将TTL设置为1;
  2. 到达路由器时,将TTL减1;
  3. 当TTL变为0时,包被丢弃,路由器向源地址发回一个ICMP超时通知(ICMP Time Exceeded Message),内含发送IP包的源地址,IP包的所有内容及路由器的IP地址;
  4. 当源地址收到该ICMP包时,显示这一跳路由信息;
  5. 重复1~5,并每次设置TTL加1;
  6. 直至目标地址收到探测数据包,并返回ICMP回应答复(ICMP Echo Reply);
  7. 当源地址收到ICMP Echo Reply包时停止tracert

沿着traceroute探测的路径,每个路由器要探测多少次

Traceroute每跳默认发送3个探测包。

计算机(源)是如何发送一个请求包来寻找(通过触发TTL超时响应)路由器N沿着路径跳转到目的地的

请添加图片描述
请添加图片描述
请添加图片描述

如图,源地址172.23.151.28向目的地址39.156.66.10发送ICMP请求回显(ICMP Echo Request)数据包,每跳默认发送3个,TTL设置为1;数据包遇到路由器之后,被丢弃,返回Time tolive exceeded超时通知,解析出路由器IP地址172.19.251.13。源地址再发数据包,设置TTL=2,从而解析出第二跳路由172.16.201.66。同理,解析出后续路由ip。

实验反思

通过本次实验,我深入了解了ICMP(互联网控制信息协议)的使用方法。ICMP作为IP的一个配套协议,在处理错误和测试情况时起到了重要的作用,帮助IP执行其功能。在实验过程中,我使用了ping命令测试和tracert命令追踪,并使用WireShark进行捕获和分析。通过分析捕获的数据包,我了解了ICMP数据包的结构和各字段的含义,包括Type、Code、Checksum、Sequence Number和Data等。我还学会了如何比较回显请求的标识符和序列号以及对应的回声回复,以及如何比较连续的echo request数据包。此外,我还了解了ICMP TTL超出数据报的类型/代码值和超时数据包的ICMP头长度,以及如何安全地处理所有ICMP字段。最后,我学会了通过TTL超时数据包来学习沿路径的路由器的IP地址,并了解了traceroute探测的路径和每个路由器要探测的次数。通过本次实验,我加深了对ICMP协议的理解,提高了实验操作和数据分析的能力。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

vue 中国省市区级联数据 三级联动

vue 中国省市区级联数据 三级联动 安装插件 npm install element-china-area-data5.0.2 -S 当前版本以测试,可用。组件中使用了 element-ui, https://element.eleme.cn/#/zh-CN/component/installation 库 请注意安装。插件文档 https://www.npmjs.com/package/ele…

【CANoe】CANoe中使用RS232

文章目录 1、CANoe中自带示例2、示例讲解2.1CANoe自带Port A和Port B通讯2.2CANoe自带Port A和串口助手通讯 1、CANoe中自带示例 我使用的事CANoe12,RS232路径如下: C:\Users\Public\Documents\Vector\CANoe\Sample Configurations 12.0.75\IO_HIL\RS23…

如何安全运行别人上传的Python代码?

写后端的同学,有时候需要在网站上实现一个功能,让用户上传或者编写自己的Python代码。后端再运行这些代码。 涉及到用户自己上传代码,我们第一个想到的问题,就是如何避免用户编写危险命令。如果用户的代码里面涉及到下面两行&…

人工智能联盟的首件神兵利器——“Purple Llama” 项目,旨为保护工智能模型安全性

Meta公司(Meta Platform Inc),原名Facebook,创立于2004年2月4日,市值5321.71亿美元。总部位于美国加利福尼亚州门洛帕克。 Meta 公司推出了名为“Purple Llama”的项目,旨在保护和加固其开源人工智能模型。…

部署Nextcloud详细步骤及优化方法

一、安装PHP8.0以上 我这里使用PHP8.0.30 [rootlocalhost ~]# php -v PHP 8.0.30 (cli) (built: Aug 3 2023 17:13:08) ( NTS gcc x86_64 ) Copyright (c) The PHP Group Zend Engine v4.0.30, Copyright (c) Zend Technologies [rootlocalhost ~]# 安装方法参考 二、安装MY…

安卓版pytCharm怎么启动,安卓版手游免费下载

大家好,给大家分享一下安卓版python编辑器安装tkinter,很多人还不知道这一点。下面详细解释一下。现在让我们来看看! 我的GitHub 是的,Python 代码可以在 Android 平台上运行,尽管这并不是 Python 传统上最常用的运行环…

正则表达式(6):分组与后向引用

正则表达式(6):分组与后向引用 总结 本博文转载自 在本博客中,”正则表达式”为一系列文章,如果你想要从头学习怎样在Linux中使用正则,可以参考此系列文章,直达链接如下: 在Linux中…

【Stm32-F407】Keil uVision5 下新建工程

①双击鼠标左键打开Keil uVision5,选择 Project 下的 New uVision Project ; ②在期望的文件夹下创建一个工程,并按如下要求操作; ③添加文件类型,按如下要求操作 ④如有需要可添加相关启动文件在工程文件夹下并添加到…

RNN介绍及Pytorch源码解析

介绍一下RNN模型的结构以及源码,用作自己复习的材料。 RNN模型所对应的源码在:\PyTorch\Lib\site-packages\torch\nn\modules\RNN.py文件中。 RNN的模型图如下: 源码注释中写道,RNN的数学公式: 表示在时刻的隐藏状态…

渗透测试框架——Cobalt Strike

渗透测试框架——Cobalt Strike Cobalt Strike是一款非常成熟的渗透测试框架。Cobalt Strike在3.0版本之前是基于Metasploit框架工作的,可以使用Metasploit的漏洞库。从3.0版本开始,Cobalt Strike不再使用Metasploit的漏洞库,成为一个独立的…

每日好题:原来你也玩三国杀(DP动态规划)

I - 原来你也玩三国杀 Description 小 Q 最近听说 “很多” acmer 都爱上了一款游戏《三国杀》。因为小 Q 是一个初学者,所以想自己先偷偷学习一下,然后惊艳所有人。但又因为小 Q 不屑于使用一般的武将,因为他觉得唯有操作型武将才能显得自…

性能监控软件:优化系统运行的得力助手

随着科技的飞速发展,企业和组织对于其信息技术基础设施的性能要求也愈发提高。为了确保系统能够高效稳定地运行,性能监控软件成为不可或缺的工具。本文将探讨性能监控软件的主要作用,以及它们在提升系统性能和稳定性方面的关键作用。 1. 实时…

学习MS Dynamics AX 2012编程开发 1. 了解Dynamics AX 2012

在本章中,您将了解开发环境的结构以及Microsoft Dynamics AX中的开发人员可以访问哪些工具。在本书的第一步演练之后,您将很容易理解著名的Hello World代码,您将知道应用程序对象树中的不同节点代表什么。 以下是您将在本章中学习的一些主题…

10、ble_mesh_node服务节点示例

1。手机APP选择名字,点击provisioner App keys,识别,配网。 2。初始化流程, board_init()初始化IO,初始化存储, bluetooth_init()蓝牙初始化,ble_mesh_get_dev_uuid(dev_uuid)蓝牙组网初始化, 3、蓝牙组网初…

MyBatis缓存机制流程分析

前言 在进行分析之前,建议快速浏览之前写的理解MyBatis原理、思想,这样更容易阅读、理解本篇内容。 验证一级缓存 MyBatis的缓存有两级,一级缓存默认开启,二级缓存需要手动开启。 重复读取跑缓存 可以看到,第二次…

[MySQL] MySQL中的索引

文章目录 一、初识索引 1、1 索引的概念 1、2 索引案例 二、认识磁盘 2、1 磁盘结构 2、2 操作系统与磁盘的数据交互 2、3 磁盘随机访问与连续访问 2、4 MySQL与磁盘的数据交互 三、索引的理解 3、1 建立测试表 3、2 为何MySQL与磁盘IO交互是 Page 3、3 理解Page 3、3、1 页目录…

【WSL】Windows下的Linux子系统使用方法指南

▒ 目录 ▒ 🛫 导读需求开发环境 1️⃣ WSL安装启用或关闭windows功能安装分发命令行启动Linux 2️⃣ WSL 的基本命令显示帮助列出可用的 Linux 发行版列出已安装的 Linux 发行版检查 WSL 版本更新 WSL通过 PowerShell 或 CMD 运行特定的 Linux 发行版关闭WSL全部服…

Centos7防火墙及端口开启

1、防火墙 1.1、查看防火墙是否开启 systemctl status firewalld 1.2、开启防火墙 firewall-cmd --list-ports 1.3、重启防火墙 firewall-cmd --reload 2、端口 2.1、查看所有已开启的端口号 firewall-cmd --list-ports 2.2、手动开启端口 启动防火墙后,默认没有开…

智能优化算法应用:基于共生生物算法3D无线传感器网络(WSN)覆盖优化 - 附代码

智能优化算法应用:基于共生生物算法3D无线传感器网络(WSN)覆盖优化 - 附代码 文章目录 智能优化算法应用:基于共生生物算法3D无线传感器网络(WSN)覆盖优化 - 附代码1.无线传感网络节点模型2.覆盖数学模型及分析3.共生生物算法4.实验参数设定5.算法结果6.…

1、springboot项目运行报错

问题1:获取不到配置文件的参数 我的配置文件获取的参数如下: public class Configures{Value("${configmdm.apk.apkName}")private static String apkName;private void setApkName(String apkName) {Configures.apkName apkName;}private …
最新文章