PING端口号?


50

昨天的面试官问我,什么是ping的端口号以及哪些协议ping使用TCP / UDP。

采访之后,我在互联网上搜索,发现不同的结果,有人说ICMP使用端口7,有人说它不使用端口号,在一个站点上我发现它使用IP协议1,依此类推。

谁能为我提供正确的解释?

此致Nishad


2
TCP和UDP是第4层协议,端口是TCP或UDP地址,但是ICMP是IP(第3层)的一部分。从RFC 792开始:“ ICMP像基本协议一样使用IP的基本支持,但是,ICMP实际上是IP的组成部分,必须由每个IP模块实施。
Ron Maupin

1
在这里讨论层有点误导,因为ICMP,TCP和UDP分别直接作为协议1、6和17通过IP进行。对于OP,请查看ICMP / TCP / UDP的标头或运行数据包捕获以查看它们之间的区别。请记住,ICMP与TCP和UDP完全分开。
cmschmidt17年

你找到工作了吗?
Janac Meena

1
是的,我得到了这份工作。
Nishad Morey

Answers:


62

标准ping命令不使用TCP或UDP。它使用ICMP。更精确地说,使用了ICMP类型8(回声消息)和类型0(回声应答消息)。ICMP没有端口!

有关更多详细信息,请参见RFC792


5
为了明确起见,ICMP直接作为IP协议通过IP进行传送。1.在ICMP标头中,您具有echo / echo答复等类型。将此与分别作为IP协议6和17覆盖IP的TCP和UDP进行比较,并使用它们自己的端口系统来区分应用程序。
cmschmidt15年

5

我想给您一个额外的答案,尤其是对于问题的这一部分:

...有人说ICMP使用端口7

端口7(TCP和UDP)均用于“ echo”服务。

如果此服务在计算机上可用,则可以使用UDP端口7 代替 ICMP来执行“ ping”。

但是,大多数现代计算机没有运行“ echo”服务,因此无法使用UDP端口7而不是ICMP执行“ ping”。

并且:正如“代替ICMP”一词已经表明的那样,通过UDP端口7进行“ ping”操作使用ICMP,而是使用UDP,这是一个完全不同的协议!


为了反驳您的答案,以下是有人在我发现的一个论坛上关于这个主题的帖子:“确实认为ICMP某种程度上使用端口7的人们(旧的echo服务会在其中响应您发送给它的每个字符)如果您不同意我所说的内容,请查看IP数据报和ICMP数据报的结构。将ICMP封装在IP数据报中,然后将IP数据报封装到任何内容中。特定的媒体需要形成框架。”
Jesse P.

“ ICMP不使用端口,因为它没有端口的位置。它仅用IP数据报封装。您只能在UDP和TCP数据报上找到port选项。要阻止ICMP回显,您将显式阻止类型和代码”
Jesse P.


@JesseP。我是否写过ICMP使用端口7?不。我什至用粗体的“代替ICMP”写了“代替”一词,以表示端口7与ICMP无关。我将对答案进行一些编辑以使其更清楚。
Martin Rosenau

这还算公平。读起来有点混乱。抱歉。
Jesse P.

2

正如其他人已经指出的那样,通常ping基于ICMP并且没有端口。但是,有一种类似TCP Ping的东西,它不是典型的3向TCP握手,而是仅执行前两个步骤并测量它们之间的延迟。测量完成后,将发送RST ACK以关闭半开连接。然后重复该过程,直到达到计数器/持续时间或您终止了该过程。使用TCP Ping(我经常使用它来测试系统管理员正在工作的服务器上的开放端口)可以指定要测试的目标端口(以验证服务器正在侦听某个端口)。源端口只是一个临时的随机端口。

如果您想查看一个TCP Ping实用程序的示例(我在Windows系统上使用的示例),请执行以下步骤TCPing。同样,NMAP附带了一个名为NPING的实用程序,该实用程序具有一个标志,允许它也执行基于TCP的ping。

注意,某些网络设备也具有此功能,例如使用某些较新的操作系统版本的Cisco ASA。该命令是:ping tcp <destination IP> <destination port>


1

Ping不使用端口,而是使用协议。Ping通过将Internet控制消息协议(ICMP)回显请求数据包发送到目标主机并等待ICMP回显应答来进行操作。但是,出于安全考虑,通常禁用此功能。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.