一、区别
ping命令基于ICMP协议,通过发送发送ICMP数据包,并查看对方是否有返回数据来检测网络是否连通,仅包含控制信息,不包含端口号;
telnet是对服务器的远程登录,包含端口,能承载数据(默认端口23)
curl则是测试某个接口/服务是否可以用,类似接口请求
二、使用方法
ping
ping 域名/ip
返回值意义
bytes值:数据包大小,也就是字节。
time值:响应时间,这个时间越小,说明你连接这个地址速度越快。
TTL值:Time To Live,表示DNS记录在DNS服务器上存在的时间,它是IP协议包的一个值,告诉路由器该数据包何时需要被丢弃。(TTL如果在100-130ms之间,说明是Windows系统 ,如果是240-255ms之间,说明是UNIX/Linux系统)
下图的14.199.104.189就是百度域名解析出来的地址(不知用了什么手段,这个地址是会变的),不同的网络ping返回来的地址可能会不一样,比如公司内网去ping和外网去ping公司内部某个服务器会返回不同的地址
telnet
telnet 域名/ip 端口号
如 telnet www.baidu.com 80
telnet不是自带的需要下载(以centOS7为例)
yum install telnet
yum install telnet-server
curl
curl url 返回整个网页的内容
curl -I url 返回这个网页的header
curl -i url 返回网页header + 内容
curl -X post 发送post请求可以带请求参数
例如:curl -X POST -H “Content-Type: application/json; charset=UTF-8” “https://xxxx.xxxx.com.cn:9999/xxx?paramKey1=paramValue1 & paramKey2=paramValue2”
详细可以参考https://blog.csdn.net/baidu_35692846/article/details/107516123
三、应用场景
需要测试你的服务器是否能与对方的服务器连通可以使用ping测试。测试某个TCP端口是否开放可以使用telnet。
能ping通不代表能telnet通。比如人家服务器上起了redis服务但6379端口(redis默认端口)对外不开放但该服务器却允许对你服务器的ip开放,这时候ping ‘人家的ip/域名’ 是可以通的,而telnet会显示connect失败。
curl可以模拟一个http行为,类似于postman发送请求,可以测试服务器上的某个应用接口是否正常,并能通过返回码排查问题