day16、3 - ICMP协议
一、ICMP协议
1.ICMP协议概述
ICMP协议同IP协议,ARP协议属于网络层的协议。IP协议封装的IP包头中的协议号值为1表示是同层的ICMP协议传给IP协议的;协议号值为6表示是上层TCP协议传给IP;协议号值为17表示是上层UDP协议传给IP
误区:ICMP协议属于三层协议,故没有对应的端口号。只有五层协议才有对应的端口号
2.ICMP的作用
- 可以利用ICMP的网络探测和回馈机制,来实现①网络探测,②路由跟踪,③错误反馈
3.ICMP协议的封装格式
- ICMP协议生成的ICMP报文组成部分:ICMP头,数据
4.数据与ICMP头
1)数据
- 数据字段没有任何意义,一般会填充一些字符,比如0000…或者abcdefg…,只表示有内容
2)ICMP头
ICMP头的组成:ICMP类型字段,代码
作用:ICMP头会标识此ICMP报文使用哪一种探测类型或者哪一种回馈类型
代码:代码一般跟前面ICMP类型字段的值一致–无意义;但是如果ICMP类型字段值为3,那么代码则有意义----会告诉你不可达的种类(原因),比如为1或者3或者0等
ICMP类型字段:
值为8:表示此ICMP报文类型为ping请求(利用ICMP探测机制)
比如当我们输入ping命令时,则ICMP类型字段为8,表示此ICMP报文用于ping请求
值为0:表示此ICMP报文的类型为ping应答(利用ICMP回馈机制)
比如当我们ping对方,对方在线回应请求时,对方发送的ICMP报文中ICMP类型字段为0,表示此报文是一个ping应答报文,即对方成功应答
值为3:表示此ICMP报文的类型为目标主机不可达(利用ICMP回馈机制)
ICMP类型字段为3的原因有很多种:
情况一:当帧到达路由表,由于路由器缺少路由表(不完整),无法路由,则会将此帧丢弃,并且回馈给我一个ICMP报文,此报文的ICMP头中类型字段为3,代码也为3表示目标主机不可达
情况二:PC去ping一个不同网段的IP,则PC会先请求网关,但是如果PC没有配置网关,那么屏幕上就会弹出一句话,目标主机不可达
情况三:整个网络中的路由器的路由表都配置完整,且也指网关了,但是现在某个路由器上配置了一个安全过滤策略,相当于一个防火墙,比如会过滤我的IP,那么路由器不会路由我的帧,则此时也会回馈一个ICMP报问,类型字段为3
情况四:我发的帧已经成功到达对方电脑,但是对方电脑拒收:即拒绝ping对方主机。比如我现在想去ping服务器上的80端口,对方电脑可以收到我的帧,但是解封装到四层时,对方电脑四层上有一个防火墙,设置策略----禁止我访问80端口,则会将我的信息丢弃。也会回馈3,表示目标主机不可达
…
值为11:TTL超时(利用ICMP回馈机制)
比如我去ping一台主机,但是网络中出现了回路,一个帧会有TTL值,经过一个路由器就会减一,最后减为0,路由器就会将帧丢弃,这台路由器就要回馈ICMP报文,类型值为11
5.启用ICMP协议误区
- ICMP协议不是只有ping对方,发送与回馈需要使用ICMP协议,ping只是其中能启用ICMP协议的一种方式
- ICMP适用于任何协议,只要帧在网络传输过程中,在某个三层及三层以上的设备处发生错误,这个设备就有义务启用ICMP协议给发送方回馈一个ICMP报文
二、路由跟踪
1.路由跟踪命令
1)windows上的命令
tracert IP地址
2)linux或路由器上的命令
traceroute IP地址
2.路由跟踪原理
如图所示:
说明:
- 当PC1在cmd输入
tracert 40.1.1.1
时,PC会启用ICMP协议生成ICMP报文:ICMP类型字段值为8(即表示ping请求)、代码、数据为一堆填充数据比如abc。然后再经过IP协议,封装IP包头:源IP、目标IP、TTL值先设为1。在传入第四层封装帧头帧尾(ARP过程省略)。最后将帧发送出去 - 当经过r1时,r1会解封装,最后将IP包头中的TTL值改为减一,即为0,那么r1路由器会将此帧丢弃;然后启用ICMP协议,生成ICMP报文:ICMP类型字段值为11(表示TTL超时)、代码、数据。同样通过IP协议封装IP包头:源IP为r1网关IP,目标IP为发送方10.1.1.1。通过四层封装帧头帧尾再将帧回馈给PC1
- PC1收到后再启用ICMP协议生成ICMP报文:ICMP类型字段为8…。再通过IP协议封装IP包头:TTL值改为2…。再发送
- 经过r1将TTL值减一,则TTL值=1。再经过r2,r2将TTL减一变为0。那么r2也会通过ICMP报文:类型值为11。封住成帧后回馈给PC1。
- PC2收到后再启用ICMP,TTL值改为3…
经过不断的发送ping请求ICMP报文,TTL值不断加一,最后收到了来自目标IP40.1.1.1的TTL超时ICMP报文,则结束追踪命令
此时PC1的主机上会显示以下四条记录
- 当PC1在cmd输入
出现错误:
当有一条记录显示三个星号:表示此设备设置了禁止跟踪,但是允许帧通过
如果前面显示了几条记录,但是后面一律不显示了:表示可能从不显示的设备这里开始出现了网络问题
3.跟踪路由结果显示
三、路由跟踪抓包分析
在PC上安装抓包工具:这里使用科来软件来分析。设置好抓取进出PC上的某网卡的数据包
在PC的cmd上输入
tracert 目标IP地址
,然后去科来上查看抓取的包,进行分析选取ICMP协议这几个帧进行分析
可以看到ICMP协议没有对应的端口,因为是一个三层协议,直接生成报文最后封装成帧
此帧由帧头、IP包头、ICMP报文、帧尾构成,所以是ICMP协议的封装格式
选取第一个由本地发帧中的ICMP报文部分:类型为8表示是ping请求,代码为0,数据部分这里以全0填充
再看此帧中的IP包头部分:协议值为1表示此IP协议是从同层的ICMP协议传入的。即此帧为一个ICMP协议生成的
再选取第二个由对方发送的帧的ICMP报文部分:类型为0表示ping应答,代码为0,数据用全0填充
day16、3 - ICMP协议相关推荐
- 4.3.9 ICMP协议
4.3.9 ICMP协议
- 协议森林06 瑞士军刀 (ICMP协议)
作者:Vamei 出处:http://www.cnblogs.com/vamei 严禁任何形式转载. 到现在为止,我们讲解了网络层中最重要的IP协议(参考协议森林).IP协议的一个重要补充是是ICMP ...
- PING的原理以及ICMP协议
主要内容: 1.ping的原理以及工作过程 2.ICMP协议 3.ICMP的应用:ping,traceroute 1.ping的原理以及工作过程 ping的原理 ping 程序是用来探测主机到主机 ...
- linux c icmp协议 判断主机存活
详细参考 <linux c ping 分析实现> https://blog.csdn.net/whatday/article/details/104192608 ICMP(Internet ...
- TCP/IP详解--学习笔记(4)-ICMP协议,ping和Traceroute
1.IMCP协议介绍 前面讲到了,IP协议并不是一个可靠的协议,它不保证数据被送达,那么,自然的,保证数据送达的工作应该由其他的模块来完成.其中一个重要的模块就是ICMP(网络控制报文)协议. 当传送 ...
- 【计算机网络】网络层 : ICMP 协议 ( ICMP 差错报文 | 差错报文分类 | ICMP 询问报文 | ICMP 应用 | Ping | Traceroute )
文章目录 一.ICMP 协议 二.ICMP 协议 简介 三.ICMP 五种差错报告报文 四.ICMP 差错报文形成 五.ICMP 差错报文 不发送 情形 六.ICMP 询问报文 七.ICMP 应用 一 ...
- 4、以太网基础知识——ICMP协议详解
返回总目录 上一篇 下一篇 ICMP协议是一个网络层协议. 一个新搭建好的网络,往往需要先进行一个简单的测试,来验证网络是否畅通:但是IP协议并不提供可靠传输.如果丢包了,IP协议并不能通知传输层是 ...
- ping程序和tracert(traceroute)背后的故事--ICMP协议
为路由器生,为交换机死,为了Ping通奋斗一辈子-----tracert.cn 上面是一个网络工程师的个人定位,很有意思,哈哈!那么我们来看看ping和tracert都是什么吧 PING (Packe ...
- ping 原理与ICMP协议---转
http://blog.csdn.net/inject2006/article/details/2139149 ping 的原理 ping 程序是用来探测主机到主机之间是否可通信,如果不能ping到某 ...
最新文章
- 存储结构分四类:顺序存储、链接存储、索引存储 和 散列存储
- Java_spark简单例子
- windows redis安装与配置
- 阿里云ACE共创空间——MQ消息队列产品测试
- Spring MVC 中的 controller层的方法的返回值类型
- Java实现qq截图工具
- 15张图带你彻底明白spring循环依赖,再也不用怕了
- Nginx - 原理机制
- Arcgis4js实现链家找房的效果
- 阿里云ECS服务器组内网
- NC65 用户密码重置
- App推广都有哪些渠道?一张图片让你全看明白!
- 鸿蒙之下分城如果建设,率土之滨:分城数量不再限制,戍城、金虎台、拜将台让战斗更激烈...
- ftp服务器上传不了文件怎么办,ftp服务器怎么上传不了文件
- 全缓存、行缓存和无缓存
- MySQL中获取当前时间与时间戳
- A Byte of Python3 学习笔记
- Klin、Druid、ClickHouse核心技术对比
- 什么是jQuery[0002]
- 弱酸阳离子树脂去除硫酸锂溶液中的钙镁离子技术
热门文章
- 浅谈室内定位常见的几种运用场景
- Pytorch系列_1
- 面试经历---Samp;G(2016年02月27日上午面试)
- 自适应模糊控制——间接自适应模糊控制
- java计算机毕业设计校园一卡通服务平台源码+mysql数据库+lw文档+系统+调试部署
- JDBC连接Orac报错 Connection refused(DESCRIPTION=(TMP=)(VSNNUM=186646784)(ERR=12505)(ERROR_STACK=(ERROR=(
- C语言之 - 双向链表
- 09情态动词(2):运用
- 编写Java程序_找星座朋友应用软件
- 基于STM32实现孤立词语音识别系统