首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >“`ping`”连接到ICMP服务器吗?

问“`ping`”连接到ICMP服务器吗?
EN

Unix & Linux用户
提问于 2018-08-21 22:35:54
回答 1查看 642关注 0票数 0

将ICMP ECHO_REQUEST发送到网络主机

当我在终端中运行ping host时,ping是一个ICMP客户端吗?

ping是否连接到运行在host上的ICMP服务器?ICMP服务器的程序是什么?

ping是否连接到host上的端口,该端口号是否是ICMP服务器的端口号?

EN

回答 1

Unix & Linux用户

发布于 2018-08-21 23:03:02

平确实是一个客户。

ping命令还使用ICMP协议的一部分,即回显回复(ICMP类型0消息)和回显请求(ICMP消息类型8)。

许多专业人员和网络监控软件使用回波请求/应答成功的ICMP消息处理作为一个指标,一个系统是上/下。然而,这是一种惯例,并不是严格强制性的。例如,我可以在Nagios中定义,我将使用SSH /22端口监视我的Linux服务器,而不是使用PINGs。

作为已建立的连接的概念本身并不存在,就像TCP连接中一样。ICMP不是一个面向连接的协议。

如前所述,端口的概念也不存在-- Linux内核处理ICMP数据包,并相应地抛出一个答案,然后忘记了行为(例如,忽略其他机制作为速率限制)。

Ping也适用于没有特权的用户,或者必须是setuid二进制文件,因为它使用原始套接字来制造ICMP数据包。

您还可以定义内核是否响应带有sysctl/proc设置的ICMP回送请求消息。

若要禁用ICMP pings的答案,请执行以下操作:

代码语言:javascript
复制
echo "1" > /proc/sys/net/ipv4/icmp_echo_ignore_all    

或再次启用:

代码语言:javascript
复制
echo "0" > /proc/sys/net/ipv4/icmp_echo_ignore_all

至于负责处理ICMP消息的内核部分,它可以在Linux内核源代码中找到icmp.c,就像在https://github.com/torvalds/linux/blob/master/net/ipv4/icmp.c中一样。

至于ICMP数据包,请参阅此图像:

至于更多的内核定义:

linux/icmp.h

代码语言:javascript
复制
#define ICMP_ECHOREPLY      0   /* Echo Reply           */
#define ICMP_ECHO           8   /* Echo Request         */
票数 2
EN
页面原文内容由Unix & Linux提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://unix.stackexchange.com/questions/463994

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档