ARP、ICMP协议的执行原理

电子说

1.3w人已加入

描述

ARP地址解析协议

第一篇中讲到局域网内主机及网关相互通信需要ip地址、mac地址两个核心元素,ip地址在通信前就可以得知(DNS解析),而mac地址如何得到呢,这时就需要ARP协议支持了,ARP全称为:Address Resolution Protocol即地址解析协议,假设主机A需要访问局域网主机B,主机A通过地址解析协议向局域网内部发群体广播,询问主机B的地址信息,被命中主机B确认目标主机IP为自身时会将广播报文中主机A地址信息存入ARP缓存表中(缓存减小访问次数),并向主机A返回自己的mac地址,主机A将主机B返回的地址信息缓存在ARP缓存表中,至此主机A已知主机B的MAC,就可以愉快的开始通信了。发起方需要查询目标MAC地址时都会先去ARP缓存表中查询,未查询到才会发起广播流程,示例如下:

ICMP

熟悉地址解析歇息工作流程之后,看一下协议报文,报文结构示例图如下:

ICMP

根据上述报文结构,通过抓包分解图如下所示:

ICMP

请看下方红框中16进制显示的报文,首先看第1到16字节,前六个字节(ff:ff:ff:ff:ff:ff)表示数据包发送的目标地址为广播地址,局域网内所有主机均需收到,第七到第十二字节(00:2a:6a:f4:7c:41)表示本机mac地址,第十三到二十分别代表帧类型、硬件类型、协议类型、硬件长度、协议长度,第二十一到第二十二字节表示访问类型(指明当前包是请求包还是应答包,对应的值分别是0x0001和0x0002),第二十三到第二十八字节表示发送端地址(00:2a:6a:f4:7c:41),第二十九到第三十二表示发送端IP(10.13.95.253),第三十三到第三十八表示目标地址(ff:ff:ff:ff:ff:ff),第三十九到第四十二为目标IP(10.13.91.166),到这里ARP协议的报文结构就全部分析完成,可知道ARP的执行原理了。

ICMP

ICMP控制报文协议

ICMP协议属于一种控制报文协议,此类信息的显著特征是不会带有用户数据,主要用于在主机与路由器之间传递控制信息,包括报告错误、交换受限控制和状态信息等。当遇到IP数据无法访问目标、IP路由器无法按当前的传输速率转发数据包等情况时,会自动发送ICMP消息。通俗一点理解控制报文协议就是错误发现及错误报告回传机制,因为只有发送端拿到发送过程中的失败原因消息才能针对性的做出处理方案,ICMP的报文结构如下所示:

ICMP

ICMP协议通过IP协议发送,ICMP协议相当于定义一套返回码枚举,不同类型的返回码所带有的返回信息也不相同。根据上述报文结构,通过抓包分解图如下所示:

ICMP

请看下方红框十六进制显示报文内容,前三十四字节表示以太网头部和IP头部此处不做详细解析,从第三十五字节开始属于ICMP的报文体部分,首先第三十五字节表示类型,第三十六字节表示编码,以ping(ping命令就是以ICMP协议实现的)为例,它的类型代码请求报文为8,编码为0(其它类型和编码可以网上搜索参考“类型编码表”,此处不做码表显示),第三十七到第三十八字节表示唯一校验和,第三十九字节到第四十二字节属于不同类型内容不同的扩展报文,抓包中表示ping的唯一标识码和自增序列以保证目标返回值是对应请求报文的,第四十三字节到七十四字节表示ping附带的报文内容,可以通过改变配置报文大小来控制传输数据大小,如图所示实际发送报文即为英文小写字母,这是ICMP的执行原理。

1、Ping

ping命令是以ICMP协议实现的网络工具,主要的作用是检查主机连通性、统计连通时间,若出现超时不能连通:一种可能为目标IP不存在,第二种可能是对方主机屏蔽了ping命令执行,示例截图如图所示:

ICMP

如图所示,展示返回报文的关键字段:

  • 字节=32:即ICMP抓包中的32字节英文小写字母,表示发送报文大小
  • 时间=6毫秒:即目标主机响应时间
  • TTL=51:即发送者设置的数据包在网络中可以存活的跳数

2、Tracert

tracert命令是以ICMP协议实现的网络工具,主要解决网络连通性问题,统计响应耗时时间,路径明细等信息,示例截图如图所示:

ICMP

如图所示,返回报文主要字段:

  • 第一列:表示经历的网络节点,逐一递增
  • 第二列到第四列,三次响应的平均时间
  • 经历的ip信息
打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分