【摘要】 这一章节你的角色是国王,你要派一个小兵去对方打探一下。是站在你的角度看这个小兵。哦,对了,这个小兵的名字叫“喂”。

一、Ping命令介绍

ping就是用来检测一下网络能不能跟对方互通,类似:“大哥,在么?”,“哥在。”,于是你就安心了。为啥你就安心了呢,因为你害怕孤单(汗,其实因为网络不通你啥也玩不了)。

上一节你都学会了路怎么走,咱走一个呗?走一个就是派个小兵帮你走一趟,这个小兵名字叫“喂”。

#ping 10.184.43.7

这个时候,就从本机发出一个报文“喂”,从哪个网卡发出,走到哪个中转站,都在路怎么走章节说过。

小兵派出后,有好几种命运等着他:

1. 没有路到达对方,小兵失败而归。相对来说,这种小兵还是很幸福了。

2. 悲催一点,他半路找不着对方,迷路(失)了。

3. 最惨的情况,路上设置了机关,他在半路被杀了。

4. 好一点的,他到达了对方,但是对方派出的使者却没能到你这。

5. 完美,他成功到达对方,对方的回访使者也回来到你这里了。

其中第二种情况,其实就是对方的“喂”使者出现了3或者4的情况。所以这里大概就三种情况:

1. 成功

2. 没反应

3. 很明确的不通

1.成功

ping报文是ICMP协议中的一种 (就好比TCP协议中的syn,syn报文只是TCP协议中的一种)。

而ICMP协议是与TCP同级的,也就是在IP协议之上的。

ICMP / TCP / UDP 这三个小伙伴,你都熟了以后,一般网络问题都不是问题。

Mac层 -> IP层 -> 三兄 弟

2. 没反应

当你ping对方的时候,一直么有反应,卡住了一样:

# ping 10.184.149.249

PING 10.184.149.249 (10.184.149.249) 56(84) bytes of data.

^C

--- 10.184.149.249  ping statistics ---

107 packets transmitted, 0 received, 100% packet loss, time 106545ms

直到按了 Ctrl + C 才告诉你ping不通(或者直接报 Time Out),现象就是包全部都丢了。

大概意思就是:你这个国王,派出小兵后,一直鸟无音讯,你望眼欲穿啊。。特别令你难过的是,你都派出一堆小兵了啊 T_T~

这种情况就是大家经常遇到的为ping不通的问题,特别是云计算平台里面。基本问题你大概也猜到了,要么你的小兵没能到对方,要么就是对方是回访使者没能回到你这里。那什么情况会导致你的小兵不知道跑哪里去了呢?这种问题,从本机视角是很难发现为什么不通的,也很难知道你的小兵到底跑到哪里被 干掉了,毕竟本机和目的之间可能有很多的中转站。

怎么定位呢?其实也很简单,那就是开启上帝模式,从全局角度去看看小兵到哪里了。直接派上帝(这里就是你自己了)去对方目的地盯着(抓包),看看“喂”报文有没有过来。

有两种情况,分别讨论:

1. 目的地没有收到“喂”报文

2. 目的地收到了“喂”报文

2.1 没有收到“喂”报文

如果目的地没有收到ICMP报文,但是有收到ARP请求(“喂”使者的探路哨兵,ARP章节会介绍),那说明网络连接是好的,只是ICMP不通,八成就是网络安全组把ICMP报文给ban了。

如果目的地很安静,什么都没有收到。那么咱们只能把上帝再往前移一移了,放到中途的中转站看看咱们的这个“喂”使者有没有到达中转站。找出最后能到达的中转站,然后再从这一站开始重新ping目的地。

2.2 有收到“喂”报文

如果收到了ICMP报文,那么说明来的路是通的,只是回去受阻。那你就反过来从目的地开始ping一下对方嘛,这个不就是回到了上面提到的定位方法了么。

有人会问,有没有可能A->ping->B的时候,B能收到报文,但是响应回不来。反过来从B->ping->A,就是通的。或者B->ping->A的时候,同样是报文也能到A,但是响应回不到B。

当然有这种情况了,而且经常遇到,A可以ping通B,B却ping不通A。这种情况一般都是网络安全组的设置导致的。(特别在云计算平台中)安全组大都涉及iptables的规则。所以这里就得分析iptable表对报文的丢包统计,把导致阻塞的那条安全组规则放通就可以了。iptables介绍见后续对应章节。

3. 目标不可达

ping目标的时候,直接结果就是不可达。

# ping 172.17.10.1

PING 172.17.10.1 (172.17.10.1) 56(84) bytes of data.

From 10.120.175.166 icmp_seq=1 Destination Host Unreachable

From 10.120.175.166 icmp_seq=2 Destination Host Unreachable

这个也容易遇到,但其实非常容易解决。这个错误原因就是路由不通,要么是本机路由不通,要么就是中转站的路由不通。

大概意思就是:你这个国王,派出小兵后,虽然期待的对方使者没出现。好歹你的小兵回来了,然后跟你一把眼泪一把鼻涕哭诉:已经走了很多的路,战胜了多少的艰难险阻,但是没能完成出使任务有多么的惭愧。然后求你这个表面上是国王,实际上只是程序猿的家伙去定位一下。

好歹,你大概知道在哪个位置开始不通:

如果是本机直接路由不通,那消息就是:"Destination Host Unreachable,"

如果是中转站路由不通,那消息是:"Reply From < IP address >: Destination Host Unreachable,"

你直接到中转站去ping目的地,中转站就是上面的<IP address>,然后看看为什么路由不通。该中转站后面可能还有很多的中转站,你这个上帝要辛苦一下,把一路上不通的中转站都找出来,加上合理的路由。

二、总结

ping不通?先看路由!路由肯定没问题,那就是安全组搞怪喽!

怎么定位?开启上帝模式,到处抓包判断“喂”到哪里了~

作者:tsjsdbd

《跟唐老师学习云网络》 -第5篇 Ping喂报文的更多相关文章

  1. 【华为云技术分享】跟唐老师学习云网络 : Kubernetes网络实现

    当今K8s独霸天下之时,咱们站在更高的角度,好好的看看K8s网络是以什么理念构筑的.以及一个容器集群的好保姆,是如何分别照顾 南北流量和东西流量的. 一.简单介绍下Kubernetes 略..容器集群 ...

  2. 【跟唐老师学习云网络】 - 第7篇 Tcpdump大杀器抓包

    [摘要] 前面章节的网络协议栈相关的信息建议大家多学习一遍,因为这些都是最基础的东西,想玩好云网络必备基本功.. 一.上帝视角 之前提到过定位问题可以开启上帝视角,那么如何开启就要依靠tcpdump这 ...

  3. 《跟唐老师学习云网络》 -第4篇 router路咋走啊【华为云技术分享】

    [摘要] 好了,到这里至少你应该能看懂路由表信息了.给你一个目的IP,你也应该知道它会使用哪一条路由了. 路怎么走就看骚年你了~ 一.路由 其实关于网络大家遇到最多的问题就是:卧 槽,为什么不通啊! ...

  4. 【跟唐老师学习云网络】-第8篇 iptables - filter过滤功能

    [摘要] 前面的各种协议已经可以把基本可用的物理网络世界给形成了,在正常情况下,它可以玩的很溜.比如组个局域网办公,或者打个联机魔兽争霸,都没有什么问题. 一.背景介绍 前面的各种协议已经可以把基本可 ...

  5. 【跟唐老师学习云网络】 - 第6篇 ARP你在哪

    [摘要] 这一章节你的角色就是ping报文这个"使者",你要去往目的地,然后回到本机.然而目的地路漫漫,不知道要经过多少个小地盘(局域网),没两把刷子也不好行走江湖.所以你作为使者 ...

  6. python基础学习笔记——网络编程(协议篇)

    一 互联网的本质 咱们先不说互联网是如何通信的(发送数据,文件等),先用一个经典的例子,给大家说明什么是互联网通信. 现在追溯到八九十年代,当时电话刚刚兴起,还没有手机的概念,只是有线电话,那么此时你 ...

  7. 带你熟悉云网络的“电话簿”:DNS

    摘要:无论你域名怎么解析,最终我还是要用IP和别人通信的.域名只是你的皮囊,IP才是你的灵魂. 本文分享自华为云社区<<跟唐老师学习云网络> - DNS电话簿>,作者: tsj ...

  8. OpenFlow能解决私有云网络VLAN问题么

    本文转载自:http://network.51cto.com/art/201202/314310.htm 在关于私有云网络的文章中,我们首先探讨了物理网络是否影响私有云.本文我们将讨论如何通过软件定义 ...

  9. 深入浅出新一代云网络——VPC中的那些功能与基于OpenStack Neutron的实现(一)

    VPC的概念与基于vxlan的overlay实现很早就有了,标题中的"新"只是一个和传统网络的相对概念.但从前年开始,不同于以往基础网络架构的新一代SDN网络才真正越来越多的走进国 ...

随机推荐

  1. jq实现多选框及反选

    1 效果图 2 html <div class="main"> <table> <tr> <th><input type=&q ...

  2. [网络]HTTP

    HTTP HTTP 简介 HTTP 协议是 Hyper Text Transfer Protocol(超文本传输协议)的缩写,是用于从万维网(WWW:World Wide Web)服务器传输超文本到本 ...

  3. Unity中用Mesh画一个圆环(二)

    中目标-生成完整面 在之前的内容中我们已经成功生成了一个面,接下来我们要生成剩下的面就很容易了. 我们把之前生成的面当作顶面,接着我们来生成底面. 还记得前面说过\(\color{#1E90FF}{D ...

  4. git回退之git reset

    参考 https://git-scm.com/book/zh/v2/Git-%E5%B7%A5%E5%85%B7-%E9%87%8D%E7%BD%AE%E6%8F%AD%E5%AF%86 https: ...

  5. Oracle instant client免安装Oracle客户端配置

    不想安装几个G的完整版client,可以直接通过安装包安装的时候选择instant client,如果没有安装包,也可以直接去官网下载一个即时客户端,64位的windows包大小只有78MB左右 传送 ...

  6. js控制文本显示的字数,超出显示省略号

    在css中我们说了用css控制文本显示几行,超出用省略号,但这个办法是要完全占满一整行的,偏偏就是有UI设计师就不这么干,是不是很想打他,哈哈哈,我不会的时候都这样子在心里骂设计师的,这么久那么爱搞特 ...

  7. hdu 1556 Color the ball (技巧 || 线段树)

    Color the ballTime Limit: 9000/3000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Tot ...

  8. hdu 1863 畅通工程 (prim)

    畅通工程Time Limit: 1000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total Submiss ...

  9. 【SpringBoot | Redis】SpringBoot整合Redis

    SpringBoot整合Redis 1. pom.xml中引入Redis相关包 请注意,这里我们排除了lettuce驱动,采用了jedis驱动 <!-- redis的依赖 --> < ...

  10. Hadoop之HDFS读写原理

    一.HDFS基本概念 HDFS全称是Hadoop Distributed System.HDFS是为以流的方式存取大文件而设计的.适用于几百MB,GB以及TB,并写一次读多次的场合.而对于低延时数据访 ...