zoukankan      html  css  js  c++  java
  • ping

    Ping命令(ICMP Echo)

    ping/?
    
    用法: ping [-t] [-a] [-n count] [-l size] [-f] [-i TTL] [-v TOS]
                [-r count] [-s count] [[-j host-list] | [-k host-list]]
                [-w timeout] [-R] [-S srcaddr] [-c compartment] [-p]
                [-4] [-6] target_name
    
    选项:
        -t             Ping 指定的主机,直到停止。
                       若要查看统计信息并继续操作,请键入 Ctrl+Break;
                       若要停止,请键入 Ctrl+C。
        -a             将地址解析为主机名。
        -n count       要发送的回显请求数。
        -l size        发送缓冲区大小。
        -f             在数据包中设置“不分段”标记(仅适用于 IPv4)。
        -i TTL         生存时间。
        -v TOS         服务类型(仅适用于 IPv4。该设置已被弃用,
                       对 IP 标头中的服务类型字段没有任何
                       影响)。
        -r count       记录计数跃点的路由(仅适用于 IPv4)。
        -s count       计数跃点的时间戳(仅适用于 IPv4)。
        -j host-list   与主机列表一起使用的松散源路由(仅适用于 IPv4)。
        -k host-list    与主机列表一起使用的严格源路由(仅适用于 IPv4)。
        -w timeout     等待每次回复的超时时间(毫秒)。
        -R             同样使用路由标头测试反向路由(仅适用于 IPv6)。
                       根据 RFC 5095,已弃用此路由标头。
                       如果使用此标头,某些系统可能丢弃
                       回显请求。
        -S srcaddr     要使用的源地址。
        -c compartment 路由隔离舱标识符。
        -p             Ping Hyper-V 网络虚拟化提供程序地址。
        -4             强制使用 IPv4。
        -6             强制使用 IPv6。
    

    Ping命令的原理
    Ping是类型为8的ICMP报文,ping程序在Windows、Linux以及unix下都可执行,该程序发送一份ICMP回显(Echo)请求给目标主机,并等待对方返回ICMP回显应答,如果源主机在一定时间内收到应答,则可以认为主机可达,如果不能ping到某台主机,则表明不能和这台主机建立连接。Ping程序一般用来探测主机与主机之间是否可以通信,并可以根据返回结果估计丢包率和网络时延。在Windows下,对于每个发送报文,默认情况下发送4个回显数据包,每个数据包含32字节的数据,计算机安装TCP/IP协议后即可以使用。在Linux下,默认情况下源主机向目标主机不停发送数据包,直到用户终止。
    ICMP协议通过IP协议发送,IP协议是一种无连接的、不可靠的数据包协议,因此Ping不通一个地址,并不一定表示这个IP一定不存在或者不在网络上,因为对方主机可能做了限制,比如安装了防火墙,针对这种情况,可采用其他的方式进行探测。
    Ping命令的使用详解
    Ping指令的基本格式:(Windows环境下)
    ping [-t] [-a] [-n count] [-l size] [-f] [-i TTL] [-r count] [-s count] [[-j host-list] | [-k host-list]][-w timeout] [-4] [-6] target_name
    ping指令的参数详解
    (1)-t:向指定计算机不停地发送数据包,按Ctrl+Break快捷键可以查看统计信息并继续运行,按Ctrl+C快捷键可终止运行。
    (2)-a:将地址解析为计算机名,就是以IP的格式显示网络地址。
    (3)-n count:发送count指定的ECHO数据包数,默认发送四次,其中count为正整数。
    (4)-l size:发送包含size指定的数据量大小的ECHO数据包,默认为32字节,最大值是65527字节。
    (5)-i TTL:指定Ping报文的生存时间,TTL是指在到达的底之前应经过多少网关。
    (6)-w timeout:指定超时时间间隔,单位为ms,默认为1000。
    Ping指令的基本格式(Linux环境下)
    ping [-LRUbdfnqrvVaA] [-c count] [-i interval] [-w deadline] [-p pattern] [-s packetsize] [-t ttl] [-I interface or address] [-M mtu discovery hint] [-S sndbuf][ -T timestamp option ] [ -Q tos ] [hop1 ...] destination
    ping 命令每秒发送一个数据报并且为每个接收到的响应打印一行输出。ping 命令计算信号往返时间和(信息)包丢失情况的统计信息,并且在完成之后显示一个简要总结。缺省情况是连续发送回送信号请求直到接收到中断信号(Ctrl-C)。
    (1)-A 不等待收到回复,继续发送数据包。
    (1)-c Count:指定要被发送(或接收)的回送请求数据包的数目,由Count变量确定。
    (2)-w timeout:这个选项仅和-c选项一起才能起作用。它使ping命令以最长的超时时间去等待应答(发送最后一个信息包后)。
    (3)-i Wait:在每个信息包发送之间等待被Wait变量指定的时间(秒数)。缺省值是在每个信息包发送之间等待 1 秒。这个选项与 -f 标志不兼容。
    (4)-q:指定静默输出。除了在启动和结束时显示总结行外什么也不显示。
    (5)-s PacketSize:指定要发送数据的字节数。缺省值是56,当和8字节的ICMP 头数据合并时被转换成64字节的ICMP数据。
    (6)-T ttl:指定多点广播信息包的生存时间为ttl秒。
    (7)-v:请求详细输出,其中列出了除回送信号响应外接收到的 ICMP 信息。
    几种常见的扫描方式及其原理
    ICMP Sweep
    根据Ping的实现机制,可以通过并行发送ICMP Echo Request数据包,同时探测多个目标主机,以提高探测效率,常用来寻找一个网络上的存活主机。与Ping命令与有相同的优缺点,简单,但容易被防火墙限制。
    用于ICMP Sweep(ICMP扫射)的工具有很多,在UNIX环境下有fping,Windows环境下有Pinger等工具,另外Nmap也提供了ICMP扫射的能力。
    Broadcast ICMP
    与ICMP Sweep一样,Broadcast ICMP(广播ICMP)也是利用了ICMP回显请求和ICMP回显应答这两种报文,但不同之处在于,广播ICMP需要向目标网络的网络地址或者广播地址发送一两个回显请求,这样就能收到目标网络中所有存活主机的ICMP回显应答,相比于ICMP回显请求轮询目标网络中的主机更简便。但是只有UNIX系统的主机会对目标地址为网络地址或广播地址的ICMP回显请求做应答,Windows系统的主机会将其忽略。
    Non-Echo ICMP
    有的目标主机阻塞了ICMP回显请求报文,但仍然可以通过使用其他类型的ICMP报文探测(非回显ICMP)目标主机是否存活。例如类型为17的ICMP报文(地址掩码请求),大多数主机在收到请求时都会发送一个应答,甚至有些主机还会发送差错的应答,所以也可以使用类型是17的ICMP报文来探测主机是否存活。
    Stamp Request(类型13) Reply(类型14)
    Information Request(类型15) Reply(类型16)
    Address Mask Request(类型17) Reply(类型18)
    TCP Sweep
    TCP Sweep(TCP扫描):根据TCP建立连接的过程可知,如果向目标发送一个SYN报文,无论是收到一个SYN/ACK还是一个RST报文,都表明目标处于存活状态。类似的,可以向目标发送一个ACK报文,按照协议规定,如果目标存活,将会收到一个RST报文,该方法同样可用于探测端口是否开放。
    UDP Sweep
    UDP Sweep(UDP扫射),与TCP扫射的原理类似,同样是根据建立UDP连接的协议规定,如果向目标的特定端口发送一个UDP数据报之后,接收到ICMP端口不可达到的错误,则表明目标处于存活状态,否则表明目标不在线或者目标的相应UDP端口是打开的。但是由于UDP和ICMP都不保证能到达,因此在一个数据报上看上去丢失的时候还需要重新发送新的UDP数据报以确认目标有没有发送错误信息。

    Windows和Linux下的Ping命令都只能完成对一个主机存活性的探测,不适合用作扫描网段内的存活主机,Fping是一款用于UNIX的工具,现在也提供了Windows平台下的版本。

    Fping是以并行的方式向列表中的所有IP地址发送ICMP报文回送请求,该工具的实现原理与Ping相同,无法探测到防火墙之后的主机。

  • 相关阅读:
    模拟112 题解
    python 虚拟环境--virtualenv
    Flask基础
    通过yum安装mysql数据
    Python中function(函数)和methon(方法)的区别
    Django之路由分发系统
    OpenGL Shader in OpenCASCADE
    A Simple OpenGL Shader Example II
    Make Helix Curve in OpenCASCADE
    A Simple OpenGL Shader Example
  • 原文地址:https://www.cnblogs.com/yzmy/p/14197568.html
Copyright © 2011-2022 走看看