结合tcpdump命令对traceroute深入分析

- 丢弃(不认识你,狗带)
- 返回ICMP-目标不可达包给请求主机
下面为了加深一下印象,结合tcpdump命令,对traceroute过程进行一些验证
tcpdump -i eno33554984 -vvnn host 119.146.184.98
[root@www ~]#traceroute 119.146.184.98
traceroute to 119.146.184.98 (119.146.184.98), hops max, byte packets
192.168.0.1 (192.168.0.1) 2.217 ms 1.741 ms 1.509 ms
116.24.132.1 (116.24.132.1) 11.348 ms 11.117 ms 11.287 ms
113.106.47.93 (113.106.47.93) 7.111 ms 6.848 ms 7.123 ms
5.107.38.59.broad.fs.gd.dynamic.163data.com.cn (59.38.107.5) 6.921 ms 6.712 ms 6.434 ms
183.59.12.153 (183.59.12.153) 8.635 ms 7.664 ms 7.593 ms
183.61.222.102 (183.61.222.102) 11.923 ms 10.220 ms 9.423 ms
119.146.184.198 (119.146.184.198) 15.779 ms 119.146.184.94 (119.146.184.94) 47.902 ms 119.146.184.62 (119.146.184.62) 16.571 ms
####################################
#返回结果解释:
#列1:[] 经过的路由器序号;
#列2:[192.168.0.1 ] 路由器IP(也叫网关);
#列3:[(113.106.47.93) ] 即括号内的内容,具体用途不明,有懂的可以解释一下哈;
#列4:[7.111 ms] 返回的时间,这里也可以发现,一共有3个时间,还想起来吗?traceroute每次发出的UDP包都是3个一起发的;
需要注意的是,大家可以看到最后一列,是有3个地址的,其实也不难理解,路由器是会根据实际情况寻找合适的路径;
::27.892318 IP (tos 0x0, ttl , id , offset , flags [none], proto UDP (), length )
192.168.0.200. > 119.146.184.98.: [bad udp cksum 0xf19e -> 0xfaae!] UDP, length
::27.892798 IP (tos 0x0, ttl , id , offset , flags [none], proto UDP (), length )
192.168.0.200. > 119.146.184.98.: [bad udp cksum 0xf19e -> 0x000b!] UDP, length
::27.893869 IP (tos 0x0, ttl , id , offset , flags [none], proto UDP (), length )
####################################
#返回结果解释:
#可以看到我们的主机,往119.146.184.98发出TTL=1的UDP包,而且是三个;这里大家可以奇怪,不是说经过的网关会返回ICMP-超时的包吗?为啥没看到呢?
#为什么呢?
#因为ICMP-超时这个包,不是119.146.184.98返回的,那是谁返回的呢?回忆一下上文!是路由器!所以这里我们需要使用tcpdump指定路由器的ip来抓包。
4、观察路由器返回的ICMP-超时包
tcpdump -i eno33554984 -vvnn host 116.24.132.1
#温馨提示:执行完这个命令后,你需要重新执行traceroute 119.146..98命令才能进一步观察116.24.132.1返回的包哦
::26.210530 IP (tos 0xc0, ttl , id , offset , flags [none], proto ICMP (), length )
116.24.132.1 > 192.168.0.200: ICMP time exceeded in-transit, length
IP (tos 0x0, ttl , id , offset , flags [none], proto UDP (), length )
192.168.0.200. > 119.146.184.98.: UDP, length
####################################
#返回结果解释:
#这里我们选择了采集第二跳的路由器地址116.24.132.1的数据包(为什么不用第一跳呢?因为第一跳往往是自己家里的路由器地址,这个地址的包会非常多,不容易观察到实验#结果)
#从返回的结果中,我们可以看到第二跳路由器确实返回ICMP time exceeded包,实际上会有3个,就不一一列举了。
5、观察目的主机返回的ICMP-目标不可达包
#在 [root@www ~/test_traceroute]#tcpdump -i eno33554984 -vvnn host 119.146.184.98 命令返回的结果中查看
::27.972224 IP (tos 0x0, ttl , id , offset , flags [none], proto ICMP (), length )
119.146.184.98 > 192.168.0.200: ICMP 119.146.184.98 udp port unreachable, length
IP (tos 0x0, ttl , id , offset , flags [none], proto UDP (), length )
192.168.0.200. > 119.146.184.98.: UDP, length
####################################
#返回结果解释:
#在返回结果中最后的地方可以看到ICMP 119.146.184.98 udp port unreachable的字样。
[root@www ~]#traceroute -m 14.215.177.38
traceroute to 14.215.177.38 (14.215.177.38), hops max, byte packets
192.168.0.1 (192.168.0.1) 2.395 ms 2.063 ms 1.583 ms
116.24.132.1 (116.24.132.1) 36.296 ms 36.939 ms 36.706 ms
183.56.71.225 (183.56.71.225) 6.550 ms 6.304 ms 6.396 ms
183.56.66.93 (183.56.66.93) 5.716 ms 5.491 ms 5.713 ms
183.56.64.50 (183.56.64.50) 8.059 ms 7.733 ms 7.513 ms
* * *
14.29.121.194 (14.29.121.194) 9.082 ms 14.29.121.198 (14.29.121.198) 8.977 ms 14.29.121.206 (14.29.121.206) 9.700 ms
* * *
* * *
* * *
####################################
返回结果解释:
*号代表发出去的UDP没有收到相应的ICMP-超时包,这个主要是因为某些路由器安全原因,拒绝返回ICMP-超时包。
所以大家可以看到第六跳的记录都是*号,说明,第六跳的路由器没有返回ICMP-超时包。
同时存在如下一点疑问:
为什么traceroute没有结束,一直不断的检测呢?(我们在命令中指定检测10跳的参数),如果你有耐心,可以指定-m 128参数,会发现traceroute始终无法自动结束,每次都需要耗尽所有的检测次数。
2、那么,为什么8 9 10跳返回的也是*呢?这里合理推测一下:
- 我所在的网络,访问百度这个网站,至少需要7跳才能到达,在第七条以后,TTL=8的UDP包可能已经到达百度的主机,那么为什么traceroute没有结束呢?
- 一个合理的推测,就是百度14.215.177.38这个主机直接丢弃了我们的UDP包,拒绝返回ICMP-目标不可达包;
- 由于traceroute一直没有收到ICMP-目标不可达包,所以他会一直生成UDP包,并增加TTL的值发出,直到达到我们指定的检测跳数(本例中,我们指定的跳数=10)。
- 大家也可以使用如下命令
[root@www ~/test_traceroute]#tcpdump -i eno33554984 -vvnn host 14.215.177.38
这个命令可以采集到14.215.177.38的相关包,可以看到只有发出去的包,没有返回的包,也基本可以验证我们的推测。
结合tcpdump命令对traceroute深入分析的更多相关文章
- Android抓包方法(二)之Tcpdump命令+Wireshark
Android抓包方法(二) 之Tcpdump命令+Wireshark 前言 做前端测试,基本要求会抓包,会分析请求数据包,查看接口是否调用正确,数据返回是否正确,问题产生是定位根本原因等.学会抓包分 ...
- tcpdump命令--实用篇
//查看本机与mysql的操作命令 注意 -i any表示监听所有网络接口,我们也根据自身情况选择网络接口 #tcpdump -i any -w - dst port 3306 |strings // ...
- tcpdump 命令行抓包工具
为了防止无良网站的爬虫抓取文章,特此标识,转载请注明文章出处.LaplaceDemon/SJQ. http://www.cnblogs.com/shijiaqi1066/p/3898248.html ...
- 每天一个linux命令(42)--traceroute命令
通过traceroute 我们可以知道信息从你的计算机到互联网另一端的主机是走的什么路径.当然每次数据包由某一同样的出发点(source)到达某一同样的目的地(destination)走的路径可能会不 ...
- ab与nc命令,tcpdump命令
ab与nc命令,tcpdump命令 ab -p post.txt -T application/json "http://127.0.0.1:8083/main/index&quo ...
- 每天一个Linux命令(04):tcpdump命令
tcpdump命令 是一款抓包,嗅探器工具,它可以打印所有经过网络接口的数据包的头信息,也可以使用-w选项将数据包保存到文件中,方便以后分析 语法 tcpdump(选项) 选项 -a:尝试将网络和广播 ...
- Linux使用tcpdump命令抓包并使用wireshark分析
Linux使用tcpdump命令抓包并使用wireshark分析 介绍 有时分析客户端和服务器网络交互的问题时,为了查找问题,需要分别在客户端和服务器上抓包,我们的客户端一般是windows上的,抓包 ...
- tcpdump 命令
tcpdump命令高级网络 tcpdump命令是一款sniffer工具,它可以打印所有经过网络接口的数据包的头信息,也可以使用-w选项将数据包保存到文件中,方便以后分析. 选项 -a:尝试将网络和广播 ...
- iostat iotop 查看硬盘的读写、 free 查看内存的命令 、netstat 命令查看网络、tcpdump 命令
iostat 命令 查看硬盘的使用情况: iostat iostat -x iotop 命令: 若没安装先安装: yum install iotop -y free 命令,用于查看内存的使用量: fr ...
随机推荐
- IPTV中的EPG前端优化
先看一下IPTV相关情况: l 目前TPTV市场情况 a) 截止今年2月,全国IPTV总用户数达3630.2万,我国移动互联网用户规模接近9亿,人均月接入量近300M,8M宽带达半数,光纤近4成. 图 ...
- ORACLE的CONNECT和RESOURCE角色权限
最近在处理数据库的用户权限问题,之前惯性思维,觉得给用户授权RESOURCE权限之后,用户的一般权限都会有,等到发现用户有RESOURCE角色,却没有创建视图的权限之后,才发现这部分还是一知半解啊,所 ...
- C++中getline函数的使用
代码: #include <iostream> #include <cstdio> using namespace std; int main(){ char* s; s = ...
- Qt Quick App的两种启动模式
QQmlApplicationEngine搭配Window QQuickView搭配Item 两者不同之处在于: 使用QQuickView显示QML文档,对窗口的控制权(比如设置窗口标题.Icon.窗 ...
- GitHub——如何更新已经fork的代码
github上有个很方便的功能叫fork,将别人的工程一键复制到自己账号下.这个功能很方便,但有点不足的是,当源项目更新后,你fork的分支并不会一起更新,需要自己手动去更新.下面记录下网上找到的更新 ...
- Oracle数据库之事务
Oracle数据库之事务 1. 什么是事务 在数据库中事务是工作的逻辑单元,一个事务是由一个或多个完成一组的相关行为的SQL语句组成,通过事务机制确保这一组SQL语句所作的操作要么都成功执行,完成整个 ...
- 摇滚吧HTML5!Jsonic超声波前端交互!
前些年吹过一阵canvas制作html5游戏的东风,相信不少同学重温了一把高中物理课本上的牛顿定律.时光如梭,你是否还记得牛顿定律后面一章的各种机械波的物理定律?环视四周,光纤.wifi.蓝牙.广播都 ...
- Sicily 1936. Knight Moves
题目地址:1936. Knight Moves 思路: 这道题一开始不理解题意…orz...囧,看大神们理解的. 题意是说一个8*8的国际象棋,骑士以马的形式走动(“日”字型),指定两个点,输出最小的 ...
- 转:内核中的内存申请:kmalloc、vmalloc、kzalloc、kcalloc、get_free_pages
在内核模块中申请分配内存需要使用内核中的专用API:kmalloc.vmalloc.kzalloc.kcalloc.get_free_pages;当然,设备驱动程序也不例外;对于提供了MMU功能的处理 ...
- 系统共享内存的修改(ORA-27102: out of memory)
http://ccchencheng.blog.51cto.com/2419062/738188 http://blog.csdn.net/leshami/article/details/874602 ...