Pingコマンドの問い合わせ

Pingコマンドを探検

1.     Pingコマンドを使用しています。

まず、私たちは私たちにインスピレーションのWindowsを与えてみましょう

Cmdを直接入力のPing

システムは、pingコマンドの主な目的は、テストネットワークの接続性にある、私たちにヒントをたくさん与えています

含みます:

  1. 特定のアドレスへの接続テストIP

ピング特定のIPアドレスが成功する場合は、明らかに正常な通信を示してい

しかし、それは注目に値する、pingがどこにも彼がアクセスできない、一般的にgithub.comを意味しません

あなたもアクセスすることができた場合でもpingできません

   2.インターネットへの接続をテスト

私たちは、多くの場合、pingの使用www.baidu.comを通常の状況下では、ネットワーク接続状態をテストし、pingをBaiduのネットワーク異常が失敗=

   3.テストネットワーク・プロトコルの作業を行います

マシンの代わりにループバックアドレス127.0.0.1にping 127.0.0.1は、ネットワークプロトコルの成功は仕事をしません説明できない場合

 

2.     Pingのwww.baidu.com与のping 127.0.0.1

私たちは、pingに傍受データパケットにwiresharkの使用www.baidu.com

 

 

パケット

 

  

かどうかパケットからcmdの出力から、見ることができるWindowsのコンソールコマンドpingのpingリクエストは、応答のために4回を待つ送られました

Pingの127.0.0.1

状況は少し特殊です。

CMD:

Wiresharkの

それ以外の場合は特別なセット小さいパケットよりもキャプチャWiresharkのない限りデータは、マシンを残したことがないので通信は、良いを参照してくださいが、パケットをキャプチャすることはできませんが。

3.     JAVA(Kotlin)とPing

Javaのネイティブハンドリングネットワークを要求されています

java.net.HttpURLConnectionの

しかし、あなたがリクエストメソッドを指定した場合は、Pingのための例外がスローされます

httpURLConnection.setRequestMethod( "PING")。

,这是因为HttpURLConnection类不支持Ping方式

private static final String[] methods = new String[]{"GET", "POST", "HEAD","OPTIONS", "PUT", "DELETE", "TRACE"};

一般通过InetAddress类.isReachable (int timeout)方法来代替ping的作用,以验证可达性

我们研究这个过程是否和ping过程完全一致:

通过两个步骤

  1. Ping www.baidu.com(使用Kotlin实现)
fun main(args:Array<String>){

val address: InetAddress
try {
        address = InetAddress.getByName("www.baidu.com")
        println("Name:" + address.hostName)
        println("Addr:" + address.hostAddress)
        println("Reach:" + address.isReachable(3000))
        println(address.toString())
    } catch (e: Exception) {
        e.printStackTrace()
    }
}

输出:

往返报文

从这个角度看,Java中的.isReachable似乎是通过Ping实现的,但第二次试验说明这两个过程并不完全相同

 

  2.这一次我们指定Ip地址而不是www.baidu.com

address = InetAddress.getByName("180.101.49.12")

输出

仍然可达,但捕获的报文有所区别:

可以看到多了三个NBNS报文

所以我们得出结论:Java中的InetAddress类的.isReachable方法可以起到和Ping相同的作用,有些时候和Ping相同,但不总和Ping完全的等价。

おすすめ

転載: www.cnblogs.com/Miliapus/p/11954116.html