有人可以帮助我提供正确的解释吗?
关于,
Nishad
#1 楼
标准ping命令不使用TCP或UDP。它使用ICMP。更准确地说,使用的是ICMP类型8(回送消息)和类型0(回送应答消息)。ICMP没有端口!
评论
为了明确起见,ICMP直接作为IP协议通过IP进行传送。1.在ICMP标头中,您具有echo / echo Reply等类型。将此与分别作为IP协议6和17覆盖IP的TCP和UDP进行比较,并使用它们自己的端口系统来区分应用程序。
–cmschmidt15
17年1月9日在22:19
“ ICMP没有端口!”尽管它确实具有查询ID,但在某些情况下(与NAT相关的明显情况),它们被视为端口。
– Peter Green
19年11月30日在6:25
#2 楼
我想再给您一个额外的答案,特别是针对问题的这一部分: >端口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.
19年1月3日,15:32
“ ICMP不使用端口,因为它没有端口的位置。它仅用IP数据报封装。您只能在UDP和TCP数据报上找到port选项。要阻止ICMP回显,您将显式阻止类型和代码”
– Jesse P.
19年1月3日,15:32
完整的论坛主题为community.infosecinstitute.com/discussion/8777
– Jesse P.
19年1月3日,15:33
@JesseP。我是否写过ICMP使用端口7?不。我什至用粗体的“代替ICMP”写了“代替”一词,以表示端口7与ICMP无关。我将对答案进行一些编辑以使其更清楚。
–马丁·罗森瑙(Martin Rosenau)
19年1月3日,16:04
这还算公平。读起来有点混乱。抱歉。
– Jesse P.
19年1月3日,16:12
#3 楼
正如其他人已经指出的那样,通常ping是基于ICMP的,并且没有端口。但是,有一种类似TCP Ping的东西,它不是典型的3向TCP握手,而是仅执行前两个步骤,并测量它们之间的延迟。测量完成后,将发送RST ACK来关闭半开连接。然后,该过程重复进行,直到达到计数器/持续时间或您终止了该过程。使用TCP Ping(我经常使用它来测试系统管理员在其上工作的服务器上的开放端口)可以指定要测试的目标端口(以验证服务器正在侦听某个端口)。源端口只是一个临时的随机端口。如果您想查看一个TCP Ping实用程序的示例(我在Windows系统上使用的示例),请转到: TCPing。此外,NMAP附带了一个名为NPING的实用程序,该实用程序也具有一个标志,使其也可以执行基于TCP的ping。
请注意,某些网络设备也具有此功能,例如使用某些较新的操作系统版本。命令是:
ping tcp <destination IP> <destination port>
#4 楼
Ping不使用端口,而是使用协议。Ping通过向目标主机发送Internet控制消息协议(ICMP)回显请求包并等待ICMP回显应答来进行操作。
但是,出于安全考虑,这是通常被禁用。
评论
TCP和UDP是第4层协议,端口是TCP或UDP地址,但是ICMP是IP(第3层)的一部分。从RFC 792开始:“ ICMP使用IP的基本支持,就好像它是高级协议一样,但是,ICMP实际上是IP的组成部分,并且必须由每个IP模块实现。”在这里讨论层有点误导,因为ICMP,TCP和UDP分别直接作为协议1、6和17通过IP进行。对于OP,请查看ICMP / TCP / UDP的标头或运行数据包捕获以查看它们之间的区别。请记住,ICMP与TCP和UDP完全分开。
你找到工作了吗?
是的,我找到了工作。