分析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)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 如何利用matlab做BP神经网络分析(包括利用matlab神经网络工具箱)「建议收藏」

    利用MATLAB进行BP神经网络的预测(含有神经网络工具箱)最近一段时间在研究如何利用预测其销量个数,在网上搜索了一下,发现了很多模型来预测,比如利用回归模型、时间序列模型,GM(1,1)模型,可是自己在结合实际的工作内容,发现这几种模型预测的精度不是很高,于是再在网上进行搜索,发现神经网络模型可以来预测,并且有很多是结合时间序列或者SVM(支持向量机)等组合模型来进…

    2022年4月11日
    58
  • 实例分割简述_图像实例分割

    实例分割简述_图像实例分割针对图像目标我们可以利用目标检测算法将其框出来也可以利用语义分割算法将属于猫的像素标记出来存在的弊端:1、目标检测可以区分个体但不够准确2、语义分割可以划分像素但不可以区分个体实例分割0、实例分割可以解决以上问题1、利用先验框获得建议框2、利用建议框获得预测框3、利用预测框获得语义分割结果…

    2022年8月23日
    7
  • centos7.4安装docker_docker打包python应用

    centos7.4安装docker_docker打包python应用前言当我们在一台电脑上搭建了python3.6的环境,下次换台电脑,又得重新搭建一次,设置环境变量等操作。好不容易安装好,一会提示pip不是内部或外部命令,一会又提示pip:commandno

    2022年8月6日
    8
  • 局域网ping传输失败常见故障_局域网ping不通对方电脑的地址

    局域网ping传输失败常见故障_局域网ping不通对方电脑的地址本文介绍利用ping命令回显来解决网络故障的方法,分别介绍常见的目标主机不可达和ping出现timeout的可能性和解决方法,案例。分为同网段和跨网段两种情况进行列举。涉及网络知识,wireshark的使用技巧,都是本人在几年维护网络中遇到问题的总结,基本涵盖常见故障。有错误的地方,请大家指正讨论。…

    2022年10月19日
    12
  • Eureka集群配置

    Eureka集群配置eureka作为注册中心,生产环境必须多节点部署,保证其高可用性。现以两台服务器来完成集群部署。服务器A:172.16.21.34服务器B:172.16.21.35方式一:使用ip形式完成。服务器A:172.16.21.34server:port:7777spring:application:name:register#指定eureka客户端的登录账户security:user:…

    2022年5月1日
    45
  • 如何学习PLC编程「建议收藏」

    如何学习PLC编程「建议收藏」plc是工业常用的自动化产品可编程控制器,它就相当于人类的大脑控制其他的器官,可编程控制器说白了就是个CPU,带几个模块,模块功能主要是,模拟量输入输出,数字量输入输出,其他功能计数模块。PLC在工业领域里扮演着重要的角色,作为一家企业或者个人应如何学习PLC呢?1.有一定的电工基础,掌握传感器、接近开关、编马器、气动元件等常用器件的使用及继电器控制原理。2.再学数制及数制转换,掌握二进制、八进制、十六进制、BCD码、ASCI码的概念。3.选择你所在地区流型的PLC品牌做为学习的机种,学会后可以更

    2022年10月19日
    3

发表回复

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

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