从ping和ping6说起

2023-11-13

    1、Windows中的ping, ping6: 发送ICMP ECHO_REQUEST到网络主机。ping6是ICMPv6版的ping实现。
    -t:不停地ping指定的主机,要查看统计信息并继续ping,按Ctl+Break;要停止按Ctl+C。
    -a:把地址解析成主机名(NetBios名)。

    从上面就可以知道IP为192.168.1.21的计算机NetBios名为iceblood.yofor.com。
    -n count:发送count指定的Echo数据包数。在默认情况下,一般都只发送四个数据包,通过这个命令可以自己定义发送的个数,
对衡量网络速度很有帮助,比如我想测试发送50个数据包的返回的平均时间为多少,最快时间为多少,最慢时间为多少就可以通过以
下获知:

    从以上我就可以知道在给9.125.92.231发送50个数据包的过程当中,返回了48个,其中有两个由于未知原因丢失,还显示了这
48个数据包当中返回速度最快的、最慢的,以及平均速度。
    -l size:定义echo数据包大小。在默认的情况下windows的ping发送的数据包大小为32 byte,我们也可以自己定义它的大小,
但有一个大小的限制,就是最大只能发送65500 byte,也许有人会问为什么要限制到65500 byte,因为Windows系列的系统都有一个
安全漏洞(也许还包括其他系统),就是当向对方一次发送的数据包大于或等于65532时,对方就很有可能挡机,所以微软公司为了
解决这一安全漏洞于是限制了ping的数据包大小。虽然微软公司已经做了此限制,但这个参数配合其他参数以后危害依然非常强大,
比如我们就可以通过配合-t参数来实现一个带有攻击性的命令:

    这样它就会不停的向192.168.1.21计算机发送大小为65500 byte的数据包,如果你只有一台计算机也许没有什么效果,但如果
有很多计算机那么就可以使对方完全瘫痪,我曾经就做过这样的试验,当我同时使用10台以上计算机ping一台Win2000 Pro系统的计
算机时,不到5分钟对方的网络就已经完全瘫痪,网络严重堵塞,HTTP和FTP服务完全停止,由此可见威力非同小可。
    -f:在数据包中发送“不要分段”标志。在一般你所发送的数据包都会通过路由分段再发送给对方,加上此参数以后路由就不会
再分段处理。
    -i TTL:指定TTL值在对方的系统里停留的时间。此参数同样是帮助你检查网络运转情况的。
    -v TOS:将“服务类型”字段设置为 tos 指定的值。
    -r count:记录计数跃点的路由,即在“记录路由”字段中记录传出和返回数据包的路由。在一般情况下你发送的数据包是通过一个个路由才到达对方的,但到底是经过了哪些路由呢?通过此参数就可以设定你想探测经过的路由的个数,不过限制在了9 个,也就是说你只能跟踪到9个路由,如果想探测更多,可以通过其他命令实现。下面示例为发送一个数据包,最多记录9个路由:

    从上面我就可以知道从我的计算机到202.96.105.101一共通过了202.107.208.187 ,202.107.210.214 , 61.153.112.70 , 61.153.112.89 , 202.96.105.149 , 202.96.105.97这几个路由。
    -s count:指定count个跃点数的时间戳。此参数和-r差不多,只是这个参数不记录数据包返回所经过的路由,最多也只记录4个。
    -j host-list:记录指定主机列表的松散源路由数据包。连续主机可以被中间网关分隔(路由稀疏源),IP允许的最大数量为9。
    -k host-list:记录指定主机列表的严格源路由数据包。连续主机不能被中间网关分隔(路由严格源),IP允许的最大数量为9。
    -w timeout:等待每次回复的超时间隔,单位为毫秒。此参数没有什么其他技巧。
    ping命令的其他技巧:通过ping回显的TTL值判断目标主机的系统类型是Windows还是UNIX/Linux。
    TTL是IPv4协议包头中的一个值,它告诉网络路由器包在网络中的时间是否太长而应被丢弃。有很多原因使包在一定时间内不能被传递到目的地。例如,不正确的路由表可能导致包的无限循环。一个解决方法就是在一段时间后丢弃这个包,然后给发送者一个报文,由发送者决定是否要重发。TTL的初值通常是系统缺省值,是包头中的8位的域。TTL的最初设想是确定一个时间范围,超过此时间就把包丢弃。由于每个路由器都至少要把TTL域减1,TTL通常表示包在被丢弃前最多能经过的路由器个数。当记数到0时,路由器决定丢弃该包,并发送一个ICMP报文给最初的发送者。ping和tracerouter都使用TTL值以尝试到达给定的主机或跟踪到那个主机的路由。traceroute把包的TTL值设得较小,使它在到达目的地的路上被各个路由器连续的丢弃。发出包到收到返回的ICMP报文之间的时间用来计算从一个路由器到另一个路由器的时间。
    一般不同操作系统的默认TTL值不同,因此我们通常可以通过ping回显的TTL值判断目标系统的类型,当然这是正确的,但不是TTL的功能,只是对TTL理解的一个应用。TTL的值可以修改。有些特殊的系统(如NIDS)会定义特殊的TTL值,以拒绝非法访问数据进入。我们在执行PING命令时可以用-i参数指定TTL值,以指定数据报被路由器丢弃之前允许通过的网段数量。大家可以将TTL设置为0,则该包将被立即丢弃,如ping -i 0 127.0.0.1。TTL是由发送主机设置的,以防止数据包不断在IP互联网络上永不终止地循环。转发IP数据包时,要求路由器至少将TTL减小1。
    常见操作系统的默认TTL值:
    Windows 95/98/ME系列:32
    Windows NT系列(2000/XP/7):128
    Linux系列:64
    UNIX系列:255
    详细的TTL默认值列表如下:

操作系统                            TCP传输        UDP传输
AIX                             60             30
DEC Patchworks V5             30             30
FreeBSD 2.1                     64             64
FreeBSD 3.4, 4.x                255            255
OpenBSD 2.6, 2.7                255            255
NetBSD                            255            255
HP-UX 9.0x                        30             30
HP-UX 10.01                    64            64
HP-UX 10.20                    255            255
Irix 5.3, 6.x                    60            60
UNIX                            255            255
Linux                            64            64
MacOS/MacTCP 2.0.x             60            60
OS/2 TCP/IP 3.0                64            64
OSF/1 V3.2A                     60             30
Solaris 2.x                     255         255
SunOS 4.1.3/4.1.4             60             60
Ultrix V4.1/V4.2A             60             30
VMS/Multinet                     64             64
VMS/TCPware                     60             64
VMS/Wollongong 1.1.1.1         128         30
VMS/UCX (latest rel.)         128         128
Windows 95/98/NT 3.51         32             32
Windows NT4.0/2000/XP/2003     128         128
Windows Vista/7/2008            128            128

    一般情况下Windows系列的系统返回的TTL值在100-130之间,而UNIX/Linux系列的系统返回的TTL值在240-255之间。当然这样的办法只是粗略地判断,因为TTL默认值在系统里是能被手动更改的(但是一般人不会去更改),例如,Windows系列的系统可以通过修改注册表键HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters中的DefaultTTL的值,如修改成000000ff则表示255。常用的值为255---FF,128---80,64----40,32----20。
    2、Linux中的ping和ping6: 发送ICMP协议的ECHO_REQUEST数据包给主机或网关,以获取ICMP ECHO_RESPONSE响应。ping命令主要用于确定网络和各外部主机的状态、跟踪和隔离硬件和软件问题、测试、评估和管理网络。每一个ECHO_REQUEST数据包有一个IP头和ICMP头,后跟一个timeval结构和数目不定的填充字节,以填充数据包中剩下的空间。ping6由于使用ICMPv6,因此还能发送节点信息查询(RFC4620)。
    ping命令每秒发送一个数据报并且为每个接收到的响应显示一行输出。它会计算信号往返时间和包丢失情况的统计信息,并且在完成之后显示一个简要总结。ping 命令在程序超时或当接收到SIGINT信号时结束。Host参数或者是一个有效的主机名或者是因特网地址。主要选项:
    -c count:指定发送的数据包个数。
    -f:使用洪泛ping。每一次发送 ECHO_REQUEST,都显示一个句号,而每接收到一个 ECHO_REPLY 信号,就显示一个退格。这就提供了一种对多少信息包被丢弃的信息的快速显示。如果没有设置时间间隔,则时间间隔默认为0,且响应包会尽快返回(或每秒100次,选择较快的一个)。只有超级用户可以使用这个选项。
    -i interval:设置包发送之间等待的时间间隔(秒数)。默认等待时间为1秒(在洪泛模式下则为0)。只有超级用户能设置小于0.2秒的值。
    -I:指定设备的源地址,可以是IP地址或设备名。
    -p pattern:指定多达16个填充字节去填充发送的数据包。这有利于诊断一个网络对数据依赖的问题。例如-p ff全部用1填充信息包。
    -R:记录路由。在ECHO_REQUEST包中包含RECORD_ROUTE选项,并且显示返回包中的路由缓存。注意IP头仅仅大到适合9个这样的路由。而且,许多主机和网关忽略这个选项。
    -r:信息包绕开正常的路由表以直接发送到目标主机。如果主机不在一个直接连接的网络上,将返回一个错误。这个选项的作用是可以通过一个没有路由经过的接口(用-I选项指定)来ping一台本地主机。
    -s:指定数据包的字节数大小,缺省是56,当和8字节的ICMP头合并时被转换成64字节的ICMP数据包。
    -t ttl:设置IP包的生存时间为ttl秒。
    -W timeout:设置等待回应的超时时间。
    ping的返回信息有"Request Timed Out"、"Destination Host Unreachable"和"Bad IP address",还有"Source quench received"。
    "Request Timed Out"这个信息表示对方主机可以到达到但是TIME OUT,这种情况通常是对方拒绝接收你发给它的数据包而造成数据包丢失。大多数的原因可能是对方装有防火墙或已下线,也有可能是本机的IP不正确和网关设置错误。
    (1)IP不正确:主要是IP地址设置错误或IP地址冲突,这可以利用ipconfig /all这命令来检查。在Windows下IP冲突的情况很少发生,因为系统会自动检测在网络中是否有相同的IP地址并提醒你是否设置正确。在NT中不但会出现"request time out"这提示,有时还会出现"Hardware error"这提示,这个信息比较特殊,不要被它的提示所迷惑。
    (2)网关设置错误:网关设置错误主要是网关地址设置不正确或网关没有帮你转发数据,还有就是可能远程网关失效。
    注意Windows下面对方主机联不上时(比如网络连接有故障),也会提示Request Timed Out,而在Linux下面则都是"Destination Host Unreachable"。
    "Destination Net Unreachable"这个信息表示对方主机不存在或者没有跟对方建立连接。这里要说明一下"destination host unreachable"和"time out"的区别,如果所经过的路由器的路由表中具有到达目标的路由,而目标因为其它原因不可到达,这时候会出现"time out",如果路由表中连到达目标的路由都没有,那就会出现"destination host unreachable"。
    当你在开始PING网络计算机时如果网络设备出错它返回信息会提示"destination host unreachable"。如果局域网中使用DHCP分配IP时,而碰巧DHCP失效,这时使用PING命令就会产生此错误。因为在DHCP失效时客户机无法分配到IP系统只有自设IP,它往往会设为不同子网的IP,所以会出现"Destination Host Unreachable"。另外子网掩码设置错误也会出现这错误。当然,网络线未接好,也是重要的产生原因。还有一个比较特殊就是路由返回错误信息,它一般都会在"Destination Host Unreachable"前加上IP地址说明哪个路由不能到达目标主机。这说明你的机器与外部网络连接没有问题,但与某台主机连接存在问题。如:From 192.168.148.226 icmp_seq=50 Destination Host Unreachable。
    "Bad IP address" 这个信息表示你可能没有连接到DNS服务器所以无法解析这个IP地址,也可能是IP地址不存在。"Source quench received"信息比较特殊,它出现的机率很少。它表示对方或中途的服务器繁忙无法回应。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

从ping和ping6说起 的相关文章

随机推荐

  • 秒杀linux下系统调用fork()面试题

    秒杀linux下系统调用fork 面试题 第一道题 在之前博客也写过这道题 http blog csdn net chdhust article details 8535915 题目 请问下面的程序一共输出多少个 1 2 3 4 5 6
  • 华为前副总裁李玉琢:华为无法培养出企业家

    1995年我刚进入华为不久 有人问我四通与华为的区别时 我脱口而出 四通能培养企业家而华为不能 这一点从任正非迟迟无法找到自己的 替手 就可见一斑 曾国藩说 做大事者 以寻找替手为第一要义 任正非也并非不知道这些道理 但是他的某些意识以及管
  • vscode配置C/C++环境(Windows)

    1 总体流程 2 下载CodeBlocks 下载该CodeBlocks的主要目的是为了使用其自带的MinGW 对于初学者在配置环境这步会少遇到一些坑 下载网址 http www codeblocks org downloads binari
  • 2017校园招聘腾讯笔试题 在线编程题

    2 二分查找 90 90 如果输入80 80 在0到90之间 记为1 继续二分 80在 45 90 之间 记为1 最后应该输出为111100 则输出111100 Java代码如下 import java util Scanner publi
  • SSM 使用C3P0 数据库连接池 提示如下错误信息:Method com/mchange/v2/c3p0/impl/NewProxyPreparedStatement.isClosed()Z

    产生上述问题的原因是 c3p0 jar版本过低 我用的是 c3p0 0 9 1 2 jar 解决办法 c3p0 0 9 1 2 jar 换成 c3p0 0 9 5 2 jar
  • 路由器、交换机、猫(Modem)、LAN、WAN、WLAN、VLAN基本概念

    电脑之间是通过TCP IP协议进行说话的 不同电脑之间准确的找到对方是通过IP地址实现的 不在同一个网络的电脑信息交互是通过网关来实现的 网关就是一个公网地址 由运营商下发的 DHCP服务器下发IP地址 通过DHCP服务端口UDP67和UD
  • 手机屏幕显示正常但是触摸有一部分出问题,是内屏坏了吗?保修期内手机该不该走官方售后?

    这个问题我亲身经历 我现在人就在华为官方售后 根据手机城小哥的说法 现在手机触摸和显示都是一体的 所以如果出现触摸有问题 内屏或者排线等甚至主板都有可能出问题 保修期内手机建议走官方售后 因为有可能不只是屏幕坏了 保修可以同时检查你手机的主
  • 2020-12-24如何在QT中增加函数

    关于如何在QT软件中增加函数的问题 比如在VS中可以这样增加函数 但是在QT中右键并不能如上图一样有这个ADD Member Function 所以应该怎么加呢 如下图所示 1 首先在对应头文件中增加函数声明 如图蓝色区域代码 2 在Sav
  • 关于inet_addr() 函数

    inet addr 将一个字符串格式的ip地址转换成一个uint32 t数字格式 但是需要注意的是 这个函数的返回值在大小端机器上是不同的 例如输入一个 192 168 0 1 的字符串 在内存中的排列 字节从低到高 0xC0 0xA8 0
  • 彻底搞清“SVM”

    文章目录 前言 一 SVM是什么 概述 二 线性SVM 2 1 决策面 方程 2 2 约束条件 以下可以证明 有约束条件和没约束条件的公式是一样的 2 3 线性SVM优化 三 非线性分类 3 1 核函数 总结 前言 分类分析 概念 通过构造
  • 3D点云重建原理及Pytorch实现

    3D点云重建原理及Pytorch实现 Pytorch Learning Efficient Point Cloud Generation for Dense 3D Object Reconstruction 一种Pytorch实现方法 学习
  • maven学习笔记--常用插件(plugins)和目标(goals)

    Maven 的核心其实不做什么实际的事情 除了解析一些 XML 文档 管理生命周期与插件之外 Maven 被设计成将主要的职责委派给一组 Maven 插件 这些插件可以影响 Maven 生命周期 提供对目标的访问 绝大多数 Maven 的动
  • “阿里巴巴官方终极版Java八股文开源,Java学习利器首次揭晓!“

    铜三铁四已经结束了 但还是有很多Java程序员没有找到工作或者成功跳槽 跳槽成功的也只是从一个坑中 跳入另一个坑中 在LZ看来 真正有意义的就业与跳槽 是要进入到一个有绝对潜力的行业或者薪资能实现爆炸式增长的 这件事不容易 但也没有想象的遥
  • Word文档误删怎样恢复?6种实用方法分享给你

    如果您曾经因为没有保存微软Word文档而丢失了所有工作 那么您就会明白疼痛是多么明显 幸运的是 自从在软盘上备份文件的黑暗时代以来 Word已经走过了漫长的道路 如今 如果您丢失了未保存的Word文档 可能仍然有一种方法可以恢复它 这个过程
  • Nodejs学习

    本周我们主要学习了Nodejs相关知识 我也整理了一些相关知识点 首先呢 我们要了解Nodejs不是一门语言 也不是库 不是框架 而是一个JavaScript运行时环境 也就是说它可以解析和执行JavaScript代码 我们知道 浏览器中的
  • ARTS挑战打卡第三周

    ARTS挑战 Algorithm 一周至少一道算法题 Review 阅读并点评至少一篇英文技术文章 Tip 学习至少一个技术技巧 总结和归纳在日常工作中所遇到的知识点 Share 分享一篇有观点和思考的技术文章 01 Algorthm le
  • 输出具有n个结点的所有不同的二叉树-增强前序遍历形式输出-C++

    我们知道具有n个结点的不同的二叉树的数量是个 这是一个卡塔兰数 那么如何确定这些二叉树是什么样子的呢 下面是博主的思路 我们还知道一个入栈序列的不同出栈序列的数量也是个 于是博主就想 这不是巧了么 既然他们的数量是一样的 而且均不相同 那么
  • unity 控制物体旋转的角度

    using System Collections using System Collections Generic using UnityEngine public class Main MonoBehaviour public float
  • 为“广东数字工商”保驾护航——Apusic应用服务器在广东省工商局的应用

    互联网经济时代 信息技术的变革改变了人们传统的工作 学习 生活和娱乐方式 同时对工商部门的信息化建设提出了挑战 如何利用信息技术改进工商工作 形成新的工作方式 已成为工商系统所关心的问题 数字工商 的提出 便是其中的佐证之一 数字工商 是指
  • 从ping和ping6说起

    1 Windows中的ping ping6 发送ICMP ECHO REQUEST到网络主机 ping6是ICMPv6版的ping实现 t 不停地ping指定的主机 要查看统计信息并继续ping 按Ctl Break 要停止按Ctl C a