Answers:
ping UDP端口有点棘手,因为本身没有连接。如果您无法控制远程主机,那么您可能永远不会真正知道是否实际上正在接收UDP数据报。我假设你已经知道了远程主机是否可达,通过ping
,traceroute
,mtr
,等(如果没有,请检查第一!)
接下来,由于您没有netcat
,您将需要某种方式来生成UDP数据包。
bash
当您将数据重定向到特殊设备时,shell发送UDP数据包/dev/udp/host/port
。例如:
#!/bin/bash
host="10.10.10.10"
port=12345
echo "PING" >/dev/udp/$host/$port
当然,Python也完全支持UDP,例如
#!/bin/python
import socket
host="10.10.10.10"
port=12345
udp_sock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
udp_sock.sendto('PING', (host, port))
无论您如何尝试生成UDP“ ping”数据包,您都想知道目标是否已收到它。如果目标端口是开放的(即服务正在侦听给定的端口),那么将由应用程序定义。希望您会注意到远程系统的某些行为或指示。
如果目标端口是关闭的(即,没有服务在该端口上侦听),那么您应该得到一个ICMP错误数据包作为响应。使用您喜欢的线级网络嗅探器进行监视。或者,也许您的HP-UX系统在某处记录了ICMP错误(对不起,我对HP-UX没有任何经验)。
不幸的是,如果目标被防火墙保护,则目标端口关闭时您可能不会得到响应。知道远程主机是否响应的唯一肯定方法是运行依赖于UDP数据的应用程序,并观察网络流量。