当前位置:首页 > 编程笔记 > 正文
已解决

2.3 - 网络协议 - ICMP协议工作原理,报文格式,抓包实战

来自网友在路上 11048104提问 提问时间:2023-11-08 02:14:50阅读次数: 104

最佳答案 问答题库1048位专家为你答疑解惑

「作者主页」:士别三日wyx
「作者简介」:CSDN top100、阿里云博客专家、华为云享专家、网络安全领域优质创作者
「推荐专栏」:对网络安全感兴趣的小伙伴可以关注专栏《网络安全入门到精通》

ICMP协议

  • 1、ICMP协议工作原理
  • 2、ICMP协议报文格式
  • 3、ICMP协议报文类型
  • 4、ICMP协议抓包分析

ICMP(Internet Control Message Protocol)是「控制报文协议」,是IP协议的一个组成部分,负责在主机和路由器之间「传递控制信息」(不传递用户数据),比如网络通不通,主机是否可达等。

1、ICMP协议工作原理

ICMP的功能是「检错」而不是纠错。

它将出错的报文返回给发送方的设备,发送方根据ICMP报文确定「错误类型」,从而更好的重发错误的数据包。

pingtracert 命令就是利用ICMP协议来实现的

  • ping 127.0.0.1:检查网络连通性,ping的过程就是ICMP协议的工作过程。如果对方禁用了ICMP协议,就会Ping不通,但这并不代表网络不通。
  • tracert 127.0.0.1:路由跟踪,显示数据包到达目标主机经过的设备和消耗时间。

2、ICMP协议报文格式

ICMP是IP协议的一部分,因此,ICMP协议的报文包含在IP数据报的数据部分:
在这里插入图片描述
我们结合数据包解释一下每个字段的作用

在这里插入图片描述

  • Type:类型【4位】,标明ICMP报文的作用及格式。
  • Code:代码【4位】,标明报文的类型。
  • Checksum:校验和【8位】,检验报文是否有误。
  • Identifier:标识符【取决于类型】,确定是否是同一次请求响应。
  • Sequence number:序列号【取决于类型】,表示数据包在传输过程中的顺序。

3、ICMP协议报文类型

ICMP协议主要通过 Type 和 Code 的组合,来表示报文的「类型」。

比如正常的请求响应:发送方 Type=8 的报文,途中没有异常,接收方就返回 Type=0 的报文

在这里插入图片描述

如果端口不可达,接收方就返回 Type=3,Code=3

在这里插入图片描述
常见的ICMP响应类型:

  • 网络连通:Type=0Code=0
  • 网络不可达:Type=3Code=0
  • 主机不可达:Type=3Code=1
  • 协议不可达:Type=3Code=2
  • 端口不可达:Type=3Code=3

完整的ICMP类型:

TYPECODEDescription00Echo Reply——回显应答(Ping应答)30Network Unreachable——网络不可达31Host Unreachable——主机不可达32Protocol Unreachable——协议不可达33Port Unreachable——端口不可达34Fragmentation needed but no frag. bit set——需要进行分片但设置不分片比特35Source routing failed——源站选路失败36Destination network unknown——目的网络未知37Destination host unknown——目的主机未知38Source host isolated (obsolete)——源主机被隔离(作废不用)39Destination network administratively prohibited——目的网络被强制禁止310Destination host administratively prohibited——目的主机被强制禁止311Network unreachable for TOS——由于服务类型TOS,网络不可达312Host unreachable for TOS——由于服务类型TOS,主机不可达313Communication administratively prohibited by filtering——由于过滤,通信被强制禁止314Host precedence violation——主机越权315Precedence cutoff in effect——优先中止生效40Source quench——源端被关闭(基本流控制)50Redirect for network——对网络重定向51Redirect for host——对主机重定向52Redirect for TOS and network——对服务类型和网络重定向53Redirect for TOS and host——对服务类型和主机重定向80Echo request——回显请求(Ping请求)90Router advertisement——路由器通告100Route solicitation——路由器请求110TTL equals 0 during transit——传输期间生存时间为0111TTL equals 0 during reassembly——在数据报组装期间生存时间为0120IP header bad (catchall error)——坏的IP首部(包括各种差错)121Required options missing——缺少必需的选项130Timestamp request (obsolete)——时间戳请求(作废不用)14Timestamp reply (obsolete)——时间戳应答(作废不用)150Information request (obsolete)——信息请求(作废不用)160Information reply (obsolete)——信息应答(作废不用)170Address mask request——地址掩码请求180Address mask reply——地址掩码应答

4、ICMP协议抓包分析

Wireshark开启抓包,cmd 执行 ping 192.168.2.1 -n 1,ping一次我的网关。

在这里插入图片描述

Wireshark 过滤 icmp,第一个是ICMP请求包,第二个是ICMP响应包。

在这里插入图片描述

1)先看第一个包,重点看我圈中的字段:

  • Type=8Code=0,表示这是一个回显请求Echo (ping) request
    在这里插入图片描述
  • Checksum Status = Good,表示校验状态是良好的,报文无误
    在这里插入图片描述

2)再看第二个包,重点看我圈中的字段

  • Type=0Code=0,表示这是一个回显应答Echo (ping) Reply
    在这里插入图片描述
  • Response time只出现ICMP响应包,Ping命令返回的响应时间,就是从这里获取的
    在这里插入图片描述
  • Data表示数据包的大小,Ping命令返回的字节,就是从这里获取的
    在这里插入图片描述

3)IdentifierSequence number 这四个字段用来对应请求和响应的关系。

  • 请求和响应中,这四个字段都是一样的,用来标识这次请求。比如我给你发个1,你给我回个1,我就知道我们俩是同一个请求;如果你给我回个2,我就知道我们不是同一个请求,你是回给别人的,你不是会给我的。

在这里插入图片描述

日常使用,主要看TypeCode 这两个字段,知道ICMP的报文类型即可。

查看全文

99%的人还看了

猜你感兴趣

版权申明

本文"2.3 - 网络协议 - ICMP协议工作原理,报文格式,抓包实战":http://eshow365.cn/6-34952-0.html 内容来自互联网,请自行判断内容的正确性。如有侵权请联系我们,立即删除!