一、ICMP协议简介
ICMP(Internet Control Message Protocol)Internet控制报文协议。它是TCP/IP协议簇的一个子协议,用于在IP主机、路由器之间传递控制消息。控制消息是指网络通不通、主机是否可达、路由是否可用等网络本身的消息。这些控制消息虽然并不传输用户数据,但是对于用户数据的传递起着重要的作用。
ICMP使用IP的基本支持,就像它是一个更高级别的协议,但是,ICMP实际上是IP的一个组成部分,必须由每个IP模块实现。
![5b5e5fd6a74ab17d73b52408828b0d67.png](https://i-blog.csdnimg.cn/blog_migrate/d75ac8189f89f88c87de78231779d04e.jpeg)
二、ICMP协议的作用
在RFC,将ICMP 大致分成两种功能:差错通知和信息查询。
![90079bf00177597651de81bc1d155122.png](https://i-blog.csdnimg.cn/blog_migrate/8db492c4a5a173c8ea161f35d1ac353d.jpeg)
ICMP协议应用在许多网络管理命令中,下面以 ping 和 tracert 命令为例详细介绍 ICMP 协议的应用。
(1) ping 命令使用 ICMP 回送请求和应答报文
在网络可达性测试中使用的分组网间探测命令 ping 能产生 ICMP 回送请求和应答报文。目的主机收到 ICMP 回送请求报文后立刻回送应答报文,若源主机能收到 ICMP 回送应答报文,则说明到达该主机的网络正常。
(2)路由分析诊断程序 tracert 使用了 ICMP时间超过报文
tracert 命令主要用来显示数据包到达目的主机所经过的路径。通过执行一个 tracert 到对方主机的命令,返回数据包到达目的主机所经历的路径详细信息,并显示每个路径所消耗的时间。
三、服务器怎么开启/关闭ICMP协议
(1)Linux服务器
首先通过SSH登录服务器,相关命令如下
打开ICMP协议(取消禁PING)
echo "0">/proc/sys/net/ipv4/icmp_echo_ignore_all
cat /proc/sys/net/ipv4/icmp_echo_ignore_all
关闭ICMP协议(禁PING)
echo "1">/proc/sys/net/ipv4/icmp_echo_ignore_all
cat /proc/sys/net/ipv4/icmp_echo_ignore_all
(2)Windows服务器
一般通过mstsc远程登录Windows服务器,然后打开控制面板>系统和安全>Windows防火墙>高级设置
![957309f462af439c0bbadd7695d9a9e5.png](https://i-blog.csdnimg.cn/blog_migrate/c8e1dfbeb173b995351f91041850ebbc.jpeg)
再点击“入站规则”,找到"文件和打印机共享(回显请求-ICMPv4-In)",鼠标右键“启用规则”,这样就打开了ICMP协议,外部PING命令可以得到服务器的回显请求,想要禁用ICMP协议的话用同样的方法禁用就可以了。
![d2a5371de684e54af8dd611e79d2c8b2.png](https://i-blog.csdnimg.cn/blog_migrate/643d07b62c61f391767f9200926ece3a.jpeg)
参考链接:
ICMP协议&服务器怎么开启关闭ICMP协议? - 森云科技www.senyun.net![6702535f7948a1322252be22dba8fe70.png](https://i-blog.csdnimg.cn/blog_migrate/e179b372de97f0242e28edd225c0179e.jpeg)