精华内容
下载资源
问答
  • ping 原理

    万次阅读 2018-10-04 21:22:51
    要想理解ping原理,我们首先来看一下ARP的报文格式 其中op: 1:表示arp请求 2:表示arp应答 3:表示rarp请求 4:表示rarp应答 接下来,我们来看一个同一广播域内的ping报文: 我们的host2想要去ping h...

    最近看了好多面试的题目,其中也被问到了关于ping的问题以及一些原理性的东西,于是拜读了很多人的博客,最后也是豁然开朗,决定总结一下,也是为了防止遗忘吧。

    要想理解ping的原理,我们首先来看一下ARP的报文格式
    arp报文格式
    其中op:

    1:表示arp请求
    2:表示arp应答
    3:表示rarp请求
    4:表示rarp应答
    

    接下来,我们来看一个同一广播域内的ping报文:
    在这里插入图片描述
    我们的host2想要去ping host1,那么主机1就要封装二层报文,首先host2会查看自己的MAC地址表,看有没有host1的地址,如果没有,host2就会向外部发送ARP广播包
    ARP帧报文格式如下:(省略了arp报文的硬件类型,上层协议类型,MAC地址长度,IP地址长度)

    目的MAC 源MAC 帧类型 op 发送者MAC 发送者IP 目标MAC 目标IP
    FF-FF-FF-FF-FF-FF 52-54-00-00-11-22 0806 1 52-54-00-00-11-22 192.168.1.2 00-00-00-00-00-00 192.168.1.1

    首先,我们的交换机接收到报文以后,会查询交换机的MAC地址表(具有学习功能),如果有host1的MAC地址,直接返回给host2;如果没有,交换机就会向所有端口发送ARP广播,其他端口上的主机发现以后,如果目标不是自己,就会丢弃报文;直到host1主机接收到了报文以后,就会响应host1的MAC地址是多少,同时学习主机host2的MAC地址,并按照同样格式的ARP报文返回给host2.

    host1返回的ARP帧报文:

    目的MAC 源MAC 帧类型 op 发送者MAC 发送者IP 目标MAC 目标IP
    52-54-00-00-11-22 52-54-00-00-11-11 0806 2 52-54-00-00-11-11 192.168.1.1 52-54-00-00-11-22 192.168.1.2

    这个时候,主机host2已经学习到了host1的MAC地址,于是发送icmp报文

    目的地址 源地址 源IP 目标IP ICMP报文
    52-54-00-00-11-11 52-54-00-00-11-22 192.168.1.2 192.168.1.1 Echo Request

    host1收到报文之后,会复

    目的地址 源地址 源IP 目标IP ICMP报文
    52-54-00-00-11-22 52-54-00-00-11-11 192.168.1.1 192.168.1.2 Echo Answer

    接下来,我们来看一看不同广播域之间的ping
    在这里插入图片描述
    首先要确保全网可达!!!
    如果我们的host2 还想ping主机,host2得先去找网关转发,但是如果说,它也不知道网关的情况下怎么办呢?它就会像ping host1那样,先发送ARP报文,确定网关的mac 然后发送icmp报文交给路由器。
    我们省略arp报文
    host2发送ICMP报文至网关

    目的地址 源地址 源IP 目标IP ICMP报文
    52-54-00-00-11-33 52-54-00-00-11-22 192.168.1.2 192.168.2.1 Echo Request

    当路由器接收到来自host2的icmp报文之后,发现目的地址的IP为192.168.2.1,查询路由发现,得找一个出去的接口,于是去掉原来的mac地址头,加上自己的mac地址头并且向host3转发,(如果网关也没有host3的mac,也得发送ARP报文问询,并且路由器的端口也能学习主机的mac地址,主机host3也能学习路由器的MAC地址),具体报文如下:

    目的地址 源地址 源IP 目标IP ICMP报文
    52-54-00-00-11-55 52-54-00-00-11-44 192.168.1.2 192.168.2.1 Echo Request

    主机host3已经学到了路由器的mac,这会就会返回icmp报文

    目的地址 源地址 源IP 目标IP ICMP报文
    52-54-00-00-11-44 52-54-00-00-11-55 192.168.2.1 192.168.1.2 Echo Answer
    展开全文
  • ping原理

    2011-03-25 10:39:00
    但有时候我们会碰到单方向Ping通的现象,例如通过HUB或一根交叉线连接的在同一个局域网内的电脑A、B,在检查它们之间的网络连通性时,发现从主机A Ping 主机B正常而从主机B Ping 主机A时,出现“超时无应答”错误。...

    当网络出现问题时,我们最常用的测试工具就是“Ping”命令了。但有时候我们会碰到单方向Ping通的现象,例如通过HUB或一根交叉线连接的在同一个局域网内的电脑A、B,在检查它们之间的网络连通性时,发现从主机A Ping 主机B正常而从主机B Ping 主机A时,出现“超时无应答”错误。为什么呢?

      要知道这其中的奥秘,我们有必要来看看Ping命令的工作过程到底是怎么样的。

      假定主机A的IP地址是192.168.1.1,主机B的IP地址是192.168.1.2,都在同一子网内,则当你在主机A上运行“Ping 192.168.1.2”后,都发生了些什么呢?

      首先,Ping命令会构建一个固定格式的ICMP请求数据包,然后由ICMP协议将这个数据包连同地址“192.168.1.2”一起交给IP层协议(和ICMP一样,实际上是一组后台运行的进程),IP层协议将以地址“192.168.1.2”作为目的地址,本机IP地址作为源地址,加上一些其他的控制信息,构建一个IP数据包,并在一个映射表中查找出IP地址192.168.1.2所对应的物理地址(也叫MAC地址,熟悉网卡配置的朋友不会陌生,这是数据链路层协议构建数据链路层的传输单元——帧所必需的),一并交给数据链路层。后者构建一个数据帧,目的地址是IP层传过来的物理地址,源地址则是本机的物理地址,还要附加上一些控制信息,依据以太网的介质访问规则,将它们传送出去。

      主机B收到这个数据帧后,先检查它的目的地址,并和本机的物理地址对比,如符合,则接收;否则丢弃。接收后检查该数据帧,将IP数据包从帧中提取出来,交给本机的IP层协议。同样,IP层检查后,将有用的信息提取后交给ICMP协议,后者处理后,马上构建一个ICMP应答包,发送给主机A,其过程和主机A发送ICMP请求包到主机B一模一样。

      从Ping的工作过程,我们可以知道,主机A收到了主机B的一个应答包,说明两台主机之间的去、回通路均正常。也就是说,无论从主机A到主机B,还是从主机B到主机A,都是正常的。那么,是什么原因引起只能单方向Ping通的呢?

      一、安装了个人防火墙

      在共享上网的机器中,出于安全考虑,大部分作为服务器的主机都安装了个人防火墙软件,而其他作为客户机的机器则一般不安装。几乎所有的个人防火墙软件,默认情况下是不允许其他机器Ping本机的。一般的做法是将来自外部的ICMP请求报文滤掉,但它却对本机出去的ICMP请求报文,以及来自外部的ICMP应答报文不加任何限制。这样,从本机Ping其他机器时,如果网络正常,就没有问题。但如果从其他机器Ping这台机器,即使网络一切正常,也会出现“超时无应答”的错误。

      大部分的单方向Ping通现象源于此。解决的办法也很简单,根据你自己所用的不同类型的防火墙,调整相应的设置即可。

      二、错误设置IP地址

      正常情况下,一台主机应该有一个网卡,一个IP地址,或多个网卡,多个IP地址(这些地址一定要处于不同的IP子网)。但对于在公共场所使用的电脑,特别是网吧,人多手杂,其中不泛有“探索者”。曾有一次两台电脑也出现了这种单方向Ping通的情况,经过仔细检查,发现其中一台电脑的“拨号网络适配器”(相当于一块软网卡)的TCP/IP设置中,设置了一个与网卡IP地址处于同一子网的IP地址,这样,在IP层协议看来,这台主机就有两个不同的接口处于同一网段内。当从这台主机Ping其他的机器时,会存在这样的问题:

      (1)主机不知道将数据包发到哪个网络接口,因为有两个网络接口都连接在同一网段;

      (2)主机不知道用哪个地址作为数据包的源地址。因此,从这台主机去Ping其他机器,IP层协议会无法处理,超时后,Ping 就会给出一个“超时无应答”的错误信息提示。但从其他主机Ping这台主机时,请求包从特定的网卡来,ICMP只须简单地将目的、源地址互换,并更改一些标志即可,ICMP应答包能顺利发出,其他主机也就能成功Ping通这台机器了。

     

     

    转自:http://www.ppcn.net/n529c14.aspx

    展开全文
  • 文章目录一、ping原理1. 在同一网段内:2. 在不同网段内:二、Traceroute原理 一、ping原理 ping主要是用来探测主机和主机之间是否可以进行通信,如果不能ping到某台主机,表示不能与这台主机建立连接。ping使用的是...

    一、ping原理

    ping主要是用来探测主机和主机之间是否可以进行通信,如果不能ping到某台主机,表示不能与这台主机建立连接。ping使用的是ICMP协议,他发送ICMP回送请求消息给目的主机。ICMP协议规定:目的主机必须返回ICMP回送应答消息给源主机,如果源主机在一定时间内收到应答,表明主机可达。ICMP协议是通过IP协议发送的,IP协议是无连接的,不可靠的数据报协议。
    ping是用来检测网络是否畅通或者网络连接速度的命令

    1. 在同一网段内:

    在主机 A 上运行“Ping 192.168.0.5”后,都发生了些什么呢?
    首先,Ping 命令会构建一个固定格式的 ICMP 请求数据包, 然后由 ICMP 协议将这个数据包连同地址“192.168.0.5”一起 交给IP 层协议,IP 层协议将以地址 “192.168.0.5”作为目的地址。本机 IP 地址作为源地址,加上一些其他的控制信息,构建一 个 IP 数据包,并想办法得到 192.168.0.5 的MAC 地址,以便交给数据链路层构建一个数据帧。关键就在这里,IP层协议通过机器B的IP地址和自己的子网掩码,发现它跟自己属同一网络,就直接在本网络内查找这台机器的 MAC,如果以前两机有过通信,在 A 机的 ARP 缓存表应该 有 B 机 IP 与其 MAC 的映射关系,如果没有,就发一个 ARP 请求广播,得到 B 机的 MAC, 一并交给数据链路层。后者构建一个数据帧,目的地址是 IP 层传过来的物理地址,源地址则是本机的MAC地址,还要附加上一些控制信息,依据以太网的介质访问规则,将它们传送 出去。 主机 B 收到这个数据帧后,先检查它的目的地址,并和本机的MAC地址对比,如符合, 则接收;否则丢弃。接收后检查该数据帧,将 IP 数据包从帧中提取出来,交给本机的 IP 层 协议。同样,IP 层检查后,将有用的信息提取后交给 ICMP 协议,后者处理后,马上构建 一个 ICMP 应答包,发送给主机 A,其过程和主机 A 发送 ICMP 请求包到主机 B 一模一样。

    2. 在不同网段内:

    在主机 A 上运行“Ping 192.168.1.4”后,开始跟上面一样,到了怎样得到 MAC 地址时,IP 协议通过计算发现 D 机与自己不在同一网段内,就直接将交由路由处理,也就是将路由的 MAC 取过来,至于怎样得到路由的 MAC,跟上面一样,先在 ARP 缓存表找,找不到就广播吧。路由得到这个数据帧后,再跟主机 D 进行联系,如果找不到,就向主机 A 返回一个 超时的信息。

    二、Traceroute原理

    Traceroute是用来侦测由源主机到目的主机所经过的路由的情况的重要工具,也是最简洁的工具,尽管ping可以进行侦测,但是ping受到IP头的限制(IP首部字段最多只能放9个IP地址),ping不能完全记录所经过的路由器,所以才会引入Traceroute。
    Traceroute原理:其实Traceroute的原理很简单,他收到目的主机IP后,首先给目的主机发送一个TTL=1(TTL指生存时间)的udp数据包,而经过的第一个路由器收到这个数据包之后,自动把TTL减去1,而TTL变为0之后,路由器就将这个数据包抛弃了,并同时产生一个主机不可达的ICMP超时数据报给主机。主机收到这个ICMP数据报以后,会发送一个TTL=2的数据报给目的主机,然后刺激第二个路由器给主机发送ICMP数据报,如此反复,直到到达目的主机。这样Traceroute就可以拿到所有路由器的IP,从而避开IP头只能记录有限路由的IP地址。
    那么我们怎么知道UDP到没到达目的主机呢?这就涉及一个技巧的问题,TCP和UDP协议有一个端口号定义,而普通的网络程序只监控少数的几个号码较小的端口,比如说80,比如说23,等等。而traceroute发送的是端口>30000(真变态)的UDP报,所以到达目的主机的时候,目的主机只能发送一个端口不可达的ICMP数据报给主机。主机接到这个报告以后就知道目的主机到了。

    参考:
    (1)https://blog.csdn.net/zhuying_linux/article/details/6770730
    (2)https://blog.csdn.net/inject2006/article/details/2139149
    (3)https://blog.csdn.net/m0_37947204/article/details/80273659
    (4)《TCP/IP详解卷1》

    展开全文
  • ping原理 & 测试操作

    千次阅读 2017-06-21 14:10:25
    ping原理:ping是一个用来测试网络连接的程序。它使用ICMP协议,请求目的地给予应答,它可以用来测试网络连通性、网络时延等,通常用来作为可用性的检查。它走在网络层,因此ping通不通与端口无关。利用网络上机器IP...

    ping原理:

      ping是一个用来测试网络连接的程序。它使用ICMP协议,请求目的地给予应答,它可以用来测试网络连通性、网络时延等,通常用来作为可用性的检查。它走在网络层,因此ping通不通与端口无关。

      利用网络上机器IP地址的唯一性,给目标IP地址发送一个数据包,再要求对方返回一个同样大小的数据包来确定两台网络机器是否连接相通,时延是多少。


    ping格式:

    ping [-dfnqrRv][-c 发送次数][-i 间隔秒数][-I (大写i)网络界面][-l (小写L)前置载入][-p 范本样式] [-s 数据包大小][-t 存活数值][主机名或IP地址]
    

    ping测试顺序:

    1、检查IP配置:ifconfig(Linux);ipconfig(Windows)

    2、ping 127.0.0.1:测试TCP/IP协议

    3、ping 本机IP:测试IP地址配置

    4、ping网关:测试网关连通性

    5、ping同网段其它机器:硬件设备检查

    6、ping 目标机器:测试到目标机器的连通性

    7、ping DNS地址:检查域名解析(特殊情况用)

    ping结果参数:

    parameter Annotations
    time 目标响应时间。
    ttl 生存时间(time-to-live),指数据包被路由器丢弃之前允许通过的网段数量,默认64。它是IP协议包中的一个值,它告诉网络,数据包在网络中的时间是否太长而应被丢弃。

      P.S. : 如要查看网关及局域网中的所有设备IP地址,可以查看这篇文章:查看网关及局域网中的所有设备IP地址



    展开全文
  • ping 原理与ICMP协议

    2016-12-09 14:57:18
    ping 原理与ICMP协议
  • ping 原理解析

    2020-08-19 22:10:54
    要想理解ping原理,我们首先来看一下ARP的报文格式 其中op: 1:表示arp请求 2:表示arp应答 3:表示rarp请求 4:表示rarp应答 1 2 3 4 接下来,我们来看一个同一广播域内的ping报文: 我们的host2想要去...
  • ping原理剖析

    2018-12-12 10:48:21
    一、「ping」命令的作用和原理? 简单来说,「ping」是用来探测本机与网络中另一主机之间是否可达的命令,如果两台主机之间ping不通,则表明这两台主机不能建立起连接。ping是定位网络通不通的一个重要手段。 ping...
  • ping原理及应用

    千次阅读 2014-03-25 16:57:17
    ping原理及应用 ——ICMP和PING(来源于《TCP/IP详解一》) ICMP协议(Internet控制报文协议) ICMP经常被认为是IP层的一个组成部分。它传递差错报文以及其他需要注意的信息。 ICMP报文通常被IP层或更高层协议( T C P...
  • Ping原理详解

    2021-03-12 15:19:45
    关注「开源Linux」,选择“设为星标”回复「学习」,有我为您特别筛选的学习资料~前言Ping是排除设备访问故障的常见方法。它使用Internet控制消息协议ICMP(Internet C...
  • ping原理详解

    2020-03-27 09:11:37
    ping 是基于ICMP协议工作的,所以要明白 ping 的工作,首先我们先来熟悉ICMP 协议。 ICMP 是什么? ICMP 全称是Internet Control Message Protocol,也就是互联网控制报文协议。 里面有个关键词 ——控制,如何...
  • linux 的 ping 原理

    2019-07-07 13:50:11
    ping命令的工作原理是: ping命令是用来查看网络上另一个主机系统的网络连接是否正常的一个工具。 他向网络上的另一个主机系统发送ICMP报文,如果指定系统得到了报文,它将把报文原样传回给发送者,这有点像潜水艇的...
  • TCP/IP协议学习( 三 ) ---- ping原理 和 ICMP 1. 命令ping的用法和解析 网络连不通时候,我们最常用的命令 — ping 1.1 ping 的用法 ping 命令常常用于测试两台计算机之间的网络是否连通 , 例如 : ping ...
  • ping原理介绍

    千次阅读 2013-11-11 21:40:23
    Ping的实质 Ping程序的实质是利用了ICMP请求回显和回显应答报文,但ARP请求和应答报文也在其中起了非常重要的作用。 Ping的逻辑过程 以从PC1 ping PC2(命令:ping 11.1.1.2 -I 10.1.1.1)为例说明Ping的逻辑过程...
  • ping原理与ICMP协议

    千次阅读 2018-09-19 20:10:59
    ping原理  ping 程序是用来探测主机到主机之间是否可通信,如果不能ping到某台主机,表明不能和这台主机建立连接。ping 使用的是ICMP协议,它发送icmp回送请求消息给目的主机。ICMP协议规定:目的主机必须返回...
  • 一、ping 原理与ICMP协议 ping原理  ping 程序是用来探测主机到主机之间是否可通信,如果不能ping到某台主机,表明不能和这台主机建立连接。ping 使用的是ICMP协议,它发送icmp回送请求消息给目的主机。...
  • Ping原理和ICMP协议

    2018-09-10 10:07:20
    ping原理  ping 程序是用来探测主机到主机之间是否可通信,如果不能ping到某台主机,表明不能和这台主机建立连接。ping 使用的是ICMP协议,它发送icmp回送请求消息给目的主机。ICMP协议规定:目的主机必须返回...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 3,230
精华内容 1,292
关键字:

ping原理