ping是哪个端口_Linux命令详解:ping 和 traceroute命令

作者:平解技术控
https://www.jianshu.com/p/828c0f927778

Linux命令有很多,今天跟大家介绍常用的两个命令ping 、traceroute命令,按照工具的作用,原理,用法三个维度来理解。

一、ping

1.作用

探测端到端的连通性,包往返时延。

2.原理

icmp协议,是在IP协议之上的一种协议,包括首部和数据两个部分。icmp协议头部的三个固定字段,type,code,checksum。ping使用其中type为8和0的两种类型。type8为request,type 0 为reply。首部其他字段因不同包类型有所区分。

通过抓到的包,来看下各个字段。

ccdb32bee8bd11e0dbb48542619437db.png

ping报文

request包

a95a0524dedd49c684da44b95a82a5bf.png

ping-request包

06ee08776942b4ca34086cc4a45a05f1.png

ping-reply包

可以看出,ping包头部除了三个固定字段之外,还有Identifier,Sequence。data字段为Timestamp。其中Identifier,Sequence主要是为了让request,reply能配对,比如哪个reply是回复哪个request的。看上图的request和reply包,Identifier BE LE 相同,Identifier一般是发送的进程号。Sequence number BE LE 也相同,表示发送的序列号,一对请求和答复包Sequence number BE LE 相同。Timestamp里面记录了传输时间戳和序列号。首先看request包里面的发送时间,和reply包里面的发送时间相同。

3f1ee01182c7a58de52fedd45527fa53.png

request中的timestamp字段

cdfca280d92fecf9032e533094fe454b.png

reply中的timestamp字段

Response  time,rtt正是 reply包里面relative时间减去request包里面的时间。

所以ping包可以连续的去给对端发request,而不用等对端回复某一个包之后再发,默认1s 发送一个request包。

3.用法

不带任何参数,默认ping 的数据包大小是 56 字节。会持续不断的ping下去。

输出参数解释:min/avg/max/stddev 前三个好理解,最后一个参数,mac下是stddev,linux下面是 mdev Mean Deviation,代表 ICMP 包的 RTT 偏离平均值的程度,可以通过这个值看出网络抖动的情况,mdev值越大说明,整个链路上的包延时越不稳定。值越小,说明越稳定。

8df5579c32954dcdeb76e0eaa4bf34d7.png

ping不带参数结果

ping参数用法:

-l  指定发送包的大小

-c 指定发送包的次数

-i 指定发送间隔,默认是1s

-I  指定发送包的网卡 ,一般是查看路由表,哪个网卡路由匹配用哪个网卡发送。

000861428eb688b5522db6d1663df9e5.png

ping参数学习

以上指定了 包大小,-M do表示不要分片,-c 4 次数,这个命令在探测链路mtu的时候会用到。

二、traceroute

1.作用

探测端到端,链路每一跳的时延。

2.原理

先看一个traceroute的访问截图和抓包截图

64d9403ad5911bc62d5e62f6e3037257.png

traceroute访问截图

源IP :192.16843,87 家里的局域网地址

64972a5bf9794b0b0cba42ad4bb71a9e.png

traceroute抓包截图

源IP :192.16843,87 家里的局域网地址

目的IP: 61.135.169.121 百度的地址

可以看出traceroute开始的时候,源地址发包,ttl 值依次从为1,1,12,2,2,3,3,3...ttl依次增大,并且每个ttl值发三个包。在看发包源端口 44136,一直没有变,访问的目的端口从 33435依次增大。tracroute假设服务器的端口 33435没有监听,如果恰巧这个端口服务端监听了,那么traceroute就不能正常判断了。路径上的每一跳,或者返回icmp ttl超时的错误包,或者不返回,直到达到主机之后,主机会返回一个服务不可达的包,这个时候trcaeroute认为探测到了主机。

ttl为1的包发出去之后,收到了中间路由器的回包,像ttl为 2,3的包没有收到回包,控制台看的结果为 *

8ced59a95535e24452da928cd668c2ab.png

traceroute没有收到回包为*

看下发包的详细特征:

873fce5a2251f265559ab9937e815005.png

traceroute发包

可以看出这个包是UDP包

93b6e8f8714e052caa00e9fdadd694a5.png

traceroute-ttl超时响应包

可以看出这个包是 ICMP包,type 11,code 0 ,TTL超时包。这个包的源地址为 192.168.43.138为中间路由器的发回来的包。这个包将发包的信息封装到了自己里面,可以和上一个图对比。

3.用法

常规的用法如上面,看下哪一个路径上的延时变大。除了UDP包探测之外,traceroute还可以指定使用TCP协议探测,可以使用-p指定端口

命令:traceroute -T  www.baidu.com

探测mtu大小: traceroute www.baidu.com -F 1472

c6fe22ea2f2ae9573a5013dcc3176c86.png

trcaeroute-tcp返回结果

好文推荐:

别总写代码,这130个网站比涨工资都重要

30分钟理解决策树的基本原理

最新2020年3月份编程语言排行榜详情

bec6b7a33b429063b975760dff140808.png

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值