今天闲来无事,想弄清楚学校至百度服务器的网络问题,结果不试不知道,一试吓一跳。完全出乎我的意料。我们学校的网关是172.21.6.254,172.21.4.254和172.21.7.254。发现可以ping通学校网关,却不能traceroute。如下图:

这是为什么?查了一下资料:windows的tracert预设是走ICMP协议,而linux的traceroute则预设走UDP协议,若两端点之间的UDP connection被任何firewall挡掉, 那 traceroute 就不行了.

原因好像大概知道了,就是有firewall把udp给挡掉了。解决方法:traceroute -I 加I参数改用ICMP协议。即下图,果然成功了。

可以发现,从我的服务器到达百度服务器经过了21跳。

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22traceroute to baidu.com (123.125.115.110), 30 hops max, 60 byte packets

1 192.168.1.1 (192.168.1.1) 实验室路由器

2 172.21.6.254 (172.21.6.254) 学校网关内接口

3 172.21.200.5 (172.21.200.5) 学校网关外接口

4 172.30.201.6 (172.30.201.6) 本地局域网

5 211.71.94.251 (211.71.94.251) 北京市朝阳区 教育网

6 124.207.38.253 (124.207.38.253) 北京市 鹏博士宽带

7 * * * (有的就是这么设置,便于隐藏)

8 10.10.1.1 (10.10.1.1) 4.997 ms 本地局域网

9 218.241.251.105 (218.241.251.105) 北京市 鹏博士宽带

10 218.241.253.241 (218.241.253.241) 北京市 鹏博士宽带

11 218.241.245.181 (218.241.245.181) 北京市 鹏博士宽带

12 202.99.1.173 (202.99.1.173) 北京市 鹏博士宽带

13 * * *

14 * * *

15 202.106.42.97 (202.106.42.97) 北京市北京市 联通

16 61.148.154.97 (61.148.154.97) 北京市 联通

17 * * *

18 61.148.146.194 (61.148.146.194) 北京市 联通

19 61.49.168.98 (61.49.168.98) 北京市 联通

20 * * *

21 123.125.115.110 (123.125.115.110) 北京市 联通 (百度服务器)

那么我们就来了解一下traceroute的工作原理:Traceroute是用来侦测主机到目的主机之间所经路由情况的重要工具,也是最便利的工具。前面说到,尽管ping工具也可以进行侦测,但是,因为ip头的限制,ping不能完全的记录下所经过的路由器。所以Traceroute正好就填补了这个缺憾。Traceroute的原理是非常非常的有意思,它受到目的主机的IP后,首先给目的主机发送一个TTL=1(还记得TTL是什么吗?)的UDP(后面就 知道UDP是什么了)数据包,而经过的第一个路由器收到这个数据包以后,就自动把TTL减1,而TTL变为0以后,路由器就把这个包给抛弃了,并同时产生 一个主机不可达的ICMP数据报给主机。主机收到这个数据报以后再发一个TTL=2的UDP数据报给目的主机,然后刺激第二个路由器给主机发ICMP数据 报。如此往复直到到达目的主机。这样,traceroute就拿到了所有的路由器ip。从而避开了ip头只能记录有限路由IP的问题。

有人要问,我怎么知道UDP到没到达目的主机呢?这就涉及一个技巧的问题,TCP和UDP协议有一个端口号定义,而普通的网络程序只监控少数的几个号码较 小的端口,比如说80,比如说23,等等。而traceroute发送的是端口号>30000(真变态)的UDP报,所以到达目的主机的时候,目的 主机只能发送一个端口不可达的ICMP数据报给主机。主机接到这个报告以后就知道,主机到了,所以,说Traceroute是一个骗子一点也不为过

Traceroute程序里面提供了一些很有用的选项,甚至包含了IP选路的选项。

当我以为终于弄懂得时候,我发现还是太年轻了,在windows我又手贱的试了一下,又发现了问题。为什么windows下也能ping通,但不能traceroute呢?

欲知结果如何,还是待我知道以后。

linux网络目的主机不可达,Linux可以Ping通但不能traceroute相关推荐

  1. Linux系统下使用桥接模式,无法ping通外网解决问题方案!

    Linux系统下使用桥接模式,无法ping通外网解决问题方案! 参考文章: (1)Linux系统下使用桥接模式,无法ping通外网解决问题方案! (2)https://www.cnblogs.com/ ...

  2. 主机与ubuntu可以互相ping 通,主机可以上网,但是ubuntu无法上网

    1.在ubuntu 中安装git软件,以便以后修改uboot, kernel中的记录. 使用命令:sudo apt-get install git 2.现在在/etc/network/interfac ...

  3. 大数据之linux网络,主机名配置

     Linux是什么? Linux是一款开源免费的操作系统.Linux是一套免费使用和自由传播的类Unix操作系统,是一个基于POSIX和UNIX的多用户.多任务.支持多线程和多CPU的操作系统.Lin ...

  4. Linux网络编程 | 定时事件 :Linux常见定时方法、定时器链表、空闲断开

    文章目录 Linux定时方法 定时器链表 空闲断开 Linux定时方法 Linux中为我们提供了三种定时方法,分别是Socket超时选项,SIGALRM信号,I/O复用超时参数.下面一一对其进行介绍. ...

  5. linux可以ping通,Linux可以Ping通但不能traceroute

    今天闲来无事,想弄清楚学校至百度服务器的网络问题,结果不试不知道,一试吓一跳.完全出乎我的意料.我们学校的网关是172.21.6.254,172.21.4.254和172.21.7.254.发现可以p ...

  6. 配置网件公司的三层交换机的方法,以及两台linux pc之间用交换机连接,可以ping通

    硬件环境: PC1(台式机): SUSE linux 2.0 Switch: prosafe m4100-D12G(网件公司的三层交换机) PC2(笔记本): ubuntu 18.04 连接方式:pc ...

  7. 方法:如何解决用MFC实现的ping功能中把目标主机不可到达的当成ping通的问题...

    http://www.cnblogs.com/xuesongshu/ 网上查到的资料能实现ping功能,但是都有一个问题,它只检测是否存在错误,而不检测ICMP数据包是哪个机器回复的,这样造成一种错误 ...

  8. 方法:如何解决用MFC实现的ping功能中把目标主机不可到达的当成ping通的问题

    转载请注明来源: http://www.cnblogs.com/xuesongshu/ 网上查到的资料能实现ping功能,但是都有一个问题,它只检测是否存在错误,而不检测ICMP数据包是哪个机器回复的 ...

  9. Linux网络故障排查命令(ifconfig、ping、telnet、netstat、lsof、nc、curl、tcpdump)

    目录 ifconfig -s,显示网卡信息的精简列表 -a.up.down 将IP地址绑定到某个网卡,以及解绑操作 ping telnet netstat lsof nc 模拟一个服务器程序和客户端程 ...

最新文章

  1. C#正则表达式获取组名,按照组名输出匹配内容
  2. 正则表达式获取中括号里面的内容
  3. ubuntu16.04(其他版本也可)批量修改图片名---shell编程
  4. Python里面使用的容器
  5. 教师计算机专业知识考试试题及答案,信息技术学科教师基本功测试题及答案
  6. 【论文解读】异构图表示学习综述 韩家炜组
  7. 大学生 生活小技巧:利用插件(Tampermonkey )学习网课 | 查题
  8. 咖啡电子秤芯片方案SIC8833
  9. 黑马程序员3天带你玩转Python深度学习TensorFlow框架学习笔记
  10. 前端学习-吃豆子游戏设计
  11. 05 mapABC示例 leo
  12. RMS数据采集分布式架构
  13. 教你通过bigemap和geojson获取echarts精确到乡镇、街道的地图json数据
  14. 自动生成代码的chm格式帮助文档
  15. 8个常见的研究者认知偏误陷阱(转载)
  16. 获取本周周一和周末日期、上周周一和周末、下周周一和周末
  17. C语言:统计句子中元音字母的个数
  18. 【学术相关】女教师的两难困境:当生育遇上考核
  19. 安装vs2015后C#注释变为英文
  20. Oracle分区表的使用

热门文章

  1. C语言中switch case语句的实现
  2. 计算机关闭的图标,怎么关闭win7系统操作中心图标?win7系统关闭操作中心图标的方法...
  3. 2017-2018 山东大学数据库试题
  4. Mac删除IntelliJ IDEA
  5. windows下实现socketpair函数
  6. Vue实现鼠标悬浮隐藏与显示图片效果 @mouseenter 和 @mouseleave事件
  7. java对象返回数组对象_Java 对象数组
  8. 简析JavaScript异步编程
  9. 关于withRouter的原理和用法
  10. java枚举类-字典翻译