%の後の文字(例では数字である)は、インターフェイス識別子です。これらの文字は、「ネットワークカード」と呼ばれることが多い「ネットワークインターフェイス」を識別するために使用されます。たとえば、パケットが有線イーサネットカードを使用するのか、ワイヤレスWi-Fiアダプターを使用するのかを判断するのに役立ちます。
私はあなたがMicrosoft Windowsを使用していると推測しています。インターフェース識別子として番号を使用します。
比較のポイントとして、Unixライクシステムは%記号の後に文字を使用する場合があります。例えば:fe80::71a3:2b00:ddd3:753f%eth0
その場合、インターフェイス識別子、eth0
はネットワークカードの名前と一致します。
Microsoft Windowsでは、ルーティングテーブルをチェックするコマンドラインのいずれかを使用して、(数値)インターフェイス識別子のリストを取得できます。netstat -nr
他のオペレーティングシステムでも動作するので" "が好きですが、Microsoft Windowsも " route print
"をサポートしています。報告される結果の出力は、おそらく画面全体に表示されるため、さらにパイプしない限り、スクロールバックする準備をしてください。
たとえば、私のシステムでは:
===========================================================================
Interface List
14...5c f9 dd 6d 98 b8 ......Realtek PCIe GBE Family Controller
12...e0 06 e6 7e fc 4e ......Bluetooth Device (Personal Area Network)
1...........................Software Loopback Interface 1
13...00 00 00 00 00 00 00 e0 Microsoft ISATAP Adapter
15...00 00 00 00 00 00 00 e0 Microsoft ISATAP Adapter #2
===========================================================================
この場合、fe80 :: 71a3:2b00:ddd3:753f%14のようなアドレスは、Realtek PCIe GBEファミリーコントローラーを参照します。「GBE」はギガビットイーサネットを指します。
さて、ここで注意が必要な部分があります。リモートアドレスにpingを実行する場合は、リモートシステムのIPv6アドレスを使用する必要がありますが、ローカルシステムのインターフェイス識別子が必要になる場合があります。そのため、たとえば、コンピューターAを使用していて、インターフェイス番号14に接続されているfe80 :: 1のローカルIPv6アドレスがあり、コンピューターBにpingを行い、fe80 :: 2のローカルIPv6アドレスが接続されている場合そのインターフェイス番号16、これは私が使用するものです:
ping fe80::2%14
そのため、ping
コマンドは、リモートコンピューターに属するリモートIPv6アドレス(fd80 :: 2)にICMPv6パケットを送信し、識別子14のインターフェイスを使用してそれを実行します。インターフェイス識別子14は、リモートシステムではなく、使用しているシステムの番号です。
では、なぜこれが必要なのか見てみましょう。
GoogleのIPv6アドレス(この回答を書いた時点では2607:f8b0:400a:802 :: 200e)にpingを実行したい場合、ルーティングテーブルは、2607:f8b0:400aで始まるアドレスを処理するネットワークカードをチェックします。 802。ルーティングテーブルは、2607:f8b0:400a:802で始まるアドレスを使用してネットワークカードがネットワークに直接接続されていないことを示しているため、コンピューターは「ゲートウェイ」アドレスを使用することになります。私が働いている組織の一部である別のネットワークに接続している場合、トラフィックをプライベートネットワークにルーティングする特別な「ゲートウェイ」アドレスを持っている可能性があります。この場合、より具体的なゲートウェイはないため、IPv6の「デフォルトゲートウェイ」を使用します。これが、リンクローカルアドレスを除き、ほとんどの場合IPv6が機能する方法です。これは、ほとんどの場合IPv4が機能する方法でもあります。
RFC 4291セクション2.8によると、IPv6を使用するすべてのコンピューターは、すべてのネットワークインターフェイスにリンクローカルアドレスを割り当てる必要があります。 RFC 4291セクション2.5.6は、リンクローカルアドレスの開始ビットを示しています。これにより、リンクローカルアドレスは「fe80:0000:0000:0000:」で始まります(ただし、これらのゼロの多くは二重コロンになります)。それらのアドレスが「fe80:」で始まるという事実は、RFC 4291セクション2.4でも説明されています。
リモートシステム(たとえば、「2607:f8b0:400a:802」)をpingしようとする場合、一般的なプロセスは通常、アドレスが含まれるネットワークまたはサブネットを見つけ出すことです。アドレスの先頭。次に、これらのビットを使用して、トラフィックのルーティング方法を決定します。
ただし、そのプロセスはIPv6リンクローカルアドレスでは機能しません。これは、すべての単一の(動作中の、アクティブな)ネットワークインターフェイスが、サブネットプレフィックス/サイズ「/」を使用して、サブネット上で「fe80:」 64 "。ラップトップを使用している場合は、イーサネットカードとWi-Fiアダプターの両方にそのようなIPv6アドレスが割り当てられていることがわかります。
これで、pingをfe80 :: 2に送信するときに、コンピューターからそのパケットを適切なネットワークカードに送信する必要があります。有線ネットワークに接続されているプリンターがある場合、Wi-Fiカードからトラフィックを送信する必要はありません。その場合、トラフィックがプリンターに到達しないネットワークパス/ルートを使用します。また、Wi-Fiカードを使用してワイヤレスデバイスと通信しようとしている場合、トラフィックがイーサネットカードから出ることは望ましくありません。
解決策は、トラフィックに使用するネットワークデバイスを指定することです。したがって、それがネットワーク識別子の目的です。