1. 背景
機器A需要調用機器B的服務,為此要保證服務的可用性,我們有時候用ping,有時候用telent來驗證機器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是否開放指定端口的。