您当前的位置:首页 > 电脑百科 > 网络技术 > 网络知识

24 张图搞定 ICMP:最常用的网络命令 ping 和 tracert

时间:2022-03-23 09:01:55  来源:  作者:网络小弗
24 张图搞定 ICMP:最常用的网络命令 ping 和 tracert

 

ICMP

IP 是尽力传输的网络协议,提供的数据传输服务是不可靠的、无连接的,不能保证数据包能成功到达目的地。那么问题来了:如何确定数据包成功到达目的地?

24 张图搞定 ICMP:最常用的网络命令 ping 和 tracert

 

这需要一个网络层协议,提供错误检测功能和报告机制功能,于是出现了 ICMP(互联网控制消息协议)。ICMP 的主要功能是,确认 IP 包是否成功送达目的地址通知发送过程中 IP 包被丢弃的原因。有了这些功能,就可以检查网络是否正常、网络配置是否正确、设备是否异常等信息,方便进行网络问题诊断

24 张图搞定 ICMP:最常用的网络命令 ping 和 tracert

 

举个栗子:如果在传输过程中,发生了某个错误,设备便会向源设备返回一条 ICMP 消息,告诉它发生的错误类型。

24 张图搞定 ICMP:最常用的网络命令 ping 和 tracert

 

ICMP 消息是通过 IP 进行传输,但它的目的并不是让 IP 成为一种可靠的协议,而是对传输中发生的问题进行反馈。ICMP 消息的传输同样得不到可靠性保证,也有可能在传输过程中丢失。因此 ICMP 不是传输层的补充,应该把它当做网络层协议

ICMP 消息封装

ICMP 消息使用 IP 来封装,封装格式如下图。

24 张图搞定 ICMP:最常用的网络命令 ping 和 tracert

 

其中 type(类型)字段表示 ICMP 消息的类型,code(代码)字段表示 ICMP 消息的具体含义。例如:type 值为 3 表示目的不可达消息( Destination Unreachable Message ),若 code 值为 0 表示目的网络不可达(.NETwork Unreachable )。常见的 ICMP 消息类型如下图。

24 张图搞定 ICMP:最常用的网络命令 ping 和 tracert

 

从功能上,ICMP 的消息可分为两类:一类是通知出错原因的错误消息,另一类是用于诊断的查询消息

24 张图搞定 ICMP:最常用的网络命令 ping 和 tracert

 

常见的 ICMP 消息类型

  • 回送请求消息( Echo Request ):是由源设备(主机或路由器等)向一个指定的目的设备发出的请求。这种消息用来测试目的地是否可达。
  • 回送响应消息( Echo Reply ):对 Echo Request 的响应。目的设备发送 Echo Reply 来响应收到的 Echo Request 。最常用的 ping 命令就是使用 Echo Request 和 Echo Reply 来实现的。
24 张图搞定 ICMP:最常用的网络命令 ping 和 tracert

 

  • 目的不可达( Destination Unreachable ):路由器无法将 IP 包发送给目的地址时,会给源设备返回一个 Destination Unreachable 消息,并在消息中显示不可达的具体原因。
  •  
  • 实际情况下,经常会遇到的错误代码是 1 ,表示主机不可达,它是指路由表中没有目的设备的信息,或目的设备没有连接到网络。
24 张图搞定 ICMP:最常用的网络命令 ping 和 tracert

 

  • 参数问题( Parameter Problem ):路由器发现 IP 包头出现错误或非法值后,向源设备发送一个 Parameter Problem 消息。这个消息包含有问题的 IP 头,或错误字段的提示信息。
24 张图搞定 ICMP:最常用的网络命令 ping 和 tracert

 

  • 重定向( Redirect ):如果路由器发现一条更优的路径发送数据,那么它就会返回一个 Redirect 消息给主机。这个消息包含了最合适的路由信息和源数据。
  • 实际情况下,这种 Redirect 消息会引发路由问题,所以不进行这种设置。比如:路由器的路由表不准确时,ICMP 有可能就无法正常工作。
24 张图搞定 ICMP:最常用的网络命令 ping 和 tracert

 

  • 超时( Time Exceeded ):IP 包中有一个字段是 TTL(生存周期),它的值每经过一次路由器就减 1 ,直到减到 0 时 IP 包会被丢弃。这时,路由器会发送一个 Time Exceeded 消息给源设备,并通知 IP 包已被丢弃。
  • 设置 TTL 的主要目的,是当路由发生环路时,避免 IP 包无休止的在网络上转发。还可以用 TTL 控制 IP 包的可达范围,比如设置一个较小的 TTL 值。
24 张图搞定 ICMP:最常用的网络命令 ping 和 tracert

 

  • 时间戳请求/时间戳响应( Timestamp Request / Timestamp Reply ):时间戳可以记录 ICMP 消息一次往返所需的时间。源设备发送一个带有发送时间的 Timestamp Request 消息,目的设备收到后,发送一个带有原设备发送时间、目的设备接收时间以及目的设备发送时间的 Timestamp Reply 消息。源设备收到 Timestamp Reply 时,并同时记录到达时间。这些时间戳可以估计网络上的传输时间。
24 张图搞定 ICMP:最常用的网络命令 ping 和 tracert

 

ICMP 的应用

ICMP 被广泛应用于网络测试,最常用的 ping 和 tracert 网络测试工具,都是使用 ICMP 协议实现的。

ping

ping 是 ICMP 最著名的一个应用,通过 ping 可以测试网络的可达性,即网络上的报文能否成功到达目的地。使用 ping 命令时,源设备向目的设备发送 Echo request 消息,目的地址是目的设备的 IP 地址。目的设备收到 Echo request 消息后,向源设备回应一个 Echo reply 消息,可知目的设备是可达的。也可以通过 ping 命令来判断目标主机是否启用。

24 张图搞定 ICMP:最常用的网络命令 ping 和 tracert

 

如果中间某个路由器没有到达目的网络的路由,便会向源设备回应一个 Destination Unreachable 消息,告知目的设备不可达。

24 张图搞定 ICMP:最常用的网络命令 ping 和 tracert

 

如果源主机在一定时间内无法收到回应报文,就认为目的设备不可达,并显示超时。

24 张图搞定 ICMP:最常用的网络命令 ping 和 tracert

 

需要注意的是 ping 过程是双向的消息通信,只有双向都成功传输时,才能说明通信是正常的。另外主机也可能因为防火墙拦截,导致 ping 不通。

tracert

ping 工具只能测试目的设备的连通性,但是看不到数据包的传输路径。所以在网络不通的情况下,无法知道网络问题发生在哪个位置。tracert 工具可以查看数据包的整条传输路径,包括途中经过的中间设备

24 张图搞定 ICMP:最常用的网络命令 ping 和 tracert

 

IP 头部的 TTL 字段是为避免数据包循环转发而设计的。每经过一个路由器,数据包头中的 TTL 值减 1 。如果 TTL 值为 0 则丢弃报文,并向源设备回应一个 Time Exceeded 消息,告知错误类型。tracert 就是基于 TTL 字段和 ICMP 协议实现的。在 windows 中命令是 tracert ,在 Unix 、macOS 中命令是 traceroute 。

使用 tracert 命令时,源设备的 tracert 逐跳发送数据包,并等待每一个响应报文。发送第一个数据包时,TTL 值设为 1 。第一个路由器收到数据包后 TTL 值减 1 ,随即丢弃数据包,并返回一个 Time Exceeded 消息。源设备的 tracert 收到响应报文后,取出源 IP 地址,即路径上的第一个路由器地址。然后 tracert 发送一个 TTL 值为 2 的数据包。第一个路由器将 TTL 值减 1 ,并转发数据包。第二个路由器再将 TTL 值减 1 ,丢弃数据包并返回一个 Time Exceeded 消息。tracert 收到响应报文后,取出源 IP 地址,即路径上的第二个路由器地址。类似步骤,tracert 逐跳获得每一个路由器的地址,并探测到目的设备的可达性。

24 张图搞定 ICMP:最常用的网络命令 ping 和 tracert

 

tracert 过程也是双向的消息通信,只有双向都成功传输时,才能正确探测路径。另外主机安装了防火墙,也可能造成路径探测失败。

网络实战

ping

在 Windows 电脑上使用 ping 命令,并查看返回信息。

24 张图搞定 ICMP:最常用的网络命令 ping 和 tracert

 

同步抓包进行验证。

24 张图搞定 ICMP:最常用的网络命令 ping 和 tracert

 

还可以直接使用 ping 命令,查看 ping 命令的使用方法

24 张图搞定 ICMP:最常用的网络命令 ping 和 tracert

 

tracert

在 Windows 电脑上使用 tracert 命令,并查看返回信息。

24 张图搞定 ICMP:最常用的网络命令 ping 和 tracert

 

同步抓包进行验证。

24 张图搞定 ICMP:最常用的网络命令 ping 和 tracert

 

也可以直接使用 tracert 命令,查看 tracert 命令的使用方法

24 张图搞定 ICMP:最常用的网络命令 ping 和 tracert

 

饮水思源:

TCP/IP详解 卷1:协议 - Kevin R.Fall

网络基础 - 田果

图解TCP/IP - 竹下隆史

路由交换技术 - 杭州华三通信技术有限公司



Tags:ICMP   点击:()  评论:()
声明:本站部分内容及图片来自互联网,转载是出于传递更多信息之目的,内容观点仅代表作者本人,不构成投资建议。投资者据此操作,风险自担。如有任何标注错误或版权侵犯请与我们联系,我们将及时更正、删除。
▌相关推荐
ICMP 是个啥破玩意?
文章主要脉络如下。 我们之前的文章中了解过 TCP/IP 协议,我那时候码了一句 原文链接见如下:TCP/IP 基础知识总结下面我们就来真正认识一下 ICMP 协议什么是 ICMPICMP 的全...【详细内容】
2022-09-23  Search: ICMP  点击:(429)  评论:(0)  加入收藏
以太网数据包TCP、IP、ICMP、UDP、ARP协议头结构详解
以太网首部目地MAC地址(8字节)源MAC地址(8字节)类型(2字节)1、IP头的结构 (1)字节和数字的存储顺序是从右到左,依次是从低位到高位,而网络存储顺序是从左到右,依次从低位到高位。(2)版本:...【详细内容】
2022-08-29  Search: ICMP  点击:(708)  评论:(0)  加入收藏
用户态协议栈设计实现udp,arp与icmp协议
前言内核里面已经有网络协议栈了,为什么还要实现一遍用户态协议栈呢,主要是站在一个设计者的角度,自己去尝试实现一个协议栈,那么对协议栈的理解会比较透彻,这不比背八股文强?获取...【详细内容】
2022-07-21  Search: ICMP  点击:(448)  评论:(0)  加入收藏
24 张图搞定 ICMP:最常用的网络命令 ping 和 tracert
ICMPIP 是尽力传输的网络协议,提供的数据传输服务是不可靠的、无连接的,不能保证数据包能成功到达目的地。那么问题来了:如何确定数据包成功到达目的地? 这需要一个网络层协议,...【详细内容】
2022-03-23  Search: ICMP  点击:(537)  评论:(0)  加入收藏
防火墙对TCP/UDP/ICMP协议报文处理方式
再谈会话现在IP网络里面离不开TCP、UDP这两种传输层协议,主流应用都基于这两种协议来做封装传输,对于TCP来说,在发送实际数据的时候必须先建立可靠的连接,俗称 ”三次握手”,而UD...【详细内容】
2021-03-04  Search: ICMP  点击:(2997)  评论:(0)  加入收藏
ICMP协议及应用
ICMP协议原理IP协议提供尽力而为的服务,它定义如何将数据从源端传输到目的端,在这过程中,不负责对网络层数据传输的差错提供检测和报告,为了保证网络信息的正常交互,就诞生了ICM...【详细内容】
2020-10-19  Search: ICMP  点击:(484)  评论:(0)  加入收藏
基于wireshark报文分析快速过滤(tcp,icmp,http)报文时延
虚拟网络运维––基于wireshark报文分析快速过滤(tcp,icmp,http)报文时延前言在网络运维中,在报文分析时,时延类问题是比较常见的问题场景,如何快速定位到高时延的报...【详细内容】
2020-06-21  Search: ICMP  点击:(1175)  评论:(0)  加入收藏
内网渗透之ICMP隐藏隧道
内网渗透完成信息收集后,流量是否能够正常进出,是内网渗透中需要考虑的地方之一​ ICMP(Internet ControllerMessages Protocol,网间控制报文协议)是TCP/IP协议族的子协议,是一...【详细内容】
2020-06-21  Search: ICMP  点击:(565)  评论:(0)  加入收藏
ICMP ARP协议 TCP&UDP协议相关介绍,两分钟快速掌握
一、Internet控制报文协议ICMP(Internet Control Message Protocol)ICMP是网络层的一个重要协议。ICMP协议用来在网络设备间传递各种差错和控制信息,它对于收集各种网络信息、...【详细内容】
2020-05-28  Search: ICMP  点击:(419)  评论:(0)  加入收藏
网络基础知识ICMP和ARP,一分钟了解下
一、ICMPIP 协议是一种不可靠的协议,无法进行差错控制。但 IP 协议可以借助其他协议来实现这一功能,如 ICMP。ICMP(Internet Control Messages Protocol, 网间控制报文协议)允许...【详细内容】
2019-12-13  Search: ICMP  点击:(699)  评论:(0)  加入收藏
▌简易百科推荐
学生偷看“不良网站”,手机上3个痕迹无法清除,网友:咋不早说
众所周知,中国的常规教育中,总是“谈性色变”,但在这个信息爆炸的互联网时代,即便是一些年纪很小的孩子,也能轻易接触到一些所谓的不良网站,因此这一方面的教育缺失,其实是很可怕的...【详细内容】
2024-03-28    叶姐生活指南  Tags:不良网站   点击:(17)  评论:(0)  加入收藏
什么是网络中的路由器?核心功能解释
路由器是互联网连接的核心元素,是一种允许多个设备连接到互联网,并促进将数据包转发到各自的目标地址的设备。使用动态路由技术,路由器检查数据并在各种可用路径中选择最有效的...【详细内容】
2024-03-07    千家网  Tags:路由器   点击:(34)  评论:(0)  加入收藏
过年该不该升级Wi-Fi 7路由?看完就知道
打开电商网站不难发现,从2023年第三季度到现在,Wi-Fi 7路由器新品越来越多。而且价格不再是高高在上,已经基本和Wi-Fi 6路由价格差不多了。看到这些Wi-Fi 7新品路由,不少朋友就...【详细内容】
2024-02-27    中关村在线  Tags:Wi-Fi   点击:(44)  评论:(0)  加入收藏
聊聊 Kubernetes 网络模型综合指南
这篇详细的博文探讨了 Kubernetes 网络的复杂性,提供了关于如何在容器化环境中确保高效和安全通信的见解。译自Navigating the Network: A Comprehensive Guide to Kubernete...【详细内容】
2024-02-19  云云众生s  微信公众号  Tags:Kubernetes   点击:(42)  评论:(0)  加入收藏
SSL协议是什么?关于SSL和TLS的常见问题解答
SSL(安全套接字层)及其后继者TLS(传输层安全)是用于在联网计算机之间建立经过身份验证和加密的链接的协议。尽管SSL协议在 1999年已经随着TLS 1.0的发布而被弃用,但我们仍将这些...【详细内容】
2024-02-06  IDC点评网    Tags:SSL协议   点击:(73)  评论:(0)  加入收藏
从零开始了解网络协议:TCP/IP详解
从零开始了解网络协议:TCP/IP详解 在当今数字化的时代,网络协议已经成为我们生活中不可或缺的一部分。作为互联网的基础,网络协议规定了数据如何在不同的网络设备之间传输。TC...【详细内容】
2024-02-01    简易百科  Tags:TCP/IP   点击:(62)  评论:(0)  加入收藏
BGP路由属性:互联网路由的灵活控制器
在互联网的庞大网络中,边界网关协议(BGP)是确保不同自治系统(AS)间路由信息有效交换的关键协议。然而,BGP的功能远不止于此。其核心组成部分,即BGP路由属性,赋予了BGP强大的灵活性,使...【详细内容】
2024-01-26  诺诺爱生活    Tags:互联网路由   点击:(43)  评论:(0)  加入收藏
简易百科之什么是网络延迟?
简易百科之什么是网络延迟?随着互联网的普及和发展,网络已经成为我们生活中不可或缺的一部分。然而,我们在使用网络时可能会遇到一种情况,那就是网络延迟。那么,什么是网络延迟呢...【详细内容】
2024-01-24    简易百科  Tags:网络延迟   点击:(159)  评论:(0)  加入收藏
网络延迟与网络速度有什么区别?分享具体的答案
通常,许多人抱怨网速测试。速度还是不错的,但是他们玩游戏的时候怎么会卡住,还是断开连接等等问题,这一系列问题始终困扰着大家。那么,网络延迟与网络速度有什么区别呢?请不要担心...【详细内容】
2024-01-24  萌新小郭    Tags:网络延迟   点击:(53)  评论:(0)  加入收藏
揭秘IP地址的网络威胁与攻击类型
在当今数字化时代,网络攻击已经成为网络安全的一大挑战。IP地址,作为互联网通信的基础,也成为网络威胁和攻击的焦点之一。本文将深入探讨不同类型的网络威胁和攻击,以及如何防范...【详细内容】
2024-01-22  IP数据云    Tags:IP地址   点击:(85)  评论:(0)  加入收藏
站内最新
站内热门
站内头条