分析ICMP报文「建议收藏」

分析ICMP报文「建议收藏」目录捕获准备:ICMP的相关知识:报文分析:捕获准备:启动wireshark录制数据包,打开命令行窗口输入pingwww.sina.com.cn。Wireshark已记录下报文,在过滤器输入ip.addr==120.192.83.125过滤报文。ICMP的相关知识:ICMP是(InternetControlMessage…

大家好,又见面了,我是你们的朋友全栈君。

目录

 

捕获准备:

ICMP的相关知识:

报文分析:


 

捕获准备:

启动wireshark录制数据包,打开命令行窗口输入ping www.sina.com.cn

分析ICMP报文「建议收藏」

Wireshark已记录下报文,在过滤器输入 ip.addr == 120.192.83.125过滤报文。

分析ICMP报文「建议收藏」

 

ICMP的相关知识:

 

ICMP是(Internet Control Message Protocol)Internet控制报文协议。它是TCP/IP协议族的一个子协议,用于在IP主机、路由器之间传递控制消息。控制消息是指网络通不通、主机是否可达、路由是否可用等网络本身的消息。这些控制消息虽然并不传输用户数据,但是对于用户数据的传递起着重要的作用。

各种ICMP报文的前32bits都是三个长度固定的字段:type类型字段(8位)、code代码字段(8位)、checksum校验和字段(16位) ,8bits类型和8bits代码字段一起决定了ICMP报文的类型。

类型代码  : 类型描述

  •   0 :   响应应答(ECHO-REPLY)
  •   3 :  不可到达
  •   4 :  源抑制
  •   5 :  重定向
  •   8  :  响应请求(ECHO-REQUEST)
  •   11  :  超时
  •   12  : 参数失灵
  •   13 :   时间戳请求
  •   14 :  时间戳应答
  •   17  :  地址掩码请求
  •   18  :  地址掩码应答
  •   30  : 路由跟踪

 

常见的 type类型字段(8位)、code代码字段(8位) 组合有:

  • 类型0、代码0:回应应答。
  • 类型3、代码0:网络不可达
  • 类型3、代码1:主机不可达
  • 类型5、代码1:为主机重定向数据包
  • 类型8、代码0:回应
  • 类型11、代码0:传输中超出TTL(常说的超时)

 

简单类型分析:

(1)响应请求   

    我们日常使用最多的ping,就是响应请求(Type=8)和应答(Type=0),一台主机向一个节点发送一个Type=8的ICMP报文,如果途中没有异常(例如被路由器丢弃、目标不回应ICMP或传输失败),则目标返回Type=0的ICMP报文,说明这台主机存在,更详细的:tracert通过计算ICMP报文通过的节点来确定主机与目标之间的网络距离。

(2)目标不可到达、源抑制和超时报文

    这三种报文的格式是一样的,目标不可到达报文(Type=3)在路由器或主机不能传递数据报时使用,例如我们要连接对方一个不存在的系统端口(端口号小于1024)时,将返回Type=3、Code=3的ICMP报文,它要告诉我们:“嘿,别连接了,我不在家的!”,常见的不可到达类型还有网络不可到达(Code=0)、主机不可到达(Code=1)、协议不可到达(Code=2)等。源抑制则充当一个控制流量的角色,它通知主机减少数据报流量,由于ICMP没有恢复传输的报文,所以只要停止该报文,主机就会逐渐恢复传输速率。最后,无连接方式网络的问题就是数据报会丢失,或者长时间在网络游荡而找不到目标,或者拥塞导致主机在规定时间内无法重组数据报分段,这时就要触发ICMP超时报文的产生。超时报文的代码域有两种取值:Code=0表示传输超时,Code=1表示重组分段超时。

 

16bits校验和字段: 包括数据在内的整个ICMP数据包的校验和,其计算方法和IP头部校验和的计算方法是一样的。

 

 

报文分析:

  1. PING 响应请求报文

     选取第1条报文分析,右键然后点击”Follow TCP Stream”(跟踪流)。这样做的目的是为了得到与浏览器打开网站相关的数据包,

分析ICMP报文「建议收藏」

分析ICMP报文「建议收藏」

从报文格式中可以看出ICMP协议是TCP/IP协议族的一个子协议。

IP报文格式:

分析ICMP报文「建议收藏」

分析ICMP报文「建议收藏」

IP报文版本号是IPV4,

首部长度:20 bytes,

数据包总长度:60,

标示符:0x53ab,           

标志:0x00,

比特偏移:0x00,

寿命:64,

上层协议:ICMP,

首部校验和:0xd7de,并且是正确的。

源IP地址:172.26.214.223            

目的IP地址:120.192.83.125

 

ICMP报文格式:

分析ICMP报文「建议收藏」

分析ICMP报文「建议收藏」

分析ICMP报文「建议收藏」

类型:8 (回显请求)   代码/编码:0

校验和:0x4716 (正确的校验和)

标示符(大端顺序):1(0x0001);

标示符(小端顺序):256(0x0100);

序列号(大端顺序):1605(0x0645);

序列号(小端顺序):17670(0x4506)。

报文统计和报文具体内容可以用wireshark对应。发现标示符LE与BE都指向二进制报文内容的0x0001,后来在网上搜索是大小端问题,window系统与Linux系统发出的ping报文(主要指ping应用字段而非包含IP头的ping包)的字节顺序不一样(windows为LE:little-endian byte order,Linux为BE:big-endian)。可以看出报文其实就是一些比特流,网络协议就是解释它的东西。

 

分析ICMP报文「建议收藏」

其ICMP Type为8,与知识背景相符,是请求报文。

  1. PING 响应应答报文

     选取第2条报文分析:

分析ICMP报文「建议收藏」

其ICMP Type为0。

分析ICMP报文「建议收藏」

分析ICMP报文「建议收藏」

 

由上两图可以看出分别经历了四次响应请求和响应应答,数据长度为32bytes,符合ping命令行为。

 

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/131235.html原文链接:https://javaforall.net

(0)
上一篇 2022年4月29日 下午4:40
下一篇 2022年4月29日 下午5:00


相关推荐

  • UML之构件图

    UML之构件图构件图的概念构件图用于静态建模,是表示构件类型的组织以及各种构件之间依赖关系的图。构件图通过对构件间依赖关系的描述来估计对系统构件的修改给系统可能带来的影响。 构件图的组成构件图由:构件,接口,实现和依赖四部分组成构件:描述了系统的一个可执行程序,一个库,一个Web程序等.构件是系统中可替换的物理部分,它包装了实现而且遵从并提供一组接口的实现构件的内容(1)规格说明

    2025年6月2日
    4
  • Page.RegisterStartupScript的使用方法

    Page.RegisterStartupScript的使用方法用于后台输出Javascript执行段打开一个新窗口:Page.RegisterStartupScript(“starup”,”<scriptlanguage=’javascript’>window.open(‘”+url+”‘,”,’toolbar=no,resizable=yes,scrollbars=yes’)</script>”)警告…

    2022年7月20日
    20
  • java中的工作流要怎样实现_java工作流开发要怎么实现?

    java中的工作流要怎样实现_java工作流开发要怎么实现?Java工作流的应用在目前十分广泛,能够熟练的实现工作流也是一种本事,本篇文章就让小编带你了解下其中的实现关键。我们知道,工作流的实现主要依靠反射机制,想要实现它,首先我们先来创建一张工作流表创建一张工作流表如:主键|工作流Code|工作流内容其中工作流内容为Json格式工作流内容{“procCode”:”OPS”,”procName”:”c端补齐(乘客信息补全)”,”taskCo…

    2022年7月7日
    34
  • 使用Wappalyzer 分析页面

    使用Wappalyzer 分析页面一个谷歌插件今天同事推荐了我一个谷歌插件 Wappalyzer Wappalyzer 是一款浏览器插件 通过 Wappalyzer 可以识别出网站采用了那种 web 技术 它能够检测出 CMS 和电子商务系统 留言板 javascript 框架 主机面板 分析统计工具和其它的一些 web 系统 Thecompanybe 还能够收集 web 程序的一些信息用于统计分析 揭示出各种 web 系统的使用率即增长情况 实际 Wappalyzer 就是一个指纹识别工具

    2026年3月18日
    2
  • QT断点调试[通俗易懂]

    QT断点调试[通俗易懂]这里写自定义目录标题欢迎使用Markdown编辑器新的改变功能快捷键合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创建一个注脚注释也是必不可少的KaTeX数学公式新的甘特图功能,丰富你的文章UML图表FLowchart流程图导出与导入导出导入欢迎使用Ma…

    2022年5月21日
    685
  • python语言中变量的命名规则是什么_Python中变量的命名规则

    python语言中变量的命名规则是什么_Python中变量的命名规则讲解对象:Python中变量的命名规则作者:融水公子rsgz➢>变量的命名理解Python需要使用标识符给变量命名,其实标识符就是用于给程序中变量、类、方法命名的符号(简单来说,标识符就是合法的名字)。➢>命名要求Pvthon语言的标识符必须以字母、下画线()开头,后面可以跟任意数目的字母、数字和下画线➢>注意此处的字母并不局限于26个英文字母可以包含中文字符、日文字符等…

    2022年5月4日
    63

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号