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

一、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. NOIP模拟 35

    int乘爆见祖宗 难得地T3暴力打满 T1T2思路也都正确 然而T2没看出一个int乘爆直接滚粗.. 这谁抗的住啊... 跟天皇说我差点就rank1了 换来的只有一张奸笑的大脸和一堆垃圾的嘲讽 真巨啊 ...

  2. 常用git命令教程

    一.新建代码库 # 在当前目录新建一个Git代码库 $ git init # 新建一个目录,将其初始化为Git代码库 $ git init [project-name] # 下载一个项目和它的整个代码 ...

  3. python入门三元运算

    三元运算又称三目运算,是对简单条件语句的简写: a = 1 b = 2 c = ' ' c = a  if  a > b  else b 在上面中首先判断a是否大于b如果为真则c = a,如果为 ...

  4. day7-字符串格式化

    msg='i am %s my hobby is %s' % ('lhf','alex') # # %代表标识,固定格式 s代表传入的为字符串,该字符串可接受任何类型 # # %d ,只能接收数字 p ...

  5. 006.Kubernetes二进制部署ETCD

    一 部署ETCD集群 1.1 安装ETCD etcd 是基于 Raft 的分布式 key-value 存储系统,由 CoreOS 开发,常用于服务发现.共享配置以及并发控制(如 leader 选举.分 ...

  6. Potato Sacks

    Potato sacks come in different weight capacities (specified in pounds). Potatoes come in different w ...

  7. Conda/Miniconda/Anaconda 常用命令整理及介绍

    作者:HELO 出处:http://www.cnblogs.com/HELO-K 欢迎转载, 转载时请保留此声明, 谢谢! 在这里整理一份全一点的 Conda 常用命令, 方便大家日常使用时参考, 一 ...

  8. nyoj 412 Same binary weight ()

    Same binary weight 时间限制:300 ms  |  内存限制:65535 KB 难度:3   描述 The binary weight of a positive  integer ...

  9. MAC OS下编译apple跨平台的libevent库 (可延申到其它第三库)

    apple下的跨平台是指不同设备上的苹果系统以及同一系统在不同cpu体系的不同版本. 前面一篇介绍如何用ndk编译android跨平台的第三库,那样的方法却不能应用在apple上. 网上可以找到这么一 ...

  10. 基于Vue的日历组件

    可以标注重要日子 自己写的,可能不是特别很好,大家多提意见!!! 地址:https://github.com/jsLWQ/calendar