zoukankan      html  css  js  c++  java
  • 《跟唐老师学习云网络》 -第5篇 Ping喂报文

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

    一、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

  • 相关阅读:
    10 种保护 Spring Boot 应用的绝佳方法
    Redis 如何分析慢查询操作?
    Spring Boot 主类及目录结构介绍
    Redis 再牛逼,也得设置密码!!
    Spring Data Redis 详解及实战一文搞定
    Spring Boot Redis Cluster 实战干货
    超详细的 Redis Cluster 官方集群搭建指南
    Redis Linux 安装运行实战全记录
    hdu 4790 Just Random (思路+分类计算+数学)
    poj 1328 Radar Installation(贪心)
  • 原文地址:https://www.cnblogs.com/huaweicloud/p/11861440.html
Copyright © 2011-2022 走看看