1. 背景
机器A需要调用机器B的服务,为此要保证服务的可用性,我们有时候用ping,有时候用telnet来验证机器A和B的连通性,但有时候会出现这种情况,A可以ping通B,但A调用B的服务会一直报服务超时?如果telnet通了,则不会发送这种情况,这是为什么呢?
2. 分析
ping 可以测试到目标机器的连通性。用的是ICMP协议,和服务是否可用无关。
telnet 用于远程管理连接主机。同时也是测试目标机器的TCP端口是否开放,如果连接失败,可能是防火墙屏蔽。可以检测服务是否可用。
3. 深入
ping的用法
C:\Users\dell>ping
用法: ping [-t] [-a] [-n count] [-l size] [-f] [-i TTL] [-v TOS] [-r count] [-s count] [[-j host-list] | [-k host-list]] [-w timeout] [-R] [-S srcaddr] [-c compartment] [-p] [-4] [-6] target_name
选项: -t Ping 指定的主机,直到停止。 若要查看统计信息并继续操作,请键入 Ctrl+Break; 若要停止,请键入 Ctrl+C。 -a 将地址解析为主机名。 -n count 要发送的回显请求数。 -l size 发送缓冲区大小。 -f 在数据包中设置“不分段”标记(仅适用于 IPv4)。 -i TTL 生存时间。 -v TOS 服务类型(仅适用于 IPv4。该设置已被弃用, 对 IP 标头中的服务类型字段没有任何 影响)。 -r count 记录计数跃点的路由(仅适用于 IPv4)。 -s count 计数跃点的时间戳(仅适用于 IPv4)。 -j host-list 与主机列表一起使用的松散源路由(仅适用于 IPv4)。 -k host-list 与主机列表一起使用的严格源路由(仅适用于 IPv4)。 -w timeout 等待每次回复的超时时间(毫秒)。 -R 同样使用路由标头测试反向路由(仅适用于 IPv6)。 根据 RFC 5095,已弃用此路由标头。 如果使用此标头,某些系统可能丢弃 回显请求。 -S srcaddr 要使用的源地址。 -c compartment 路由隔离舱标识符。 -p Ping Hyper-V 网络虚拟化提供程序地址。 -4 强制使用 IPv4。 -6 强制使用 IPv6。
telnet用法
C:\Users\dell>telnet -help
telnet [-a][-e escape char][-f log file][-l user][-t term][host [port]] -a 企图自动登录。除了用当前已登陆的用户名以外,与 -l 选项相同。 -e 跳过字符来进入 telnet 客户端提示。 -f 客户端登录的文件名 -l 指定远程系统上登录用的用户名。 要求远程系统支持 TELNET ENVIRON 选项。 -t 指定终端类型。 支持的终端类型仅是: vt100, vt52, ansi 和 vtnt。 host 指定要连接的远程计算机的主机名或 IP 地址。 port 指定端口号或服务名。
4. 拓展
linux中怎样关闭ICMP回应功能,即ping不通
echo 1 >/proc/sys/net/ipv4/icmp_echo_ignore_all
如果需要ping通则输入:
echo 0 >/proc/sys/net/ipv4/icmp_echo_ignore_all
Linux 开启telnet服务
/etc/xinetd.d/telnet,将disable=yes改成disable=no;
关闭telnet服务
/etc/xinetd.d/telnet,将disable=no改成disable=yes;
5.总结
ping通常是用来检查网络是否通畅或者网络连接速度的命令。
而telnet是用来探测指定ip是否开放指定端口的。